diff --git a/AzurePowershell.Test.targets b/AzurePowershell.Test.targets index efe88235c84e..a65a3a1882e7 100644 --- a/AzurePowershell.Test.targets +++ b/AzurePowershell.Test.targets @@ -21,6 +21,7 @@ .\src\ServiceManagement\Sql\Commands.SqlDatabase.Test\bin\Debug\Microsoft.WindowsAzure.Commands.SqlDatabase.Test.dll .\src\ServiceManagement\HDInsight\Commands.HDInsight.Test\bin\Debug\Microsoft.WindowsAzure.Commands.HDInsight.Test.dll .\src\ServiceManagement\Storage\Commands.Storage.Test\bin\Debug\Microsoft.WindowsAzure.Commands.Storage.Test.dll + .\src\ResourceManager\KeyVault\Commands.KeyVault.Test\bin\Debug\Microsoft.Azure.Commands.KeyVault.Test.dll "!Functional&!Scenario&!AzureRTScenario&!Sequential&!PIRTest&!Preview&!ADDomain" All "OneSDK&CIT" @@ -137,6 +138,13 @@ + + + + + + diff --git a/ChangeLog.txt b/ChangeLog.txt index 8b85214022f8..5283a4ee0381 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,3 +1,17 @@ +2015.01.08 version 0.8.13 +* Key Vault Service - new cmdlets in AzureResourceManager mode: + * Keys: + * Add-AzureKeyVaultKey + * Get-AzureKeyVaultKey + * Set-AzureKeyVaultKey + * Backup-AzureKeyVaultKey + * Restore-AzureKeyVaultKey + * Remove-AzureKeyVaultKey + * Secrets: + * Get-AzureKeyVaultSecret + * Set-AzureKeyVaultSecret + * Remove-AzureKeyVaultSecret + 2014.12.12 version 0.8.12 * StreamAnalytics * New cmdlets in AzureResourceManager mode diff --git a/build.proj b/build.proj index 8f11595dc782..2f3cf1d77e9b 100644 --- a/build.proj +++ b/build.proj @@ -195,7 +195,7 @@ - + diff --git a/setup/azurecmd.wxs b/setup/azurecmd.wxs index aeb953834b9e..6c8904626739 100644 --- a/setup/azurecmd.wxs +++ b/setup/azurecmd.wxs @@ -1,11 +1,11 @@  - + - + diff --git a/setup/azurecmdfiles.wxi b/setup/azurecmdfiles.wxi index 4c5401b9c16c..bb751da17f58 100644 --- a/setup/azurecmdfiles.wxi +++ b/setup/azurecmdfiles.wxi @@ -17,6 +17,9 @@ + + + @@ -70,6 +73,9 @@ + + + @@ -149,6 +155,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -159,6 +230,9 @@ + + + @@ -224,6 +298,15 @@ + + + + + + + + + @@ -266,6 +349,9 @@ + + + @@ -352,6 +438,9 @@ + + + @@ -420,6 +509,9 @@ + + + @@ -497,6 +589,9 @@ + + + @@ -584,6 +679,9 @@ + + + @@ -649,6 +747,12 @@ + + + + + + @@ -682,6 +786,9 @@ + + + @@ -843,6 +950,9 @@ + + + @@ -896,6 +1006,9 @@ + + + @@ -997,6 +1110,12 @@ + + + + + + @@ -1030,6 +1149,9 @@ + + + @@ -1170,6 +1292,9 @@ + + + @@ -1238,6 +1363,9 @@ + + + @@ -1300,6 +1428,12 @@ + + + + + + @@ -1327,6 +1461,9 @@ + + + @@ -1767,6 +1904,12 @@ + + + + + + @@ -1794,6 +1937,9 @@ + + + @@ -1949,6 +2095,9 @@ + + + @@ -2029,6 +2178,9 @@ + + + @@ -2103,6 +2255,7 @@ + @@ -2120,6 +2273,7 @@ + @@ -2146,9 +2300,31 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -2170,6 +2346,9 @@ + + + @@ -2184,6 +2363,7 @@ + @@ -2212,6 +2392,7 @@ + @@ -2234,6 +2415,7 @@ + @@ -2259,6 +2441,7 @@ + @@ -2286,6 +2469,7 @@ + @@ -2307,6 +2491,8 @@ + + @@ -2318,6 +2504,7 @@ + @@ -2371,6 +2558,7 @@ + @@ -2388,6 +2576,7 @@ + @@ -2421,6 +2610,8 @@ + + @@ -2432,6 +2623,7 @@ + @@ -2478,6 +2670,7 @@ + @@ -2500,6 +2693,7 @@ + @@ -2520,6 +2714,8 @@ + + @@ -2529,6 +2725,7 @@ + @@ -2661,6 +2858,8 @@ + + @@ -2670,6 +2869,7 @@ + @@ -2721,6 +2921,7 @@ + @@ -2747,6 +2948,7 @@ + diff --git a/src/AzurePowershell.sln b/src/AzurePowershell.sln index 3f7fd0758a94..8b680bdf26d1 100644 --- a/src/AzurePowershell.sln +++ b/src/AzurePowershell.sln @@ -143,6 +143,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Network", "Service EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Network.Test", "ServiceManagement\Network\Commands.Network.Test\Commands.Network.Test.csproj", "{FDB897BD-FCB4-44A1-8D66-AC99F22EC737}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.KeyVault", "ResourceManager\KeyVault\Commands.KeyVault\Commands.KeyVault.csproj", "{9FFC40CC-A341-4D0C-A25D-DC6B78EF6C94}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.KeyVault.Test", "ResourceManager\KeyVault\Commands.KeyVault.Test\Commands.KeyVault.Test.csproj", "{080B0477-7E52-4455-90AB-23BD13D1B1CE}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.RecoveryServices", "ServiceManagement\RecoveryServices\Commands.RecoveryServices\Commands.RecoveryServices.csproj", "{98B10548-DF97-4FB1-8D82-2A12945D4F21}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.RecoveryServices.Test", "ServiceManagement\RecoveryServices\Commands.RecoveryServices.Test\Commands.RecoveryServices.Test.csproj", "{A415F75B-EB6A-49A6-934E-5BA71B83D6EB}" @@ -347,6 +351,10 @@ Global {FDB897BD-FCB4-44A1-8D66-AC99F22EC737}.Debug|Any CPU.Build.0 = Debug|Any CPU {FDB897BD-FCB4-44A1-8D66-AC99F22EC737}.Release|Any CPU.ActiveCfg = Release|Any CPU {FDB897BD-FCB4-44A1-8D66-AC99F22EC737}.Release|Any CPU.Build.0 = Release|Any CPU + {9FFC40CC-A341-4D0C-A25D-DC6B78EF6C94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9FFC40CC-A341-4D0C-A25D-DC6B78EF6C94}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9FFC40CC-A341-4D0C-A25D-DC6B78EF6C94}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9FFC40CC-A341-4D0C-A25D-DC6B78EF6C94}.Release|Any CPU.Build.0 = Release|Any CPU {98B10548-DF97-4FB1-8D82-2A12945D4F21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {98B10548-DF97-4FB1-8D82-2A12945D4F21}.Debug|Any CPU.Build.0 = Debug|Any CPU {98B10548-DF97-4FB1-8D82-2A12945D4F21}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -355,6 +363,10 @@ Global {A415F75B-EB6A-49A6-934E-5BA71B83D6EB}.Debug|Any CPU.Build.0 = Debug|Any CPU {A415F75B-EB6A-49A6-934E-5BA71B83D6EB}.Release|Any CPU.ActiveCfg = Release|Any CPU {A415F75B-EB6A-49A6-934E-5BA71B83D6EB}.Release|Any CPU.Build.0 = Release|Any CPU + {080B0477-7E52-4455-90AB-23BD13D1B1CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {080B0477-7E52-4455-90AB-23BD13D1B1CE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {080B0477-7E52-4455-90AB-23BD13D1B1CE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {080B0477-7E52-4455-90AB-23BD13D1B1CE}.Release|Any CPU.Build.0 = Release|Any CPU {F49A314A-A235-47D3-A654-1EC19ACA366C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F49A314A-A235-47D3-A654-1EC19ACA366C}.Debug|Any CPU.Build.0 = Debug|Any CPU {F49A314A-A235-47D3-A654-1EC19ACA366C}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -396,6 +408,7 @@ Global {F4ABAD68-64A5-4B23-B09C-42559A7524DE} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} {FDB897BD-FCB4-44A1-8D66-AC99F22EC737} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} {A415F75B-EB6A-49A6-934E-5BA71B83D6EB} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} + {080B0477-7E52-4455-90AB-23BD13D1B1CE} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} {7E6683BE-ECFF-4709-89EB-1325E9E70512} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} EndGlobalSection EndGlobal diff --git a/src/Common/Azure.Common.Extensions/Common.Extensions.csproj b/src/Common/Azure.Common.Extensions/Common.Extensions.csproj index 65358fb47311..b3bb3472a230 100644 --- a/src/Common/Azure.Common.Extensions/Common.Extensions.csproj +++ b/src/Common/Azure.Common.Extensions/Common.Extensions.csproj @@ -189,6 +189,7 @@ + Designer diff --git a/src/Common/Azure.Common.Extensions/Common/RequiredResourceLookup.cs b/src/Common/Azure.Common.Extensions/Common/RequiredResourceLookup.cs index 21cf5093a03f..4219493b6d8d 100644 --- a/src/Common/Azure.Common.Extensions/Common/RequiredResourceLookup.cs +++ b/src/Common/Azure.Common.Extensions/Common/RequiredResourceLookup.cs @@ -52,7 +52,8 @@ internal static IList RequiredProvidersForResourceManager() where T : "microsoft.visualstudio", "microsoft.insights", "successbricks.cleardb", - "microsoft.cache" }; + "microsoft.cache", + "Microsoft.KeyVault"}; } if (typeof(T).FullName.EndsWith("BatchManagementClient")) { diff --git a/src/Common/Azure.Common.Extensions/Factories/AuthenticationFactory.cs b/src/Common/Azure.Common.Extensions/Factories/AuthenticationFactory.cs index f280a0d4e4a1..b50f7dd74574 100644 --- a/src/Common/Azure.Common.Extensions/Factories/AuthenticationFactory.cs +++ b/src/Common/Azure.Common.Extensions/Factories/AuthenticationFactory.cs @@ -32,14 +32,15 @@ public AuthenticationFactory() } public ITokenProvider TokenProvider { get; set; } + - public IAccessToken Authenticate(AzureAccount account, AzureEnvironment environment, string tenant, SecureString password, ShowDialog promptBehavior) + public IAccessToken Authenticate(AzureAccount account, AzureEnvironment environment, string tenant, SecureString password, ShowDialog promptBehavior, + AzureEnvironment.Endpoint resourceId = AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId) { - var token = TokenProvider.GetAccessToken(GetAdalConfiguration(environment, tenant), promptBehavior, account.Id, password, account.Type); + var token = TokenProvider.GetAccessToken(GetAdalConfiguration(environment, tenant, resourceId), promptBehavior, account.Id, password, account.Type); account.Id = token.UserId; return token; } - public SubscriptionCloudCredentials GetSubscriptionCloudCredentials(AzureContext context) { if (context.Subscription == null) @@ -77,20 +78,21 @@ public SubscriptionCloudCredentials GetSubscriptionCloudCredentials(AzureContext throw new ArgumentException(Resources.InvalidSubscriptionState, ex); } } - - private AdalConfiguration GetAdalConfiguration(AzureEnvironment environment, string tenantId) + + + private AdalConfiguration GetAdalConfiguration(AzureEnvironment environment, string tenantId, + AzureEnvironment.Endpoint resourceId) { if (environment == null) { throw new ArgumentNullException("environment"); } var adEndpoint = environment.Endpoints[AzureEnvironment.Endpoint.ActiveDirectory]; - var adResourceId = environment.Endpoints[AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId]; - + return new AdalConfiguration { AdEndpoint = adEndpoint, - ResourceClientUri = adResourceId, + ResourceClientUri = environment.Endpoints[resourceId], AdDomain = tenantId }; } diff --git a/src/Common/Azure.Common.Extensions/Interfaces/IAuthenticationFactory.cs b/src/Common/Azure.Common.Extensions/Interfaces/IAuthenticationFactory.cs index 6f9b40579783..77740ca0debe 100644 --- a/src/Common/Azure.Common.Extensions/Interfaces/IAuthenticationFactory.cs +++ b/src/Common/Azure.Common.Extensions/Interfaces/IAuthenticationFactory.cs @@ -29,8 +29,9 @@ public interface IAuthenticationFactory /// /// /// - /// - IAccessToken Authenticate(AzureAccount account, AzureEnvironment environment, string tenant, SecureString password, ShowDialog promptBehavior); + /// + IAccessToken Authenticate(AzureAccount account, AzureEnvironment environment, string tenant, SecureString password, ShowDialog promptBehavior, + AzureEnvironment.Endpoint resourceId = AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId); SubscriptionCloudCredentials GetSubscriptionCloudCredentials(AzureContext context); } diff --git a/src/Common/Azure.Common.Extensions/Models/AzureEnvironment.Methods.cs b/src/Common/Azure.Common.Extensions/Models/AzureEnvironment.Methods.cs index ac0aafbb806f..a9934d8fd173 100644 --- a/src/Common/Azure.Common.Extensions/Models/AzureEnvironment.Methods.cs +++ b/src/Common/Azure.Common.Extensions/Models/AzureEnvironment.Methods.cs @@ -96,6 +96,8 @@ private string StorageFileEndpointFormat() { AzureEnvironment.Endpoint.SqlDatabaseDnsSuffix, AzureEnvironmentConstants.AzureSqlDatabaseDnsSuffix }, { AzureEnvironment.Endpoint.Graph, AzureEnvironmentConstants.AzureGraphEndpoint }, { AzureEnvironment.Endpoint.TrafficManagerDnsSuffix, AzureEnvironmentConstants.AzureTrafficManagerDnsSuffix }, + { AzureEnvironment.Endpoint.AzureKeyVaultDnsSuffix, AzureEnvironmentConstants.AzureKeyVaultDnsSuffix }, + { AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId, AzureEnvironmentConstants.AzureKeyVaultServiceEndpointResourceId }, } } }, @@ -254,7 +256,7 @@ public string GetPublishSettingsFileUrlWithRealm(string realm = null) public enum Endpoint { - ActiveDirectoryServiceEndpointResourceId, + ActiveDirectoryServiceEndpointResourceId, AdTenant, @@ -277,6 +279,10 @@ public enum Endpoint Graph, TrafficManagerDnsSuffix, + + AzureKeyVaultDnsSuffix, + + AzureKeyVaultServiceEndpointResourceId, } } @@ -322,5 +328,9 @@ public static class AzureEnvironmentConstants public const string AzureTrafficManagerDnsSuffix = "trafficmanager.net"; public const string ChinaTrafficManagerDnsSuffix = "trafficmanager.cn"; + + public const string AzureKeyVaultDnsSuffix = "vault.azure.net"; + + public const string AzureKeyVaultServiceEndpointResourceId = "https://vault.azure.net"; } } diff --git a/src/Common/Commands.Common.Test/Common/ProfileClientTests.cs b/src/Common/Commands.Common.Test/Common/ProfileClientTests.cs index 271051bc6811..334469eefacf 100644 --- a/src/Common/Commands.Common.Test/Common/ProfileClientTests.cs +++ b/src/Common/Commands.Common.Test/Common/ProfileClientTests.cs @@ -1424,6 +1424,8 @@ private void SetMockData() { AzureEnvironment.Endpoint.ActiveDirectory, "https://login.windows-ppe.net/" }, { AzureEnvironment.Endpoint.Gallery, "https://current.gallery.azure-test.net" }, { AzureEnvironment.Endpoint.ResourceManager, "https://api-current.resources.windows-int.net/" }, + { AzureEnvironment.Endpoint.AzureKeyVaultDnsSuffix, "vault-int.azure-int.net"}, + { AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId, "https://vault-int.azure-int.net/"} } }; azureAccount = new AzureAccount diff --git a/src/Common/Commands.Common.Test/Common/ProfileCmdltsTests.cs b/src/Common/Commands.Common.Test/Common/ProfileCmdltsTests.cs index 856392d00b8e..b72bb2c66b66 100644 --- a/src/Common/Commands.Common.Test/Common/ProfileCmdltsTests.cs +++ b/src/Common/Commands.Common.Test/Common/ProfileCmdltsTests.cs @@ -736,7 +736,9 @@ private void SetMockData() { AzureEnvironment.Endpoint.AdTenant, "https://login.windows-ppe.net/" }, { AzureEnvironment.Endpoint.ActiveDirectory, "https://login.windows-ppe.net/" }, { AzureEnvironment.Endpoint.Gallery, "https://current.gallery.azure-test.net" }, - { AzureEnvironment.Endpoint.ResourceManager, "https://api-current.resources.windows-int.net/" }, + { AzureEnvironment.Endpoint.ResourceManager, "https://api-current.resources.windows-int.net/" }, + { AzureEnvironment.Endpoint.AzureKeyVaultDnsSuffix, "vault-int.azure-int.net" }, + { AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId, "https://vault-int.azure-int.net/" }, } }; azureAccount = new AzureAccount diff --git a/src/Common/Commands.Common.Test/Mocks/MockCertificateAuthenticationFactory.cs b/src/Common/Commands.Common.Test/Mocks/MockCertificateAuthenticationFactory.cs index e2b68c5b2143..792e281095a5 100644 --- a/src/Common/Commands.Common.Test/Mocks/MockCertificateAuthenticationFactory.cs +++ b/src/Common/Commands.Common.Test/Mocks/MockCertificateAuthenticationFactory.cs @@ -34,7 +34,8 @@ public MockCertificateAuthenticationFactory(string userId, X509Certificate2 cert Certificate = certificate; } - public IAccessToken Authenticate(AzureAccount account, AzureEnvironment environment, string tenant, SecureString password, ShowDialog promptBehavior) + public IAccessToken Authenticate(AzureAccount account, AzureEnvironment environment, string tenant, SecureString password, ShowDialog promptBehavior, + AzureEnvironment.Endpoint resourceId = AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId) { if (account.Id == null) { diff --git a/src/Common/Commands.Common.Test/Mocks/MockTokenAuthenticationFactory.cs b/src/Common/Commands.Common.Test/Mocks/MockTokenAuthenticationFactory.cs index 5675b84696e5..b5925680cf8d 100644 --- a/src/Common/Commands.Common.Test/Mocks/MockTokenAuthenticationFactory.cs +++ b/src/Common/Commands.Common.Test/Mocks/MockTokenAuthenticationFactory.cs @@ -54,7 +54,8 @@ public MockTokenAuthenticationFactory(string userId, string accessToken) }; } - public IAccessToken Authenticate(AzureAccount account, AzureEnvironment environment, string tenant, SecureString password, ShowDialog promptBehavior) + public IAccessToken Authenticate(AzureAccount account, AzureEnvironment environment, string tenant, SecureString password, ShowDialog promptBehavior, + AzureEnvironment.Endpoint resourceId = AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId) { if (account.Id == null) { diff --git a/src/Common/Commands.Common/AzurePowerShell.cs b/src/Common/Commands.Common/AzurePowerShell.cs index b4be4772a6ed..8a83a71d76c5 100644 --- a/src/Common/Commands.Common/AzurePowerShell.cs +++ b/src/Common/Commands.Common/AzurePowerShell.cs @@ -27,9 +27,9 @@ public class AzurePowerShell public const string AssemblyCopyright = "Copyright © Microsoft"; - public const string AssemblyVersion = "0.8.12"; + public const string AssemblyVersion = "0.8.13"; - public const string AssemblyFileVersion = "0.8.12"; + public const string AssemblyFileVersion = "0.8.13"; public const string ProfileFile = "AzureProfile.json"; diff --git a/src/Common/Commands.Common/Common/ManagementConstants.cs b/src/Common/Commands.Common/Common/ManagementConstants.cs new file mode 100644 index 000000000000..0de6c33ad716 --- /dev/null +++ b/src/Common/Commands.Common/Common/ManagementConstants.cs @@ -0,0 +1,127 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Net.Http.Headers; +using Microsoft.WindowsAzure.Commands.Common; + +namespace Microsoft.WindowsAzure.Commands.Utilities.Common +{ + public static class ApiConstants + { + public const string AuthorizationHeaderName = "Authorization"; + + public const string BasicAuthorization = "Basic"; + + public const string UserAgentHeaderName = "User-Agent"; + + public const string UserAgentHeaderValue = "AzurePowershell/v" + AzurePowerShell.AssemblyVersion; + + public static ProductInfoHeaderValue UserAgentValue = new ProductInfoHeaderValue( + "AzurePowershell", + string.Format("v{0}", AzurePowerShell.AssemblyVersion)); + + public const string VSDebuggerCausalityDataHeaderName = "VSDebuggerCausalityData"; + + public const string OperationTrackingIdHeader = "x-ms-request-id"; + + public const string VersionHeaderContentLatest = "2013-08-01"; + + public const string VersionHeaderName = "x-ms-version"; + + } + + public class SDKVersion + { + public const string Version180 = "1.8.0"; + + public const string Version200 = "2.0.0"; + + public const string Version220 = "2.2.0"; + + public const string Version230 = "2.3.0"; + + public const string Version240 = "2.4.0"; + + public const string Version250 = "2.5.0"; + } + + public enum DevEnv + { + Local, + Cloud + } + + public enum RoleType + { + WebRole, + WorkerRole + } + + public enum RuntimeType + { + IISNode, + Node, + PHP, + Cache, + Null + } + + public static class EnvironmentName + { + public const string AzureCloud = "AzureCloud"; + + public const string AzureChinaCloud = "AzureChinaCloud"; + } + + public static class AzureEnvironmentConstants + { + public const string AzureServiceEndpoint = "https://management.core.windows.net/"; + + public const string ChinaServiceEndpoint = "https://management.core.chinacloudapi.cn/"; + + public const string AzureResourceManagerEndpoint = "https://management.azure.com/"; + + public const string GalleryEndpoint = "https://gallery.azure.com/"; + + public const string AzurePublishSettingsFileUrl = "http://go.microsoft.com/fwlink/?LinkID=301775"; + + public const string ChinaPublishSettingsFileUrl = "http://go.microsoft.com/fwlink/?LinkID=301776"; + + public const string AzureManagementPortalUrl = "http://go.microsoft.com/fwlink/?LinkId=254433"; + + public const string ChinaManagementPortalUrl = "http://go.microsoft.com/fwlink/?LinkId=301902"; + + public const string AzureStorageEndpointSuffix = "core.windows.net"; + + public const string ChinaStorageEndpointSuffix = "core.chinacloudapi.cn"; + + public const string AzureSqlDatabaseDnsSuffix = ".database.windows.net"; + + public const string ChinaSqlDatabaseDnsSuffix = ".database.chinacloudapi.cn"; + + public const string AzureActiveDirectoryEndpoint = "https://login.windows.net/"; + + public const string ChinaActiveDirectoryEndpoint = "https://login.chinacloudapi.cn/"; + + public const string AzureGraphEndpoint = "https://graph.windows.net/"; + + public const string AzureTrafficManagerDnsSuffix = "trafficmanager.net"; + + public const string ChinaTrafficManagerDnsSuffix = "trafficmanager.cn"; + + public const string AzureKeyVaultDnsSuffix = "vault.azure.net"; + + public const string AzureKeyVaultServiceEndpointResourceId = "https://vault.azure.net"; + } +} \ No newline at end of file diff --git a/src/Common/Commands.Profile/Environment/AddAzureEnvironment.cs b/src/Common/Commands.Profile/Environment/AddAzureEnvironment.cs index 63f4218214bd..1af9a1b1ff14 100644 --- a/src/Common/Commands.Profile/Environment/AddAzureEnvironment.cs +++ b/src/Common/Commands.Profile/Environment/AddAzureEnvironment.cs @@ -61,6 +61,14 @@ public class AddAzureEnvironmentCommand : SubscriptionCmdletBase HelpMessage = "The AD Graph Endpoint.")] public string GraphEndpoint { get; set; } + [Parameter(Position = 10, Mandatory = false, ValueFromPipelineByPropertyName = true, + HelpMessage = "Dns suffix of Azure Key Vault service. Example is vault-int.azure-int.net")] + public string AzureKeyVaultDnsSuffix { get; set; } + + [Parameter(Position = 11, Mandatory = false, ValueFromPipelineByPropertyName = true, + HelpMessage = "Resource identifier of Azure Key Vault data service that is the recipient of the requested token.")] + public string AzureKeyVaultServiceEndpointResourceId { get; set; } + public AddAzureEnvironmentCommand() : base(true) { } [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] @@ -76,7 +84,9 @@ public override void ExecuteCmdlet() newEnvironment.Endpoints[AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId] = ActiveDirectoryServiceEndpointResourceId; newEnvironment.Endpoints[AzureEnvironment.Endpoint.Gallery] = GalleryEndpoint; newEnvironment.Endpoints[AzureEnvironment.Endpoint.Graph] = GraphEndpoint; - + newEnvironment.Endpoints[AzureEnvironment.Endpoint.AzureKeyVaultDnsSuffix] = AzureKeyVaultDnsSuffix; + newEnvironment.Endpoints[AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId] = AzureKeyVaultServiceEndpointResourceId; + ProfileClient.AddOrSetEnvironment(newEnvironment); List args = new List { "Name", newEnvironment.Name }; foreach (AzureEnvironment.Endpoint property in Enum.GetValues(typeof(AzureEnvironment.Endpoint))) diff --git a/src/Common/Commands.Profile/Environment/SetAzureEnvironment.cs b/src/Common/Commands.Profile/Environment/SetAzureEnvironment.cs index df8036991d36..f8f7743450fa 100644 --- a/src/Common/Commands.Profile/Environment/SetAzureEnvironment.cs +++ b/src/Common/Commands.Profile/Environment/SetAzureEnvironment.cs @@ -59,6 +59,14 @@ public class SetAzureEnvironmentCommand : SubscriptionCmdletBase HelpMessage = "The AD Graph Endpoint.")] public string GraphEndpoint { get; set; } + [Parameter(Position = 10, Mandatory = false, ValueFromPipelineByPropertyName = true, + HelpMessage = "Dns suffix of Azure Key Vault service. Example is vault-int.azure-int.net")] + public string AzureKeyVaultDnsSuffix { get; set; } + + [Parameter(Position = 11, Mandatory = false, ValueFromPipelineByPropertyName = true, + HelpMessage = "Resource identifier of Azure Key Vault data service that is the recipient of the requested token.")] + public string AzureKeyVaultServiceEndpointResourceId { get; set; } + public SetAzureEnvironmentCommand() : base(true) { } [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] @@ -78,6 +86,8 @@ public override void ExecuteCmdlet() SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId, ActiveDirectoryServiceEndpointResourceId); SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.Gallery, GalleryEndpoint); SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.Graph, GraphEndpoint); + SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.AzureKeyVaultDnsSuffix, AzureKeyVaultDnsSuffix); + SetEndpointIfProvided(newEnvironment, AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId, AzureKeyVaultServiceEndpointResourceId); ProfileClient.AddOrSetEnvironment(newEnvironment); diff --git a/src/Common/Commands.Profile/Models/PsAzureSubscription.cs b/src/Common/Commands.Profile/Models/PsAzureSubscription.cs index 3c2d72096935..9a549b133113 100644 --- a/src/Common/Commands.Profile/Models/PsAzureSubscription.cs +++ b/src/Common/Commands.Profile/Models/PsAzureSubscription.cs @@ -27,5 +27,6 @@ public class PSAzureSubscription public bool IsDefault { get; set; } public bool IsCurrent { get; set; } public string CurrentStorageAccountName { get; set; } + public string TenantId { get; set; } } } diff --git a/src/Common/Commands.Profile/Subscription/GetAzureSubscription.cs b/src/Common/Commands.Profile/Subscription/GetAzureSubscription.cs index ad91a7d22a46..39670163cf34 100644 --- a/src/Common/Commands.Profile/Subscription/GetAzureSubscription.cs +++ b/src/Common/Commands.Profile/Subscription/GetAzureSubscription.cs @@ -150,6 +150,7 @@ private PSAzureSubscription ConstructPsAzureSubscription(AzureSubscription subsc psObject.IsDefault = subscription.IsPropertySet(AzureSubscription.Property.Default); psObject.IsCurrent = AzureSession.CurrentContext.Subscription != null && AzureSession.CurrentContext.Subscription.Id == subscription.Id; psObject.CurrentStorageAccountName = subscription.GetProperty(AzureSubscription.Property.StorageAccount); + psObject.TenantId = subscription.GetPropertyAsArray(AzureSubscription.Property.Tenants).FirstOrDefault(); return psObject; } diff --git a/src/Common/Commands.ScenarioTests.Common/Constants.cs b/src/Common/Commands.ScenarioTests.Common/Constants.cs index 8bbf163f0c4f..3dfea33dcccf 100644 --- a/src/Common/Commands.ScenarioTests.Common/Constants.cs +++ b/src/Common/Commands.ScenarioTests.Common/Constants.cs @@ -50,6 +50,8 @@ public class Category public const string Scheduler = "Scheduler"; + public const string KeyVault = "KeyVault"; + public const string Network = "Network"; // Owners diff --git a/src/ResourceManager.sln b/src/ResourceManager.sln index aca639123545..e314673ade56 100644 --- a/src/ResourceManager.sln +++ b/src/ResourceManager.sln @@ -37,6 +37,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.RedisCache", "Reso EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.RedisCache.Test", "ResourceManager\RedisCache\Commands.RedisCache.Test\Commands.RedisCache.Test.csproj", "{4AE5705F-62CF-461D-B72E-DD9DCD9B3609}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.KeyVault", "ResourceManager\KeyVault\Commands.KeyVault\Commands.KeyVault.csproj", "{9FFC40CC-A341-4D0C-A25D-DC6B78EF6C94}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.KeyVault.Test", "ResourceManager\KeyVault\Commands.KeyVault.Test\Commands.KeyVault.Test.csproj", "{080B0477-7E52-4455-90AB-23BD13D1B1CE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.Sql.Test", "ResourceManager\Sql\Commands.Sql.Test\Commands.Sql.Test.csproj", "{56ED8C97-53B9-4DF6-ACB5-7E6800105BF8}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.StreamAnalytics", "ResourceManager\StreamAnalytics\Commands.StreamAnalytics\Commands.StreamAnalytics.csproj", "{F49A314A-A235-47D3-A654-1EC19ACA366C}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.StreamAnalytics.Test", "ResourceManager\StreamAnalytics\Commands.StreamAnalytics.Test\Commands.StreamAnalytics.Test.csproj", "{7E6683BE-ECFF-4709-89EB-1325E9E70512}" @@ -99,6 +105,18 @@ Global {4AE5705F-62CF-461D-B72E-DD9DCD9B3609}.Debug|Any CPU.Build.0 = Debug|Any CPU {4AE5705F-62CF-461D-B72E-DD9DCD9B3609}.Release|Any CPU.ActiveCfg = Release|Any CPU {4AE5705F-62CF-461D-B72E-DD9DCD9B3609}.Release|Any CPU.Build.0 = Release|Any CPU + {9FFC40CC-A341-4D0C-A25D-DC6B78EF6C94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9FFC40CC-A341-4D0C-A25D-DC6B78EF6C94}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9FFC40CC-A341-4D0C-A25D-DC6B78EF6C94}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9FFC40CC-A341-4D0C-A25D-DC6B78EF6C94}.Release|Any CPU.Build.0 = Release|Any CPU + {080B0477-7E52-4455-90AB-23BD13D1B1CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {080B0477-7E52-4455-90AB-23BD13D1B1CE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {080B0477-7E52-4455-90AB-23BD13D1B1CE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {080B0477-7E52-4455-90AB-23BD13D1B1CE}.Release|Any CPU.Build.0 = Release|Any CPU + {56ED8C97-53B9-4DF6-ACB5-7E6800105BF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {56ED8C97-53B9-4DF6-ACB5-7E6800105BF8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {56ED8C97-53B9-4DF6-ACB5-7E6800105BF8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {56ED8C97-53B9-4DF6-ACB5-7E6800105BF8}.Release|Any CPU.Build.0 = Release|Any CPU {F49A314A-A235-47D3-A654-1EC19ACA366C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F49A314A-A235-47D3-A654-1EC19ACA366C}.Debug|Any CPU.Build.0 = Debug|Any CPU {F49A314A-A235-47D3-A654-1EC19ACA366C}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -117,6 +135,8 @@ Global {C1BDA476-A5CC-4394-914D-48B0EC31A710} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} {D4EDAD6F-6A1D-4295-9A88-CD3F69EAD42B} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} {4AE5705F-62CF-461D-B72E-DD9DCD9B3609} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} + {080B0477-7E52-4455-90AB-23BD13D1B1CE} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} + {56ED8C97-53B9-4DF6-ACB5-7E6800105BF8} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} {7E6683BE-ECFF-4709-89EB-1325E9E70512} = {95C16AED-FD57-42A0-86C3-2CF4300A4817} EndGlobalSection EndGlobal diff --git a/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/DA_CuratedWikiData.json b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/DA_CuratedWikiData.json new file mode 100644 index 000000000000..e57174182c58 --- /dev/null +++ b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/DA_CuratedWikiData.json @@ -0,0 +1,27 @@ +{ + name: "DA_CuratedWikiData", + properties: + { + structure: + [ + { name: "slicetimestamp", position: 0, type: "String"}, + { name: "projectname", position: 1, type: "String"}, + { name: "pageviews", position: 2, type: "Decimal"} + ], + location: + { + type: "AzureBlobLocation", + folderPath: "wikidatagateway/wikisampledataout/{Slice}", + partitionedBy: + [ + { name: "Slice", value: { type: "DateTime", date: "SliceStart", format: "yyyyMMddHH" } }, + ], + linkedServiceName: "LinkedService-CuratedWikiData" + }, + availability: + { + frequency: "Hour", + interval: 1 + } + } +} \ No newline at end of file diff --git a/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/DA_WikiAggregatedData.json b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/DA_WikiAggregatedData.json new file mode 100644 index 000000000000..1143fbd445ef --- /dev/null +++ b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/DA_WikiAggregatedData.json @@ -0,0 +1,30 @@ +{ + name: "DA_WikiAggregatedData", + properties: + { + structure: + [ + { name: "slicetimestamp", position: 0, type: "String" }, + { name: "projectname", position: 1, type: "String" }, + { name: "hits", position: 2, type: "Decimal" } + ], + location: + { + type: "AzureSqlTableLocation", + tableName: "wikiaggregateddata", + linkedServiceName: "LinkedService-WikiAggregatedData" + }, + availability: + { + frequency: "Hour", + interval: 1 + }, + policy: + { + validation: + { + minimumRows: 10 + } + } + } +} \ No newline at end of file diff --git a/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/DA_WikipediaClickEvents.json b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/DA_WikipediaClickEvents.json new file mode 100644 index 000000000000..c65c1050c037 --- /dev/null +++ b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/DA_WikipediaClickEvents.json @@ -0,0 +1,29 @@ +{ + name: "DA_WikipediaClickEvents", + properties: + { + location: + { + type: "AzureBlobLocation", + folderPath: "wikidatagateway/wikisampledatain/", + linkedServiceName: "LinkedService-WikipediaClickEvents" + }, + availability: { + frequency: "Hour", + interval: 1, + waitOnExternal: + { + retryInterval: "00:01:00", + retryTimeout: "00:10:00", + maximumRetry: 3 + } + }, + policy: + { + validation: + { + minimumSizeMB: 1.0 + } + } + } +} \ No newline at end of file diff --git a/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/DP_Wikisamplev2json.json b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/DP_Wikisamplev2json.json new file mode 100644 index 000000000000..2cc8fc353b5a --- /dev/null +++ b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/DP_Wikisamplev2json.json @@ -0,0 +1,57 @@ +{ + name: "DP_WikipediaSamplePipeline", + properties: + { + description : "DP Wikipedia Sample Pipelines", + activities: + [ + { + name: "WikiHiveActivity", + inputs: [ {name: "DA_WikipediaClickEvents"} ], + outputs: [ {name: "DA_CuratedWikiData"} ], + linkedServiceName: "HDILinkedService", + type: "HDInsightActivity", + transformation: + { + type: "Hive", + script: "$$Text.Format('DROP TABLE IF EXISTS values; CREATE EXTERNAL TABLE values (projectname string, title string, pageviews string, bytestransfer string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\' \\' LINES TERMINATED BY \\'10\\' STORED AS TEXTFILE LOCATION \\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledatain\\'; DROP TABLE IF EXISTS stats; CREATE EXTERNAL TABLE stats (slicetimestamp string, projectname string, pageviews string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\',\\' LINES TERMINATED BY \\'10\\' STORED AS TEXTFILE LOCATION \\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledataout/{0:yyyyMMddHH}\\'; INSERT OVERWRITE TABLE Stats SELECT slicetimestamp, projectname, sum(pageviews) FROM (SELECT \\'2014/02/25\\' AS slicetimestamp, CASE WHEN size(split(projectname, \\'[.]\\'))=1 THEN \\'wikipedia\\' ELSE CASE split(projectname, \\'[.]\\')[1] WHEN \\'b\\' THEN \\'wikibooks\\' WHEN \\'d\\' THEN \\'wiktionary\\' WHEN \\'m\\' THEN \\'wikimedia\\' WHEN \\'mv\\' THEN \\'wikipedia mobile\\' WHEN \\'n\\' THEN \\'wikinews\\' WHEN \\'q\\' THEN \\'wikiquote\\' WHEN \\'s\\' THEN \\'wikisource\\' WHEN \\'v\\' THEN \\'wikiversity\\' WHEN \\'w\\' THEN \\'mediawiki\\' ELSE \\'n/a\\' END END AS projectname, pageviews FROM values) A GROUP BY slicetimestamp, projectname;', SliceStart)" + }, + policy: + { + concurrency: 1, + executionPriorityOrder: "NewestFirst", + retry: 2, + timeout: "01:00:00" + } + }, + { + name: "BlobToSqlCopyActivity", + inputs: [ {name: "DA_CuratedWikiData"} ], + outputs: [ {name: "DA_WikiAggregatedData"} ], + linkedServiceName: "HDILinkedService", + type: "CopyActivity", + transformation: + { + source: + { + type: "BlobSource", + blobColumnSeparators: "," + }, + sink: + { + type: "SqlSink", + writeBatchSize: 1000000, + writeBatchTimeout: "01:00:00" + } + }, + policy: + { + concurrency: 1, + executionPriorityOrder: "NewestFirst", + retry: 2, + timeout: "01:00:00" + } + } + ] + } +} \ No newline at end of file diff --git a/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/LinkedService_CuratedWikiData.json b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/LinkedService_CuratedWikiData.json new file mode 100644 index 000000000000..6fe323600b4b --- /dev/null +++ b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/LinkedService_CuratedWikiData.json @@ -0,0 +1,8 @@ +{ + name: "LinkedService-CuratedWikiData", + properties: + { + type: "AzureStorageLinkedService", + connectionString: "DefaultEndpointsProtocol=https;AccountName=myaccountname;AccountKey=myaccountkey" + } +} \ No newline at end of file diff --git a/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/LinkedService_HDIBYOC.json b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/LinkedService_HDIBYOC.json new file mode 100644 index 000000000000..9478092966f4 --- /dev/null +++ b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/LinkedService_HDIBYOC.json @@ -0,0 +1,11 @@ +{ + "name": "HDILinkedService", + "properties": + { + "type": "HDInsightBYOCLinkedService", + "clusterUri": "https://myhadoopcluster.azurehdinsight.net/", + "userName": "admin", + "password": "mypassword", + "linkedServiceName": "LinkedService-CuratedWikiData" + } +} \ No newline at end of file diff --git a/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/LinkedService_WikiAggregatedData.json b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/LinkedService_WikiAggregatedData.json new file mode 100644 index 000000000000..c5b95efc0e81 --- /dev/null +++ b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/LinkedService_WikiAggregatedData.json @@ -0,0 +1,8 @@ +{ + name: "LinkedService-WikiAggregatedData", + properties: + { + type: "AzureSqlLinkedService", + connectionString: "Server=tcp:mytest.database.windows.net,1499;Database=wikitest;User ID=myaccount;Password=somepassword;Trusted_Connection=False;Encrypt=True;Connection Timeout=30" + } +} \ No newline at end of file diff --git a/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/LinkedService_WikipediaClickEvents.json b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/LinkedService_WikipediaClickEvents.json new file mode 100644 index 000000000000..1efc5a89dace --- /dev/null +++ b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Resources/WikiSamplePipeline/LinkedService_WikipediaClickEvents.json @@ -0,0 +1,8 @@ +{ + name: "LinkedService-WikipediaClickEvents", + properties: + { + type: "AzureStorageLinkedService", + connectionString: "DefaultEndpointsProtocol=https;AccountName=myaccountname;AccountKey=myaccountkey" + } +} \ No newline at end of file diff --git a/src/ResourceManager/DataFactories/Commands.DataFactories.Test/SessionRecords/Microsoft.Azure.Commands.DataFactories.Test.PipelineTests/TestWikipediaSamplePipeline.json b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/SessionRecords/Microsoft.Azure.Commands.DataFactories.Test.PipelineTests/TestWikipediaSamplePipeline.json new file mode 100644 index 000000000000..b75992bb66b3 --- /dev/null +++ b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/SessionRecords/Microsoft.Azure.Commands.DataFactories.Test.PipelineTests/TestWikipediaSamplePipeline.json @@ -0,0 +1,3466 @@ +{ + "Entries": [ + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers?&api-version=2014-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Byb3ZpZGVycz8mYXBpLXZlcnNpb249MjAxNC0wNC0wMS1wcmV2aWV3", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0" + ] + }, + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.DataFactory\",\r\n \"namespace\": \"Microsoft.DataFactory\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"dataFactories\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"adfgated3\",\r\n \"2014-10-01-preview\",\r\n \"2014-09-01-preview\",\r\n \"2014-08-01-preview\",\r\n \"2014-07-01-preview\",\r\n \"2014-05-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registering\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/biztalkservices\",\r\n \"namespace\": \"biztalkservices\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"biztalk\",\r\n \"locations\": [\r\n \"\",\r\n \"Central US\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/mdp\",\r\n \"namespace\": \"mdp\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"environments\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.ADHybridHealthService\",\r\n \"namespace\": \"Microsoft.ADHybridHealthService\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"services\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.ApiManagement\",\r\n \"namespace\": \"Microsoft.ApiManagement\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"service\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\",\r\n \"West US\",\r\n \"North Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Southeast Asia\",\r\n \"East Asia\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-02-14\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"validateServiceName\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-02-14\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.BackupVaultRPNew\",\r\n \"namespace\": \"Microsoft.BackupVaultRPNew\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"BackupVaultNew\",\r\n \"locations\": [\r\n \"Southeast Asia\",\r\n \"East US\",\r\n \"West Europe\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Batch\",\r\n \"namespace\": \"Microsoft.Batch\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"batchAccounts\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-05-01-privatepreview\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.BizTalkServices\",\r\n \"namespace\": \"Microsoft.BizTalkServices\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"BizTalk\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"East US\",\r\n \"West Europe\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Cache\",\r\n \"namespace\": \"Microsoft.Cache\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"Redis\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"Central US\",\r\n \"West Europe\",\r\n \"West US\",\r\n \"East US 2\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\",\r\n \"Southeast Asia\",\r\n \"East Asia\",\r\n \"North Europe\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkNameAvailability\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"Redis/metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"Redis/metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.ClassicCompute\",\r\n \"namespace\": \"Microsoft.ClassicCompute\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"domainNames\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"virtualMachines\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"capabilities\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"quotas\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"virtualMachines/diagnosticSettings\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"virtualMachines/metricDefinitions\",\r\n \"locations\": [\r\n \"West US\",\r\n \"North Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"virtualMachines/metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.ClassicNetwork\",\r\n \"namespace\": \"Microsoft.ClassicNetwork\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"virtualNetworks\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-01-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"quotas\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"reservedIps\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-01-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.ClassicStorage\",\r\n \"namespace\": \"Microsoft.ClassicStorage\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"storageAccounts\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"storageAccounts/services/metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"storageAccounts/services/metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"storageAccounts/metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"storageAccounts/metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkStorageAccountAvailability\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"storageAccounts/services\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"North Central US\",\r\n \"West US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"quotas\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Compute\",\r\n \"namespace\": \"Microsoft.Compute\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"virtualMachines\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"virtualMachines/extensions\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/operations\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.DataWarehouse\",\r\n \"namespace\": \"Microsoft.DataWarehouse\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"datawarehouses\",\r\n \"locations\": [\r\n \"\",\r\n \"Central US\",\r\n \"East US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-02-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.DocumentDB\",\r\n \"namespace\": \"Microsoft.DocumentDB\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"databaseAccounts\",\r\n \"locations\": [\r\n \"East US\",\r\n \"West US\",\r\n \"North Europe\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-08-21\",\r\n \"2014-07-10\",\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.DWS\",\r\n \"namespace\": \"Microsoft.DWS\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"databases\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Features\",\r\n \"namespace\": \"Microsoft.Features\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"features\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-08-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"providers\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-08-01-preview\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/microsoft.insights\",\r\n \"namespace\": \"microsoft.insights\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"components\",\r\n \"locations\": [\r\n \"\",\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-08-01\",\r\n \"2014-04-01\",\r\n \"2014-04\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"webtests\",\r\n \"locations\": [\r\n \"\",\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-08-01\",\r\n \"2014-04-01\",\r\n \"2014-04\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"alertrules\",\r\n \"locations\": [\r\n \"East US\",\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\",\r\n \"2014-04\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"autoscalesettings\",\r\n \"locations\": [\r\n \"East US\",\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\",\r\n \"2014-04\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"eventtypes\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\",\r\n \"2014-04\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"metricDefinitionNamespace\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\",\r\n \"2014-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"metricNamespace\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\",\r\n \"2014-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/microsoft.insights2\",\r\n \"namespace\": \"microsoft.insights2\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"metricNamespace\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/microsoft.insights3\",\r\n \"namespace\": \"microsoft.insights3\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"eventtypes\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.IntelligentSystems\",\r\n \"namespace\": \"Microsoft.IntelligentSystems\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"accounts\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-28\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.KeyVault\",\r\n \"namespace\": \"Microsoft.KeyVault\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"vaults\",\r\n \"locations\": [\r\n \"East US 2\"\r\n ],\r\n \"apiVersions\": [\r\n \"1.0\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/secrets\",\r\n \"locations\": [\r\n \"East US 2\"\r\n ],\r\n \"apiVersions\": [\r\n \"1.0\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.OperationalInsights\",\r\n \"namespace\": \"Microsoft.OperationalInsights\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"workspaces\",\r\n \"locations\": [\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-11-10\",\r\n \"2014-10-10\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"storageInsightConfigs\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-10-10\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"linkTargets\",\r\n \"locations\": [\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-10-10\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Resources\",\r\n \"namespace\": \"Microsoft.Resources\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"subscriptions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/providers\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/operationresults\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/locations\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"resourceGroups\",\r\n \"locations\": [\r\n \"centralus\",\r\n \"eastasia\",\r\n \"southeastasia\",\r\n \"eastus\",\r\n \"westus\",\r\n \"northcentralus\",\r\n \"southcentralus\",\r\n \"northeurope\",\r\n \"westeurope\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Scheduler\",\r\n \"namespace\": \"Microsoft.Scheduler\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"jobcollections\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"South Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-08-01-preview\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Search\",\r\n \"namespace\": \"Microsoft.Search\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"searchServices\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-07-31-Preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"searchServicesCit\",\r\n \"locations\": [\r\n \"\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-07-31-Preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkServiceNameAvailability\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-07-31-Preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkServiceNameAvailabilityCit\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-07-31-Preview\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Sql\",\r\n \"namespace\": \"Microsoft.Sql\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"servers\",\r\n \"locations\": [\r\n \"North Europe\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/databases\",\r\n \"locations\": [\r\n \"North Europe\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/restorableDroppedDatabases\",\r\n \"locations\": [\r\n \"North Europe\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/recoverableDatabases\",\r\n \"locations\": [\r\n \"North Europe\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/firewallrules\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/usages\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/databaseSecurityPolicies\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/databaseSecurityMetrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/databases/metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"servers/databases/metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"servers/databases/diagnosticSettings\",\r\n \"locations\": [\r\n \"East US\",\r\n \"East US 2\",\r\n \"North Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Brazil South\",\r\n \"West US\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"East Asia\",\r\n \"Southeast Asia\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Storage\",\r\n \"namespace\": \"Microsoft.Storage\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"storageaccounts\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"East US\",\r\n \"West Europe\",\r\n \"West US\",\r\n \"North Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.StreamAnalytics\",\r\n \"namespace\": \"Microsoft.StreamAnalytics\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"streamingjobs\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-10-01-preview\",\r\n \"2014-08-01-preview.0.0\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-10-01-preview\",\r\n \"2014-08-01-preview.0.0\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/quotas\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-10-01-preview\",\r\n \"2014-08-01-preview.0.0\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"streamingjobs/diagnosticSettings\",\r\n \"locations\": [\r\n \"East US\",\r\n \"East US 2\",\r\n \"North Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Brazil South\",\r\n \"West US\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"East Asia\",\r\n \"Southeast Asia\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"streamingjobs/metricDefinitions\",\r\n \"locations\": [\r\n \"East US\",\r\n \"East US 2\",\r\n \"North Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Brazil South\",\r\n \"West US\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"East Asia\",\r\n \"Southeast Asia\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/microsoft.support\",\r\n \"namespace\": \"microsoft.support\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"supporttickets\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"Central US\",\r\n \"West Europe\",\r\n \"North Europe\",\r\n \"West US\",\r\n \"East US\",\r\n \"East US 2\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\",\r\n \"Southeast Asia\",\r\n \"East Asia\"\r\n ],\r\n \"apiVersions\": [\r\n \"1.0-preview\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/microsoft.test\",\r\n \"namespace\": \"microsoft.test\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"tests\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"tests/diagnosticSettings\",\r\n \"locations\": [\r\n \"East US\",\r\n \"North Europe\",\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.VisualStudio\",\r\n \"namespace\": \"Microsoft.VisualStudio\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"account\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"East US\",\r\n \"West US\",\r\n \"Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01-preview\",\r\n \"2014-02-26\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"account/project\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"East US\",\r\n \"West US\",\r\n \"Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01-preview\",\r\n \"2014-02-26\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.VisualStudio.Dev\",\r\n \"namespace\": \"Microsoft.VisualStudio.Dev\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"account\",\r\n \"locations\": [\r\n \"North Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-02-26\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"account/project\",\r\n \"locations\": [\r\n \"North Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-02-26\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.VisualStudio.Test\",\r\n \"namespace\": \"Microsoft.VisualStudio.Test\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"account\",\r\n \"locations\": [\r\n \"North Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-02-26\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"account/project\",\r\n \"locations\": [\r\n \"North Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-02-26\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Web\",\r\n \"namespace\": \"Microsoft.Web\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"publishingUsers\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"sourceControls\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"certificates\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"serverFarms\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"sites\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"runtimes\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"sites/slots\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"sites/metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"sites/metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"serverFarms/metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"serverFarms/metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"georegions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"webquotas\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/MicrosoftSql\",\r\n \"namespace\": \"MicrosoftSql\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"servers\",\r\n \"locations\": [\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2.0\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"servers/databases\",\r\n \"locations\": [\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2.0\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/NewRelic.APM\",\r\n \"namespace\": \"NewRelic.APM\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"accounts\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Southeast Asia\",\r\n \"East Asia\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-10-01\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"accounts/applications\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Southeast Asia\",\r\n \"East Asia\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-10-01\",\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Providers.Test\",\r\n \"namespace\": \"Providers.Test\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"statelessResources\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"statefulResources\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"statefulResources/nestedResources\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"operations\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/sabanwebsites\",\r\n \"namespace\": \"sabanwebsites\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"sites\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"sites/pages\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/StressRP\",\r\n \"namespace\": \"StressRP\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"ResourceType1\",\r\n \"locations\": [\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"ResourceType1/ResourceType2\",\r\n \"locations\": [\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/SuccessBricks.ClearDB\",\r\n \"namespace\": \"SuccessBricks.ClearDB\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"databases\",\r\n \"locations\": [\r\n \"North Europe\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/visualstudiov2\",\r\n \"namespace\": \"visualstudiov2\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"account\",\r\n \"locations\": [\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"02\",\r\n \"01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"account/project\",\r\n \"locations\": [\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n }\r\n ]\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "21352" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799955" + ], + "x-ms-request-id": [ + "4a979788-c315-48ee-b412-bc20e6f1650d" + ], + "x-ms-correlation-request-id": [ + "4a979788-c315-48ee-b412-bc20e6f1650d" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175135Z:4a979788-c315-48ee-b412-bc20e6f1650d" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:35 GMT" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers?&api-version=2014-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Byb3ZpZGVycz8mYXBpLXZlcnNpb249MjAxNC0wNC0wMS1wcmV2aWV3", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0" + ] + }, + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.DataFactory\",\r\n \"namespace\": \"Microsoft.DataFactory\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"dataFactories\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"adfgated3\",\r\n \"2014-10-01-preview\",\r\n \"2014-09-01-preview\",\r\n \"2014-08-01-preview\",\r\n \"2014-07-01-preview\",\r\n \"2014-05-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registering\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/biztalkservices\",\r\n \"namespace\": \"biztalkservices\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"biztalk\",\r\n \"locations\": [\r\n \"\",\r\n \"Central US\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/mdp\",\r\n \"namespace\": \"mdp\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"environments\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.ADHybridHealthService\",\r\n \"namespace\": \"Microsoft.ADHybridHealthService\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"services\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.ApiManagement\",\r\n \"namespace\": \"Microsoft.ApiManagement\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"service\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\",\r\n \"West US\",\r\n \"North Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Southeast Asia\",\r\n \"East Asia\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-02-14\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"validateServiceName\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-02-14\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.BackupVaultRPNew\",\r\n \"namespace\": \"Microsoft.BackupVaultRPNew\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"BackupVaultNew\",\r\n \"locations\": [\r\n \"Southeast Asia\",\r\n \"East US\",\r\n \"West Europe\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Batch\",\r\n \"namespace\": \"Microsoft.Batch\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"batchAccounts\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-05-01-privatepreview\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.BizTalkServices\",\r\n \"namespace\": \"Microsoft.BizTalkServices\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"BizTalk\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"East US\",\r\n \"West Europe\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Cache\",\r\n \"namespace\": \"Microsoft.Cache\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"Redis\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"Central US\",\r\n \"West Europe\",\r\n \"West US\",\r\n \"East US 2\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\",\r\n \"Southeast Asia\",\r\n \"East Asia\",\r\n \"North Europe\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkNameAvailability\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"Redis/metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"Redis/metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.ClassicCompute\",\r\n \"namespace\": \"Microsoft.ClassicCompute\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"domainNames\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"virtualMachines\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"capabilities\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"quotas\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"virtualMachines/diagnosticSettings\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"virtualMachines/metricDefinitions\",\r\n \"locations\": [\r\n \"West US\",\r\n \"North Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"virtualMachines/metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.ClassicNetwork\",\r\n \"namespace\": \"Microsoft.ClassicNetwork\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"virtualNetworks\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-01-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"quotas\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"reservedIps\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-01-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.ClassicStorage\",\r\n \"namespace\": \"Microsoft.ClassicStorage\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"storageAccounts\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"storageAccounts/services/metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"storageAccounts/services/metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"storageAccounts/metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"storageAccounts/metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkStorageAccountAvailability\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"storageAccounts/services\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"North Central US\",\r\n \"West US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"quotas\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Compute\",\r\n \"namespace\": \"Microsoft.Compute\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"virtualMachines\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"virtualMachines/extensions\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/operations\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.DataWarehouse\",\r\n \"namespace\": \"Microsoft.DataWarehouse\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"datawarehouses\",\r\n \"locations\": [\r\n \"\",\r\n \"Central US\",\r\n \"East US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-02-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.DocumentDB\",\r\n \"namespace\": \"Microsoft.DocumentDB\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"databaseAccounts\",\r\n \"locations\": [\r\n \"East US\",\r\n \"West US\",\r\n \"North Europe\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-08-21\",\r\n \"2014-07-10\",\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.DWS\",\r\n \"namespace\": \"Microsoft.DWS\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"databases\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Features\",\r\n \"namespace\": \"Microsoft.Features\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"features\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-08-01-preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"providers\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-08-01-preview\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/microsoft.insights\",\r\n \"namespace\": \"microsoft.insights\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"components\",\r\n \"locations\": [\r\n \"\",\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-08-01\",\r\n \"2014-04-01\",\r\n \"2014-04\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"webtests\",\r\n \"locations\": [\r\n \"\",\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-08-01\",\r\n \"2014-04-01\",\r\n \"2014-04\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"alertrules\",\r\n \"locations\": [\r\n \"East US\",\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\",\r\n \"2014-04\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"autoscalesettings\",\r\n \"locations\": [\r\n \"East US\",\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\",\r\n \"2014-04\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"eventtypes\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\",\r\n \"2014-04\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"metricDefinitionNamespace\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\",\r\n \"2014-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"metricNamespace\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\",\r\n \"2014-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/microsoft.insights2\",\r\n \"namespace\": \"microsoft.insights2\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"metricNamespace\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/microsoft.insights3\",\r\n \"namespace\": \"microsoft.insights3\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"eventtypes\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.IntelligentSystems\",\r\n \"namespace\": \"Microsoft.IntelligentSystems\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"accounts\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-28\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.KeyVault\",\r\n \"namespace\": \"Microsoft.KeyVault\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"vaults\",\r\n \"locations\": [\r\n \"East US 2\"\r\n ],\r\n \"apiVersions\": [\r\n \"1.0\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"vaults/secrets\",\r\n \"locations\": [\r\n \"East US 2\"\r\n ],\r\n \"apiVersions\": [\r\n \"1.0\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.OperationalInsights\",\r\n \"namespace\": \"Microsoft.OperationalInsights\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"workspaces\",\r\n \"locations\": [\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-11-10\",\r\n \"2014-10-10\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"storageInsightConfigs\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-10-10\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"linkTargets\",\r\n \"locations\": [\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-10-10\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Resources\",\r\n \"namespace\": \"Microsoft.Resources\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"subscriptions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/providers\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/operationresults\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"subscriptions/locations\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"resourceGroups\",\r\n \"locations\": [\r\n \"centralus\",\r\n \"eastasia\",\r\n \"southeastasia\",\r\n \"eastus\",\r\n \"westus\",\r\n \"northcentralus\",\r\n \"southcentralus\",\r\n \"northeurope\",\r\n \"westeurope\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Scheduler\",\r\n \"namespace\": \"Microsoft.Scheduler\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"jobcollections\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"South Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-08-01-preview\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Search\",\r\n \"namespace\": \"Microsoft.Search\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"searchServices\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-07-31-Preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"searchServicesCit\",\r\n \"locations\": [\r\n \"\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-07-31-Preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkServiceNameAvailability\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-07-31-Preview\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"checkServiceNameAvailabilityCit\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-07-31-Preview\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Sql\",\r\n \"namespace\": \"Microsoft.Sql\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"servers\",\r\n \"locations\": [\r\n \"North Europe\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/databases\",\r\n \"locations\": [\r\n \"North Europe\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/restorableDroppedDatabases\",\r\n \"locations\": [\r\n \"North Europe\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/recoverableDatabases\",\r\n \"locations\": [\r\n \"North Europe\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/firewallrules\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/usages\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/databaseSecurityPolicies\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/databaseSecurityMetrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"servers/databases/metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"servers/databases/metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"servers/databases/diagnosticSettings\",\r\n \"locations\": [\r\n \"East US\",\r\n \"East US 2\",\r\n \"North Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Brazil South\",\r\n \"West US\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"East Asia\",\r\n \"Southeast Asia\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Storage\",\r\n \"namespace\": \"Microsoft.Storage\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"storageaccounts\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"East US\",\r\n \"West Europe\",\r\n \"West US\",\r\n \"North Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.StreamAnalytics\",\r\n \"namespace\": \"Microsoft.StreamAnalytics\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"streamingjobs\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-10-01-preview\",\r\n \"2014-08-01-preview.0.0\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-10-01-preview\",\r\n \"2014-08-01-preview.0.0\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"locations/quotas\",\r\n \"locations\": [\r\n \"West US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-10-01-preview\",\r\n \"2014-08-01-preview.0.0\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"streamingjobs/diagnosticSettings\",\r\n \"locations\": [\r\n \"East US\",\r\n \"East US 2\",\r\n \"North Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Brazil South\",\r\n \"West US\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"East Asia\",\r\n \"Southeast Asia\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"streamingjobs/metricDefinitions\",\r\n \"locations\": [\r\n \"East US\",\r\n \"East US 2\",\r\n \"North Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Brazil South\",\r\n \"West US\",\r\n \"Central US\",\r\n \"South Central US\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"East Asia\",\r\n \"Southeast Asia\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/microsoft.support\",\r\n \"namespace\": \"microsoft.support\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"supporttickets\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"Central US\",\r\n \"West Europe\",\r\n \"North Europe\",\r\n \"West US\",\r\n \"East US\",\r\n \"East US 2\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\",\r\n \"Southeast Asia\",\r\n \"East Asia\"\r\n ],\r\n \"apiVersions\": [\r\n \"1.0-preview\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/microsoft.test\",\r\n \"namespace\": \"microsoft.test\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"tests\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"tests/diagnosticSettings\",\r\n \"locations\": [\r\n \"East US\",\r\n \"North Europe\",\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.VisualStudio\",\r\n \"namespace\": \"Microsoft.VisualStudio\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"account\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"East US\",\r\n \"West US\",\r\n \"Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01-preview\",\r\n \"2014-02-26\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"account/project\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"East US\",\r\n \"West US\",\r\n \"Central US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"East Asia\",\r\n \"Southeast Asia\",\r\n \"Japan East\",\r\n \"Japan West\",\r\n \"Brazil South\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01-preview\",\r\n \"2014-02-26\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.VisualStudio.Dev\",\r\n \"namespace\": \"Microsoft.VisualStudio.Dev\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"account\",\r\n \"locations\": [\r\n \"North Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-02-26\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"account/project\",\r\n \"locations\": [\r\n \"North Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-02-26\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.VisualStudio.Test\",\r\n \"namespace\": \"Microsoft.VisualStudio.Test\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"account\",\r\n \"locations\": [\r\n \"North Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-02-26\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"account/project\",\r\n \"locations\": [\r\n \"North Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-02-26\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Microsoft.Web\",\r\n \"namespace\": \"Microsoft.Web\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"publishingUsers\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"sourceControls\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"certificates\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"serverFarms\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"sites\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"runtimes\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"sites/slots\",\r\n \"locations\": [\r\n \"South Central US\",\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"sites/metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"sites/metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"serverFarms/metrics\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"serverFarms/metricDefinitions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"georegions\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"webquotas\",\r\n \"locations\": [\r\n \"\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-06-01\",\r\n \"2014-04-01-preview\",\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"Registered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/MicrosoftSql\",\r\n \"namespace\": \"MicrosoftSql\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"servers\",\r\n \"locations\": [\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2.0\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"servers/databases\",\r\n \"locations\": [\r\n \"East US\"\r\n ],\r\n \"apiVersions\": [\r\n \"2.0\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/NewRelic.APM\",\r\n \"namespace\": \"NewRelic.APM\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"accounts\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Southeast Asia\",\r\n \"East Asia\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-10-01\",\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"accounts/applications\",\r\n \"locations\": [\r\n \"North Central US\",\r\n \"South Central US\",\r\n \"West US\",\r\n \"East US\",\r\n \"North Europe\",\r\n \"West Europe\",\r\n \"Southeast Asia\",\r\n \"East Asia\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-10-01\",\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/Providers.Test\",\r\n \"namespace\": \"Providers.Test\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"statelessResources\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"statefulResources\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"statefulResources/nestedResources\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"operations\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"West Europe\"\r\n ],\r\n \"apiVersions\": [\r\n \"2014-04-01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/sabanwebsites\",\r\n \"namespace\": \"sabanwebsites\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"sites\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"sites/pages\",\r\n \"locations\": [\r\n \"Central US\",\r\n \"West US\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/StressRP\",\r\n \"namespace\": \"StressRP\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"ResourceType1\",\r\n \"locations\": [\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": []\r\n },\r\n {\r\n \"resourceType\": \"ResourceType1/ResourceType2\",\r\n \"locations\": [\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/SuccessBricks.ClearDB\",\r\n \"namespace\": \"SuccessBricks.ClearDB\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"databases\",\r\n \"locations\": [\r\n \"North Europe\"\r\n ],\r\n \"apiVersions\": []\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n },\r\n {\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/providers/visualstudiov2\",\r\n \"namespace\": \"visualstudiov2\",\r\n \"resourceTypes\": [\r\n {\r\n \"resourceType\": \"account\",\r\n \"locations\": [\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"02\",\r\n \"01\"\r\n ]\r\n },\r\n {\r\n \"resourceType\": \"account/project\",\r\n \"locations\": [\r\n \"Central US\"\r\n ],\r\n \"apiVersions\": [\r\n \"01\"\r\n ]\r\n }\r\n ],\r\n \"registrationState\": \"NotRegistered\"\r\n }\r\n ]\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "21352" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799954" + ], + "x-ms-request-id": [ + "fc99a272-d8bd-4e16-b1f7-a4c92a4251a6" + ], + "x-ms-correlation-request-id": [ + "fc99a272-d8bd-4e16-b1f7-a4c92a4251a6" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175135Z:fc99a272-d8bd-4e16-b1f7-a4c92a4251a6" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:35 GMT" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215?api-version=2014-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTU/YXBpLXZlcnNpb249MjAxNC0wNC0wMS1wcmV2aWV3", + "RequestMethod": "HEAD", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0" + ] + }, + "ResponseBody": "", + "ResponseHeaders": { + "Content-Length": [ + "102" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799953" + ], + "x-ms-request-id": [ + "615d2926-db88-4a85-9d3c-b5745c8d430e" + ], + "x-ms-correlation-request-id": [ + "615d2926-db88-4a85-9d3c-b5745c8d430e" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175136Z:615d2926-db88-4a85-9d3c-b5745c8d430e" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:35 GMT" + ] + }, + "StatusCode": 404 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215?api-version=2014-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTU/YXBpLXZlcnNpb249MjAxNC0wNC0wMS1wcmV2aWV3", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"location\": \"West US\",\r\n \"tags\": {}\r\n}", + "RequestHeaders": { + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Content-Length": [ + "44" + ], + "User-Agent": [ + "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourceGroups/onesdk9215\",\r\n \"name\": \"onesdk9215\",\r\n \"location\": \"westus\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "183" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "11981" + ], + "x-ms-request-id": [ + "2e2c1d04-c0a4-43ec-a4c3-602fa31e7cdf" + ], + "x-ms-correlation-request-id": [ + "2e2c1d04-c0a4-43ec-a4c3-602fa31e7cdf" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175136Z:2e2c1d04-c0a4-43ec-a4c3-602fa31e7cdf" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:36 GMT" + ] + }, + "StatusCode": 201 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourceGroups/onesdk9215/resources?&api-version=2014-04-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlR3JvdXBzL29uZXNkazkyMTUvcmVzb3VyY2VzPyZhcGktdmVyc2lvbj0yMDE0LTA0LTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0" + ] + }, + "ResponseBody": "{\r\n \"value\": []\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "12" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799952" + ], + "x-ms-request-id": [ + "e7b95133-49d2-4d02-a4e2-26647039ec6c" + ], + "x-ms-correlation-request-id": [ + "e7b95133-49d2-4d02-a4e2-26647039ec6c" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175136Z:e7b95133-49d2-4d02-a4e2-26647039ec6c" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:36 GMT" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.Authorization/permissions?api-version=2014-07-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3Blcm1pc3Npb25zP2FwaS12ZXJzaW9uPTIwMTQtMDctMDEtcHJldmlldw==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "Microsoft.Azure.Management.Authorization.AuthorizationManagementClient/0.9.0.0" + ] + }, + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"actions\": [\r\n \"*\"\r\n ],\r\n \"notActions\": []\r\n }\r\n ]\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "45" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "Vary": [ + "Accept-Encoding" + ], + "x-ms-request-id": [ + "centralus:4858b0f9-eb44-47f5-a770-1a662d14b88a" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799951" + ], + "x-ms-correlation-request-id": [ + "dee638d5-b615-4f0d-ab13-a86dc8df9b6a" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175136Z:dee638d5-b615-4f0d-ab13-a86dc8df9b6a" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:36 GMT" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQ/YXBpLXZlcnNpb249MjAxNC0xMC0wMS1wcmV2aWV3", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "7a908793-dcf3-48a5-bec5-16b54652c8a1" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ] + }, + "ResponseBody": "{\r\n \"error\": {\r\n \"code\": \"ResourceNotFound\",\r\n \"message\": \"Resource not found.\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "69" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "7754c28a-b5d4-458b-9dbc-4a9014ec61b0" + ], + "x-ms-correlation-request-id": [ + "7754c28a-b5d4-458b-9dbc-4a9014ec61b0" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175137Z:7754c28a-b5d4-458b-9dbc-4a9014ec61b0" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:36 GMT" + ] + }, + "StatusCode": 404 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQ/YXBpLXZlcnNpb249MjAxNC0xMC0wMS1wcmV2aWV3", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"name\": \"onesdk3964\",\r\n \"location\": \"West US\",\r\n \"tags\": {}\r\n}", + "RequestHeaders": { + "Content-Type": [ + "application/json" + ], + "Content-Length": [ + "69" + ], + "x-ms-client-request-id": [ + "b0a517bb-8c7f-4bcc-b698-69b24c804a03" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "8" + ] + }, + "ResponseBody": "{\r\n \"name\": \"onesdk3964\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964\",\r\n \"type\": \"Microsoft.DataFactory/datafactories\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"dataFactoryId\": \"edf303cf-7799-48a3-afb1-0a81c7f6388e\",\r\n \"hCatalogDescription\": null,\r\n \"provisioningState\": \"PendingCreation\",\r\n \"error\": null,\r\n \"errorMessage\": null\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "478" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "94a50fd8-06ea-49b2-b735-40c52bd35978" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "11980" + ], + "x-ms-correlation-request-id": [ + "dc3d5360-fe5d-4815-856c-3dd029c0e629" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175137Z:dc3d5360-fe5d-4815-856c-3dd029c0e629" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:37 GMT" + ], + "Location": [ + "https://api-current.resources.windows-int.net/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964?api-version=2014-10-01-preview" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 201 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQ/YXBpLXZlcnNpb249MjAxNC0xMC0wMS1wcmV2aWV3", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "4e396d82-8527-4ac6-ae3e-3d92fe5af605" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "8" + ] + }, + "ResponseBody": "{\r\n \"name\": \"onesdk3964\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964\",\r\n \"type\": \"Microsoft.DataFactory/datafactories\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"dataFactoryId\": \"edf303cf-7799-48a3-afb1-0a81c7f6388e\",\r\n \"hCatalogDescription\": null,\r\n \"provisioningState\": \"PendingCreation\",\r\n \"error\": null,\r\n \"errorMessage\": null\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "478" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "4a239b92-9a5d-458f-a206-2ba2d5397855" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799949" + ], + "x-ms-correlation-request-id": [ + "193ff436-0998-49f2-8ca1-4c29146f1eca" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175138Z:193ff436-0998-49f2-8ca1-4c29146f1eca" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:37 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQ/YXBpLXZlcnNpb249MjAxNC0xMC0wMS1wcmV2aWV3", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "73a5f5f2-733d-459b-a29b-07db121b4407" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "8" + ] + }, + "ResponseBody": "{\r\n \"name\": \"onesdk3964\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964\",\r\n \"type\": \"Microsoft.DataFactory/datafactories\",\r\n \"location\": \"West US\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"dataFactoryId\": \"edf303cf-7799-48a3-afb1-0a81c7f6388e\",\r\n \"hCatalogDescription\": null,\r\n \"provisioningState\": \"Succeeded\",\r\n \"error\": null,\r\n \"errorMessage\": null\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "472" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "d3d1d395-84ee-4003-a381-f7574769a3c2" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799948" + ], + "x-ms-correlation-request-id": [ + "fb143a88-1106-476d-9fa9-85843126bc69" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175143Z:fb143a88-1106-476d-9fa9-85843126bc69" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:43 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-CuratedWikiData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvTGlua2VkU2VydmljZS1DdXJhdGVkV2lraURhdGE/YXBpLXZlcnNpb249MjAxNC0xMC0wMS1wcmV2aWV3", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "ed9b4be4-c36f-4fce-8d25-f8387ef5cfb9" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ] + }, + "ResponseBody": "{\r\n \"message\": \"Linked service LinkedService-CuratedWikiData not found.\",\r\n \"code\": \"LinkedServiceNotFound\"\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "100" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "f4e9d9bb-4bf8-4883-8f2b-27c74214b476" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799947" + ], + "x-ms-correlation-request-id": [ + "884249c4-9b9e-45e9-a3e0-93941510d259" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175143Z:884249c4-9b9e-45e9-a3e0-93941510d259" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:43 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 404 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-CuratedWikiData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvTGlua2VkU2VydmljZS1DdXJhdGVkV2lraURhdGE/YXBpLXZlcnNpb249MjAxNC0xMC0wMS1wcmV2aWV3", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"name\": \"LinkedService-CuratedWikiData\",\r\n \"properties\": {\r\n \"type\": \"AzureStorageLinkedService\",\r\n \"connectionString\": \"DefaultEndpointsProtocol=https;AccountName=myaccountname;AccountKey=myaccountkey\"\r\n }\r\n}", + "RequestHeaders": { + "Content-Type": [ + "application/json" + ], + "Content-Length": [ + "308" + ], + "x-ms-client-request-id": [ + "9562f8d6-12ca-44a1-b10d-26d40ce497f5" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "13" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-CuratedWikiData\",\r\n \"name\": \"LinkedService-CuratedWikiData\",\r\n \"properties\": {\r\n \"connectionString\": \"DefaultEndpointsProtocol=https;AccountName=myaccountname;AccountKey=myaccountkey\",\r\n \"hubName\": \"default\",\r\n \"type\": \"AzureStorageLinkedService\",\r\n \"provisioningState\": \"PendingCreation\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "512" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "5d418d18-09d1-4ea6-ba5f-0a1b9d85f406" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "11979" + ], + "x-ms-correlation-request-id": [ + "9ea53772-4843-4ce9-a5e4-4b4917a9c34e" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175144Z:9ea53772-4843-4ce9-a5e4-4b4917a9c34e" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:44 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-CuratedWikiData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvTGlua2VkU2VydmljZS1DdXJhdGVkV2lraURhdGE/YXBpLXZlcnNpb249MjAxNC0xMC0wMS1wcmV2aWV3", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "1263534b-4514-43e8-9938-1dcaffe8701c" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "13" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-CuratedWikiData\",\r\n \"name\": \"LinkedService-CuratedWikiData\",\r\n \"properties\": {\r\n \"connectionString\": \"DefaultEndpointsProtocol=https;AccountName=myaccountname;AccountKey=myaccountkey\",\r\n \"hubName\": \"default\",\r\n \"type\": \"AzureStorageLinkedService\",\r\n \"provisioningState\": \"PendingCreation\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "512" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "80c1157c-e969-4658-97cc-881d2ab0582a" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799946" + ], + "x-ms-correlation-request-id": [ + "9188d9e1-b3aa-42bf-ad28-62178e05a0a6" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175144Z:9188d9e1-b3aa-42bf-ad28-62178e05a0a6" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:44 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-CuratedWikiData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvTGlua2VkU2VydmljZS1DdXJhdGVkV2lraURhdGE/YXBpLXZlcnNpb249MjAxNC0xMC0wMS1wcmV2aWV3", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "8608b678-429d-4305-8d64-0570777b4c3b" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "13" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-CuratedWikiData\",\r\n \"name\": \"LinkedService-CuratedWikiData\",\r\n \"properties\": {\r\n \"connectionString\": \"DefaultEndpointsProtocol=https;AccountName=myaccountname;AccountKey=myaccountkey\",\r\n \"hubName\": \"default\",\r\n \"type\": \"AzureStorageLinkedService\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "506" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "f63acf42-6d89-4b78-a99b-c688bd193ca8" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799945" + ], + "x-ms-correlation-request-id": [ + "073b0080-b98c-4128-9809-39e3cf5dd06d" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175149Z:073b0080-b98c-4128-9809-39e3cf5dd06d" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:49 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/HDILinkedService?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvSERJTGlua2VkU2VydmljZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "0c02b223-f4c7-4e22-a6fb-f918615cbef8" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ] + }, + "ResponseBody": "{\r\n \"message\": \"Linked service HDILinkedService not found.\",\r\n \"code\": \"LinkedServiceNotFound\"\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "87" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "dcfeca9b-6b55-45fe-8e22-adbe854e085e" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799944" + ], + "x-ms-correlation-request-id": [ + "e3812e78-f5be-492e-b858-beec45026e4d" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175150Z:e3812e78-f5be-492e-b858-beec45026e4d" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:49 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 404 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/HDILinkedService?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvSERJTGlua2VkU2VydmljZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"name\": \"HDILinkedService\",\r\n \"properties\": {\r\n \"type\": \"HDInsightBYOCLinkedService\",\r\n \"clusterUri\": \"https://myhadoopcluster.azurehdinsight.net/\",\r\n \"userName\": \"admin\",\r\n \"password\": \"mypassword\",\r\n \"linkedServiceName\": \"LinkedService-CuratedWikiData\"\r\n }\r\n}", + "RequestHeaders": { + "Content-Type": [ + "application/json" + ], + "Content-Length": [ + "323" + ], + "x-ms-client-request-id": [ + "4647a36a-c823-4a09-8e99-03a6019e866c" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "18" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/HDILinkedService\",\r\n \"name\": \"HDILinkedService\",\r\n \"properties\": {\r\n \"clusterUri\": \"https://myhadoopcluster.azurehdinsight.net/\",\r\n \"userName\": \"admin\",\r\n \"password\": \"mypassword\",\r\n \"storageAccountName\": null,\r\n \"storageAccountKey\": null,\r\n \"location\": null,\r\n \"linkedServiceName\": \"LinkedService-CuratedWikiData\",\r\n \"hubName\": \"default\",\r\n \"type\": \"HDInsightBYOCLinkedService\",\r\n \"provisioningState\": \"PendingCreation\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "539" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "aaf4ced2-6d95-4e24-9081-61ce9c804442" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "11978" + ], + "x-ms-correlation-request-id": [ + "af26310d-45dd-4986-b825-283f9c445d5c" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175150Z:af26310d-45dd-4986-b825-283f9c445d5c" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:50 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/HDILinkedService?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvSERJTGlua2VkU2VydmljZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "01ac629a-f720-44e7-b8ed-5da9dc3447cf" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "18" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/HDILinkedService\",\r\n \"name\": \"HDILinkedService\",\r\n \"properties\": {\r\n \"clusterUri\": \"https://myhadoopcluster.azurehdinsight.net/\",\r\n \"userName\": \"admin\",\r\n \"password\": \"mypassword\",\r\n \"storageAccountName\": null,\r\n \"storageAccountKey\": null,\r\n \"location\": null,\r\n \"linkedServiceName\": \"LinkedService-CuratedWikiData\",\r\n \"hubName\": \"default\",\r\n \"type\": \"HDInsightBYOCLinkedService\",\r\n \"provisioningState\": \"PendingCreation\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "539" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "d9a11686-1134-47a6-b0a6-02db501be66f" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799943" + ], + "x-ms-correlation-request-id": [ + "e15e1006-2df4-4e8a-b5dd-a5cfd22c5f41" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175150Z:e15e1006-2df4-4e8a-b5dd-a5cfd22c5f41" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:50 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/HDILinkedService?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvSERJTGlua2VkU2VydmljZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "9d76405e-bbfa-484e-8647-716f5fb79b00" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "18" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/HDILinkedService\",\r\n \"name\": \"HDILinkedService\",\r\n \"properties\": {\r\n \"clusterUri\": \"https://myhadoopcluster.azurehdinsight.net/\",\r\n \"userName\": \"admin\",\r\n \"password\": \"mypassword\",\r\n \"storageAccountName\": null,\r\n \"storageAccountKey\": null,\r\n \"location\": null,\r\n \"linkedServiceName\": \"LinkedService-CuratedWikiData\",\r\n \"hubName\": \"default\",\r\n \"type\": \"HDInsightBYOCLinkedService\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "533" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "2b1d61a4-bf26-46e3-808e-7e46925d1a0c" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799942" + ], + "x-ms-correlation-request-id": [ + "d1c1c80a-5ea3-41c1-8ea2-193914be83e6" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175155Z:d1c1c80a-5ea3-41c1-8ea2-193914be83e6" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:55 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-WikiAggregatedData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvTGlua2VkU2VydmljZS1XaWtpQWdncmVnYXRlZERhdGE/YXBpLXZlcnNpb249MjAxNC0xMC0wMS1wcmV2aWV3", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "2bb42763-3bf0-4644-84dd-0aac557798dd" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ] + }, + "ResponseBody": "{\r\n \"message\": \"Linked service LinkedService-WikiAggregatedData not found.\",\r\n \"code\": \"LinkedServiceNotFound\"\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "103" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "fca53f23-fc98-425f-80c4-7da33724d678" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799941" + ], + "x-ms-correlation-request-id": [ + "a3c027eb-3447-4304-b20f-5c902b0383cc" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175156Z:a3c027eb-3447-4304-b20f-5c902b0383cc" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:55 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 404 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-WikiAggregatedData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvTGlua2VkU2VydmljZS1XaWtpQWdncmVnYXRlZERhdGE/YXBpLXZlcnNpb249MjAxNC0xMC0wMS1wcmV2aWV3", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"name\": \"LinkedService-WikiAggregatedData\",\r\n \"properties\": {\r\n \"type\": \"AzureSqlLinkedService\",\r\n \"connectionString\": \"Server=tcp:mytest.database.windows.net,1499;Database=wikitest;User ID=myaccount;Password=somepassword;Trusted_Connection=False;Encrypt=True;Connection Timeout=30\"\r\n }\r\n}", + "RequestHeaders": { + "Content-Type": [ + "application/json" + ], + "Content-Length": [ + "325" + ], + "x-ms-client-request-id": [ + "84ae501c-6062-412f-a22d-859848962538" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "23" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-WikiAggregatedData\",\r\n \"name\": \"LinkedService-WikiAggregatedData\",\r\n \"properties\": {\r\n \"connectionString\": \"Server=tcp:mytest.database.windows.net,1499;Database=wikitest;User ID=myaccount;Password=somepassword;Trusted_Connection=False;Encrypt=True;Connection Timeout=30\",\r\n \"type\": \"AzureSqlLinkedService\",\r\n \"provisioningState\": \"PendingCreation\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "512" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "48b8e570-318d-490e-9c11-7034a20bce69" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "11977" + ], + "x-ms-correlation-request-id": [ + "854bcc7c-34f8-4364-aa70-ca9acd611faa" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175156Z:854bcc7c-34f8-4364-aa70-ca9acd611faa" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:56 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-WikiAggregatedData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvTGlua2VkU2VydmljZS1XaWtpQWdncmVnYXRlZERhdGE/YXBpLXZlcnNpb249MjAxNC0xMC0wMS1wcmV2aWV3", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "6d5afcab-6a4f-49de-8ee5-00a2c100caed" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "23" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-WikiAggregatedData\",\r\n \"name\": \"LinkedService-WikiAggregatedData\",\r\n \"properties\": {\r\n \"connectionString\": \"Server=tcp:mytest.database.windows.net,1499;Database=wikitest;User ID=myaccount;Password=somepassword;Trusted_Connection=False;Encrypt=True;Connection Timeout=30\",\r\n \"type\": \"AzureSqlLinkedService\",\r\n \"provisioningState\": \"PendingCreation\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "512" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "0575c3cc-330c-40af-a56e-34e9395ea008" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799940" + ], + "x-ms-correlation-request-id": [ + "d0df145b-3570-4af3-a557-2e6a5fe00f59" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175156Z:d0df145b-3570-4af3-a557-2e6a5fe00f59" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:51:56 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-WikiAggregatedData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvTGlua2VkU2VydmljZS1XaWtpQWdncmVnYXRlZERhdGE/YXBpLXZlcnNpb249MjAxNC0xMC0wMS1wcmV2aWV3", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "4e96fd29-9bfe-41e1-95c5-fd4e94320da8" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "23" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-WikiAggregatedData\",\r\n \"name\": \"LinkedService-WikiAggregatedData\",\r\n \"properties\": {\r\n \"connectionString\": \"Server=tcp:mytest.database.windows.net,1499;Database=wikitest;User ID=myaccount;Password=somepassword;Trusted_Connection=False;Encrypt=True;Connection Timeout=30\",\r\n \"type\": \"AzureSqlLinkedService\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "506" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "ebc54088-0be2-469a-9830-d56e5a254679" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799939" + ], + "x-ms-correlation-request-id": [ + "d83d72d6-1a98-4cc4-af11-9d8c031c237a" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175202Z:d83d72d6-1a98-4cc4-af11-9d8c031c237a" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:01 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-WikipediaClickEvents?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvTGlua2VkU2VydmljZS1XaWtpcGVkaWFDbGlja0V2ZW50cz9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "be03c8ff-b251-4e85-b39a-455ce5866355" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ] + }, + "ResponseBody": "{\r\n \"message\": \"Linked service LinkedService-WikipediaClickEvents not found.\",\r\n \"code\": \"LinkedServiceNotFound\"\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "105" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "381a8b0a-a14e-43dc-8de7-905c1707f599" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799938" + ], + "x-ms-correlation-request-id": [ + "5b5507b7-31fe-45c3-a6fc-5be0960a1c2e" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175202Z:5b5507b7-31fe-45c3-a6fc-5be0960a1c2e" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:02 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 404 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-WikipediaClickEvents?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvTGlua2VkU2VydmljZS1XaWtpcGVkaWFDbGlja0V2ZW50cz9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"name\": \"LinkedService-WikipediaClickEvents\",\r\n \"properties\": {\r\n \"type\": \"AzureStorageLinkedService\",\r\n \"connectionString\": \"DefaultEndpointsProtocol=https;AccountName=myaccountname;AccountKey=myaccountkey\"\r\n }\r\n}", + "RequestHeaders": { + "Content-Type": [ + "application/json" + ], + "Content-Length": [ + "313" + ], + "x-ms-client-request-id": [ + "bba692e9-297e-42b7-993e-5df3f5496ea0" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "28" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-WikipediaClickEvents\",\r\n \"name\": \"LinkedService-WikipediaClickEvents\",\r\n \"properties\": {\r\n \"connectionString\": \"DefaultEndpointsProtocol=https;AccountName=myaccountname;AccountKey=myaccountkey\",\r\n \"hubName\": \"default\",\r\n \"type\": \"AzureStorageLinkedService\",\r\n \"provisioningState\": \"PendingCreation\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "522" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "baddf1b9-b918-4abf-b572-49fe831a521a" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "11976" + ], + "x-ms-correlation-request-id": [ + "c4ac5dfa-4c55-4e6a-971f-03004200dece" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175202Z:c4ac5dfa-4c55-4e6a-971f-03004200dece" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:02 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-WikipediaClickEvents?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvTGlua2VkU2VydmljZS1XaWtpcGVkaWFDbGlja0V2ZW50cz9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "cde0b114-290f-4ecf-8736-02a942ec2490" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "28" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-WikipediaClickEvents\",\r\n \"name\": \"LinkedService-WikipediaClickEvents\",\r\n \"properties\": {\r\n \"connectionString\": \"DefaultEndpointsProtocol=https;AccountName=myaccountname;AccountKey=myaccountkey\",\r\n \"hubName\": \"default\",\r\n \"type\": \"AzureStorageLinkedService\",\r\n \"provisioningState\": \"PendingCreation\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "522" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "06cc8bf3-97da-425e-a3eb-f4a7b97bff43" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799937" + ], + "x-ms-correlation-request-id": [ + "70ca5148-3a5c-45fc-b655-01c857eafba3" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175202Z:70ca5148-3a5c-45fc-b655-01c857eafba3" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:02 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-WikipediaClickEvents?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvbGlua2Vkc2VydmljZXMvTGlua2VkU2VydmljZS1XaWtpcGVkaWFDbGlja0V2ZW50cz9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "bb5f266f-5212-4365-af7d-6ae6f07d1488" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "28" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/linkedservices/LinkedService-WikipediaClickEvents\",\r\n \"name\": \"LinkedService-WikipediaClickEvents\",\r\n \"properties\": {\r\n \"connectionString\": \"DefaultEndpointsProtocol=https;AccountName=myaccountname;AccountKey=myaccountkey\",\r\n \"hubName\": \"default\",\r\n \"type\": \"AzureStorageLinkedService\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "516" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "cc248979-5856-4696-a112-3724d1bcbae6" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799936" + ], + "x-ms-correlation-request-id": [ + "e17c9a4c-9048-4246-b0fb-e5a3a45eb339" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175207Z:e17c9a4c-9048-4246-b0fb-e5a3a45eb339" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:07 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikiAggregatedData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvdGFibGVzL0RBX1dpa2lBZ2dyZWdhdGVkRGF0YT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "77c696d9-2873-4075-8c70-3f73e1b22878" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ] + }, + "ResponseBody": "{\r\n \"message\": \"Table DA_WikiAggregatedData not found.\",\r\n \"code\": \"TableNotFound\"\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "75" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "94a88390-c452-40bd-96e5-e0b228eb6c34" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799935" + ], + "x-ms-correlation-request-id": [ + "bf1fd3f6-d5a7-4d72-be5d-22a2ffd9ae0f" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175208Z:bf1fd3f6-d5a7-4d72-be5d-22a2ffd9ae0f" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:07 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 404 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikiAggregatedData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvdGFibGVzL0RBX1dpa2lBZ2dyZWdhdGVkRGF0YT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"name\": \"DA_WikiAggregatedData\",\r\n \"properties\": {\r\n \"structure\": [\r\n {\r\n \"name\": \"slicetimestamp\",\r\n \"position\": 0,\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"name\": \"projectname\",\r\n \"position\": 1,\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"name\": \"hits\",\r\n \"position\": 2,\r\n \"type\": \"Decimal\"\r\n }\r\n ],\r\n \"location\": {\r\n \"type\": \"AzureSqlTableLocation\",\r\n \"tableName\": \"wikiaggregateddata\",\r\n \"linkedServiceName\": \"LinkedService-WikiAggregatedData\"\r\n },\r\n \"availability\": {\r\n \"frequency\": \"Hour\",\r\n \"interval\": 1\r\n },\r\n \"policy\": {\r\n \"validation\": {\r\n \"minimumRows\": 10\r\n }\r\n }\r\n }\r\n}", + "RequestHeaders": { + "Content-Type": [ + "application/json" + ], + "Content-Length": [ + "746" + ], + "x-ms-client-request-id": [ + "eb372979-f5d7-4fce-be7d-93651190d0f4" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "33" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DA_WikiAggregatedData\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikiAggregatedData\",\r\n \"properties\": {\r\n \"structure\": [\r\n {\r\n \"position\": 0,\r\n \"name\": \"slicetimestamp\",\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"position\": 1,\r\n \"name\": \"projectname\",\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"position\": 2,\r\n \"name\": \"hits\",\r\n \"type\": \"Decimal\"\r\n }\r\n ],\r\n \"published\": false,\r\n \"location\": {\r\n \"type\": \"AzureSqlTableLocation\",\r\n \"tableName\": \"wikiaggregateddata\",\r\n \"linkedServiceName\": \"LinkedService-WikiAggregatedData\"\r\n },\r\n \"availability\": {\r\n \"frequency\": \"Hour\",\r\n \"interval\": 1,\r\n \"waitOnExternal\": null\r\n },\r\n \"policy\": {\r\n \"validation\": {\r\n \"minimumRows\": 10\r\n }\r\n },\r\n \"createTime\": \"2014-10-21T17:52:09.0096356Z\",\r\n \"provisioningState\": \"PendingCreation\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "731" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "78a92798-2cd9-4dd1-b6ae-e8bd6a00e886" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "11975" + ], + "x-ms-correlation-request-id": [ + "0a1debdf-b04c-46a9-94c3-1601bff7f8a1" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175209Z:0a1debdf-b04c-46a9-94c3-1601bff7f8a1" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:08 GMT" + ], + "Location": [ + "https://api-current.resources.windows-int.net/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikiAggregatedData?api-version=2014-10-01-preview" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 201 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikiAggregatedData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvdGFibGVzL0RBX1dpa2lBZ2dyZWdhdGVkRGF0YT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "c46abb94-3aab-4d56-af6f-d2076e012626" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "33" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DA_WikiAggregatedData\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikiAggregatedData\",\r\n \"properties\": {\r\n \"structure\": [\r\n {\r\n \"position\": 0,\r\n \"name\": \"slicetimestamp\",\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"position\": 1,\r\n \"name\": \"projectname\",\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"position\": 2,\r\n \"name\": \"hits\",\r\n \"type\": \"Decimal\"\r\n }\r\n ],\r\n \"published\": false,\r\n \"location\": {\r\n \"type\": \"AzureSqlTableLocation\",\r\n \"tableName\": \"wikiaggregateddata\",\r\n \"linkedServiceName\": \"LinkedService-WikiAggregatedData\"\r\n },\r\n \"availability\": {\r\n \"frequency\": \"Hour\",\r\n \"interval\": 1,\r\n \"waitOnExternal\": null\r\n },\r\n \"policy\": {\r\n \"validation\": {\r\n \"minimumRows\": 10\r\n }\r\n },\r\n \"createTime\": \"2014-10-21T17:52:09.0096356Z\",\r\n \"provisioningState\": \"PendingCreation\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "731" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "b330176c-d8ca-411f-96df-218b11eb9952" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799934" + ], + "x-ms-correlation-request-id": [ + "0088ba86-83d1-4766-8783-598d1174b219" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175209Z:0088ba86-83d1-4766-8783-598d1174b219" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:08 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikiAggregatedData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvdGFibGVzL0RBX1dpa2lBZ2dyZWdhdGVkRGF0YT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "ab5e12d9-7205-40bb-9860-72e7dcda8eb0" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "33" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DA_WikiAggregatedData\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikiAggregatedData\",\r\n \"properties\": {\r\n \"structure\": [\r\n {\r\n \"position\": 0,\r\n \"name\": \"slicetimestamp\",\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"position\": 1,\r\n \"name\": \"projectname\",\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"position\": 2,\r\n \"name\": \"hits\",\r\n \"type\": \"Decimal\"\r\n }\r\n ],\r\n \"published\": false,\r\n \"location\": {\r\n \"type\": \"AzureSqlTableLocation\",\r\n \"tableName\": \"wikiaggregateddata\",\r\n \"linkedServiceName\": \"LinkedService-WikiAggregatedData\"\r\n },\r\n \"availability\": {\r\n \"frequency\": \"Hour\",\r\n \"interval\": 1,\r\n \"waitOnExternal\": null\r\n },\r\n \"policy\": {\r\n \"validation\": {\r\n \"minimumRows\": 10\r\n }\r\n },\r\n \"createTime\": \"2014-10-21T17:52:08.8173591Z\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "725" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "2057b113-70b8-4e35-b658-c28ce045ba19" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799933" + ], + "x-ms-correlation-request-id": [ + "bf4445f6-e42b-4ae1-86c5-63a8c943d5e1" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175214Z:bf4445f6-e42b-4ae1-86c5-63a8c943d5e1" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:14 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikipediaClickEvents?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvdGFibGVzL0RBX1dpa2lwZWRpYUNsaWNrRXZlbnRzP2FwaS12ZXJzaW9uPTIwMTQtMTAtMDEtcHJldmlldw==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "e9b9dc2b-b202-4e60-afe3-17e96bd15ecf" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ] + }, + "ResponseBody": "{\r\n \"message\": \"Table DA_WikipediaClickEvents not found.\",\r\n \"code\": \"TableNotFound\"\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "77" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "071741f8-f880-439c-a076-2dbc7435b7ba" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799932" + ], + "x-ms-correlation-request-id": [ + "1ae9e333-b0c5-45cb-9970-de4648b51463" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175214Z:1ae9e333-b0c5-45cb-9970-de4648b51463" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:14 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 404 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikipediaClickEvents?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvdGFibGVzL0RBX1dpa2lwZWRpYUNsaWNrRXZlbnRzP2FwaS12ZXJzaW9uPTIwMTQtMTAtMDEtcHJldmlldw==", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"name\": \"DA_WikipediaClickEvents\",\r\n \"properties\": {\r\n \"location\": {\r\n \"type\": \"AzureBlobLocation\",\r\n \"folderPath\": \"wikidatagateway/wikisampledatain/\",\r\n \"linkedServiceName\": \"LinkedService-WikipediaClickEvents\"\r\n },\r\n \"availability\": {\r\n \"frequency\": \"Hour\",\r\n \"interval\": 1,\r\n \"waitOnExternal\": {\r\n \"retryInterval\": \"00:01:00\",\r\n \"retryTimeout\": \"00:10:00\",\r\n \"maximumRetry\": 3\r\n }\r\n },\r\n \"policy\": {\r\n \"validation\": {\r\n \"minimumSizeMB\": 1.0\r\n }\r\n }\r\n }\r\n}", + "RequestHeaders": { + "Content-Type": [ + "application/json" + ], + "Content-Length": [ + "704" + ], + "x-ms-client-request-id": [ + "25861656-313d-4b05-a8bb-d1e5c9364b86" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "38" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DA_WikipediaClickEvents\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikipediaClickEvents\",\r\n \"properties\": {\r\n \"published\": false,\r\n \"location\": {\r\n \"type\": \"AzureBlobLocation\",\r\n \"folderPath\": \"wikidatagateway/wikisampledatain/\",\r\n \"linkedServiceName\": \"LinkedService-WikipediaClickEvents\"\r\n },\r\n \"availability\": {\r\n \"frequency\": \"Hour\",\r\n \"interval\": 1,\r\n \"waitOnExternal\": {\r\n \"retryInterval\": \"00:01:00\",\r\n \"retryTimeout\": \"00:10:00\",\r\n \"maximumRetry\": 3\r\n }\r\n },\r\n \"policy\": {\r\n \"validation\": {\r\n \"minimumSizeMB\": 1.0\r\n }\r\n },\r\n \"createTime\": \"2014-10-21T17:52:15.0616105Z\",\r\n \"provisioningState\": \"PendingCreation\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "652" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "46398460-9595-48aa-a868-4bc9ec033930" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "11974" + ], + "x-ms-correlation-request-id": [ + "d79e7c80-1e9b-4d9c-9c17-2727132bf6b3" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175215Z:d79e7c80-1e9b-4d9c-9c17-2727132bf6b3" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:14 GMT" + ], + "Location": [ + "https://api-current.resources.windows-int.net/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikipediaClickEvents?api-version=2014-10-01-preview" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 201 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikipediaClickEvents?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvdGFibGVzL0RBX1dpa2lwZWRpYUNsaWNrRXZlbnRzP2FwaS12ZXJzaW9uPTIwMTQtMTAtMDEtcHJldmlldw==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "9844b6a5-af33-4423-9d98-e1cec77c0baf" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "38" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DA_WikipediaClickEvents\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikipediaClickEvents\",\r\n \"properties\": {\r\n \"published\": false,\r\n \"location\": {\r\n \"type\": \"AzureBlobLocation\",\r\n \"folderPath\": \"wikidatagateway/wikisampledatain/\",\r\n \"linkedServiceName\": \"LinkedService-WikipediaClickEvents\"\r\n },\r\n \"availability\": {\r\n \"frequency\": \"Hour\",\r\n \"interval\": 1,\r\n \"waitOnExternal\": {\r\n \"retryInterval\": \"00:01:00\",\r\n \"retryTimeout\": \"00:10:00\",\r\n \"maximumRetry\": 3\r\n }\r\n },\r\n \"policy\": {\r\n \"validation\": {\r\n \"minimumSizeMB\": 1.0\r\n }\r\n },\r\n \"createTime\": \"2014-10-21T17:52:15.0616105Z\",\r\n \"provisioningState\": \"PendingCreation\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "652" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "c38f98e7-062e-4e16-a602-6f040015f9bb" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799931" + ], + "x-ms-correlation-request-id": [ + "d64473c0-a1c9-4d38-ac37-7f1b0249f4f9" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175215Z:d64473c0-a1c9-4d38-ac37-7f1b0249f4f9" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:14 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikipediaClickEvents?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvdGFibGVzL0RBX1dpa2lwZWRpYUNsaWNrRXZlbnRzP2FwaS12ZXJzaW9uPTIwMTQtMTAtMDEtcHJldmlldw==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "34fdd0ed-6321-4773-87f8-3ce2e68b50a5" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "38" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DA_WikipediaClickEvents\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikipediaClickEvents\",\r\n \"properties\": {\r\n \"published\": false,\r\n \"location\": {\r\n \"type\": \"AzureBlobLocation\",\r\n \"folderPath\": \"wikidatagateway/wikisampledatain/\",\r\n \"linkedServiceName\": \"LinkedService-WikipediaClickEvents\"\r\n },\r\n \"availability\": {\r\n \"frequency\": \"Hour\",\r\n \"interval\": 1,\r\n \"waitOnExternal\": {\r\n \"retryInterval\": \"00:01:00\",\r\n \"retryTimeout\": \"00:10:00\",\r\n \"maximumRetry\": 3\r\n }\r\n },\r\n \"policy\": {\r\n \"validation\": {\r\n \"minimumSizeMB\": 1.0\r\n }\r\n },\r\n \"createTime\": \"2014-10-21T17:52:15.0323441Z\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "646" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "2b29b178-81b1-416f-a677-64b4e64df213" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799930" + ], + "x-ms-correlation-request-id": [ + "3d987c6b-e305-4ef2-9741-3a09e9ebb98c" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175220Z:3d987c6b-e305-4ef2-9741-3a09e9ebb98c" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:20 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_CuratedWikiData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvdGFibGVzL0RBX0N1cmF0ZWRXaWtpRGF0YT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "d4c860c9-13ca-4db7-a13f-71bd1d32dea7" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ] + }, + "ResponseBody": "{\r\n \"message\": \"Table DA_CuratedWikiData not found.\",\r\n \"code\": \"TableNotFound\"\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "72" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "7c7847fa-d2c9-4748-893e-2076d3127cae" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799929" + ], + "x-ms-correlation-request-id": [ + "e454af18-23f8-4aef-96e4-d767fc9efd99" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175220Z:e454af18-23f8-4aef-96e4-d767fc9efd99" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:20 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 404 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_CuratedWikiData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvdGFibGVzL0RBX0N1cmF0ZWRXaWtpRGF0YT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"name\": \"DA_CuratedWikiData\",\r\n \"properties\": {\r\n \"structure\": [\r\n {\r\n \"name\": \"slicetimestamp\",\r\n \"position\": 0,\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"name\": \"projectname\",\r\n \"position\": 1,\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"name\": \"pageviews\",\r\n \"position\": 2,\r\n \"type\": \"Decimal\"\r\n }\r\n ],\r\n \"location\": {\r\n \"type\": \"AzureBlobLocation\",\r\n \"folderPath\": \"wikidatagateway/wikisampledataout/{Slice}\",\r\n \"partitionedBy\": [\r\n {\r\n \"name\": \"Slice\",\r\n \"value\": {\r\n \"type\": \"DateTime\",\r\n \"date\": \"SliceStart\",\r\n \"format\": \"yyyyMMddHH\"\r\n }\r\n }\r\n ],\r\n \"linkedServiceName\": \"LinkedService-CuratedWikiData\"\r\n },\r\n \"availability\": {\r\n \"frequency\": \"Hour\",\r\n \"interval\": 1\r\n }\r\n }\r\n}", + "RequestHeaders": { + "Content-Type": [ + "application/json" + ], + "Content-Length": [ + "770" + ], + "x-ms-client-request-id": [ + "519787de-93c9-4de8-8e0b-16d136ec1827" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "43" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DA_CuratedWikiData\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_CuratedWikiData\",\r\n \"properties\": {\r\n \"structure\": [\r\n {\r\n \"position\": 0,\r\n \"name\": \"slicetimestamp\",\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"position\": 1,\r\n \"name\": \"projectname\",\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"position\": 2,\r\n \"name\": \"pageviews\",\r\n \"type\": \"Decimal\"\r\n }\r\n ],\r\n \"published\": false,\r\n \"location\": {\r\n \"type\": \"AzureBlobLocation\",\r\n \"folderPath\": \"wikidatagateway/wikisampledataout/{Slice}\",\r\n \"partitionedBy\": [\r\n {\r\n \"name\": \"Slice\",\r\n \"value\": {\r\n \"type\": \"DateTime\",\r\n \"date\": \"SliceStart\",\r\n \"format\": \"yyyyMMddHH\"\r\n }\r\n }\r\n ],\r\n \"linkedServiceName\": \"LinkedService-CuratedWikiData\"\r\n },\r\n \"availability\": {\r\n \"frequency\": \"Hour\",\r\n \"interval\": 1,\r\n \"waitOnExternal\": null\r\n },\r\n \"createTime\": \"2014-10-21T17:52:21.4311215Z\",\r\n \"provisioningState\": \"PendingCreation\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "809" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "50359fea-70b2-415d-86cc-4659f06d2123" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "11973" + ], + "x-ms-correlation-request-id": [ + "bfa3b67d-8276-4f58-83ec-f47b4b197306" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175221Z:bfa3b67d-8276-4f58-83ec-f47b4b197306" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:20 GMT" + ], + "Location": [ + "https://api-current.resources.windows-int.net/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_CuratedWikiData?api-version=2014-10-01-preview" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 201 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_CuratedWikiData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvdGFibGVzL0RBX0N1cmF0ZWRXaWtpRGF0YT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "0f32c2dc-db04-476c-9b9c-f329a21be1f5" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "43" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DA_CuratedWikiData\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_CuratedWikiData\",\r\n \"properties\": {\r\n \"structure\": [\r\n {\r\n \"position\": 0,\r\n \"name\": \"slicetimestamp\",\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"position\": 1,\r\n \"name\": \"projectname\",\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"position\": 2,\r\n \"name\": \"pageviews\",\r\n \"type\": \"Decimal\"\r\n }\r\n ],\r\n \"published\": false,\r\n \"location\": {\r\n \"type\": \"AzureBlobLocation\",\r\n \"folderPath\": \"wikidatagateway/wikisampledataout/{Slice}\",\r\n \"partitionedBy\": [\r\n {\r\n \"name\": \"Slice\",\r\n \"value\": {\r\n \"type\": \"DateTime\",\r\n \"date\": \"SliceStart\",\r\n \"format\": \"yyyyMMddHH\"\r\n }\r\n }\r\n ],\r\n \"linkedServiceName\": \"LinkedService-CuratedWikiData\"\r\n },\r\n \"availability\": {\r\n \"frequency\": \"Hour\",\r\n \"interval\": 1,\r\n \"waitOnExternal\": null\r\n },\r\n \"createTime\": \"2014-10-21T17:52:21.4311215Z\",\r\n \"provisioningState\": \"PendingCreation\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "809" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "2ae88d48-6ae4-4827-8b9a-b43e1e7ba37a" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799928" + ], + "x-ms-correlation-request-id": [ + "b92fcf73-8de0-46cf-a5f5-d7f479d2cfee" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175221Z:b92fcf73-8de0-46cf-a5f5-d7f479d2cfee" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:21 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_CuratedWikiData?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvdGFibGVzL0RBX0N1cmF0ZWRXaWtpRGF0YT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "96cf0514-7686-4e89-bb8f-a9ec1584d517" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "43" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DA_CuratedWikiData\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_CuratedWikiData\",\r\n \"properties\": {\r\n \"structure\": [\r\n {\r\n \"position\": 0,\r\n \"name\": \"slicetimestamp\",\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"position\": 1,\r\n \"name\": \"projectname\",\r\n \"type\": \"String\"\r\n },\r\n {\r\n \"position\": 2,\r\n \"name\": \"pageviews\",\r\n \"type\": \"Decimal\"\r\n }\r\n ],\r\n \"published\": false,\r\n \"location\": {\r\n \"type\": \"AzureBlobLocation\",\r\n \"folderPath\": \"wikidatagateway/wikisampledataout/{Slice}\",\r\n \"partitionedBy\": [\r\n {\r\n \"name\": \"Slice\",\r\n \"value\": {\r\n \"type\": \"DateTime\",\r\n \"date\": \"SliceStart\",\r\n \"format\": \"yyyyMMddHH\"\r\n }\r\n }\r\n ],\r\n \"linkedServiceName\": \"LinkedService-CuratedWikiData\"\r\n },\r\n \"availability\": {\r\n \"frequency\": \"Hour\",\r\n \"interval\": 1,\r\n \"waitOnExternal\": null\r\n },\r\n \"createTime\": \"2014-10-21T17:52:21.4197116Z\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "803" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "9259324b-065a-4098-b5c0-acd4830ede51" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799927" + ], + "x-ms-correlation-request-id": [ + "34d723a1-ea43-412c-9680-a1213ea24846" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175226Z:34d723a1-ea43-412c-9680-a1213ea24846" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:26 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"name\": \"DP_WikipediaSamplePipeline\",\r\n \"properties\": {\r\n \"description\": \"DP Wikipedia Sample Pipelines\",\r\n \"activities\": [\r\n {\r\n \"name\": \"WikiHiveActivity\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_WikipediaClickEvents\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"linkedServiceName\": \"HDILinkedService\",\r\n \"type\": \"HDInsightActivity\",\r\n \"transformation\": {\r\n \"type\": \"Hive\",\r\n \"script\": \"$$Text.Format('DROP TABLE IF EXISTS values; CREATE EXTERNAL TABLE values (projectname string, title string, pageviews string, bytestransfer string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\' \\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledatain\\\\'; DROP TABLE IF EXISTS stats; CREATE EXTERNAL TABLE stats (slicetimestamp string, projectname string, pageviews string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\',\\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledataout/{0:yyyyMMddHH}\\\\'; INSERT OVERWRITE TABLE Stats SELECT slicetimestamp, projectname, sum(pageviews) FROM (SELECT \\\\'2014/02/25\\\\' AS slicetimestamp, CASE WHEN size(split(projectname, \\\\'[.]\\\\'))=1 THEN \\\\'wikipedia\\\\' ELSE CASE split(projectname, \\\\'[.]\\\\')[1] WHEN \\\\'b\\\\' THEN \\\\'wikibooks\\\\' WHEN \\\\'d\\\\' THEN \\\\'wiktionary\\\\' WHEN \\\\'m\\\\' THEN \\\\'wikimedia\\\\' WHEN \\\\'mv\\\\' THEN \\\\'wikipedia mobile\\\\' WHEN \\\\'n\\\\' THEN \\\\'wikinews\\\\' WHEN \\\\'q\\\\' THEN \\\\'wikiquote\\\\' WHEN \\\\'s\\\\' THEN \\\\'wikisource\\\\' WHEN \\\\'v\\\\' THEN \\\\'wikiversity\\\\' WHEN \\\\'w\\\\' THEN \\\\'mediawiki\\\\' ELSE \\\\'n/a\\\\' END END AS projectname, pageviews FROM values) A GROUP BY slicetimestamp, projectname;', SliceStart)\"\r\n },\r\n \"policy\": {\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2,\r\n \"timeout\": \"01:00:00\"\r\n }\r\n },\r\n {\r\n \"name\": \"BlobToSqlCopyActivity\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_WikiAggregatedData\"\r\n }\r\n ],\r\n \"linkedServiceName\": \"HDILinkedService\",\r\n \"type\": \"CopyActivity\",\r\n \"transformation\": {\r\n \"source\": {\r\n \"type\": \"BlobSource\",\r\n \"blobColumnSeparators\": \",\"\r\n },\r\n \"sink\": {\r\n \"type\": \"SqlSink\",\r\n \"writeBatchSize\": 1000000,\r\n \"writeBatchTimeout\": \"01:00:00\"\r\n }\r\n },\r\n \"policy\": {\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2,\r\n \"timeout\": \"01:00:00\"\r\n }\r\n }\r\n ]\r\n }\r\n}", + "RequestHeaders": { + "Content-Type": [ + "application/json" + ], + "Content-Length": [ + "3199" + ], + "x-ms-client-request-id": [ + "c0c56947-01f1-4a19-994d-34bb29369281" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "47" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DP_WikipediaSamplePipeline\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline\",\r\n \"properties\": {\r\n \"description\": \"DP Wikipedia Sample Pipelines\",\r\n \"activities\": [\r\n {\r\n \"type\": \"HDInsightActivity\",\r\n \"transformation\": {\r\n \"script\": \"$$Text.Format('DROP TABLE IF EXISTS values; CREATE EXTERNAL TABLE values (projectname string, title string, pageviews string, bytestransfer string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\' \\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledatain\\\\'; DROP TABLE IF EXISTS stats; CREATE EXTERNAL TABLE stats (slicetimestamp string, projectname string, pageviews string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\',\\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledataout/{0:yyyyMMddHH}\\\\'; INSERT OVERWRITE TABLE Stats SELECT slicetimestamp, projectname, sum(pageviews) FROM (SELECT \\\\'2014/02/25\\\\' AS slicetimestamp, CASE WHEN size(split(projectname, \\\\'[.]\\\\'))=1 THEN \\\\'wikipedia\\\\' ELSE CASE split(projectname, \\\\'[.]\\\\')[1] WHEN \\\\'b\\\\' THEN \\\\'wikibooks\\\\' WHEN \\\\'d\\\\' THEN \\\\'wiktionary\\\\' WHEN \\\\'m\\\\' THEN \\\\'wikimedia\\\\' WHEN \\\\'mv\\\\' THEN \\\\'wikipedia mobile\\\\' WHEN \\\\'n\\\\' THEN \\\\'wikinews\\\\' WHEN \\\\'q\\\\' THEN \\\\'wikiquote\\\\' WHEN \\\\'s\\\\' THEN \\\\'wikisource\\\\' WHEN \\\\'v\\\\' THEN \\\\'wikiversity\\\\' WHEN \\\\'w\\\\' THEN \\\\'mediawiki\\\\' ELSE \\\\'n/a\\\\' END END AS projectname, pageviews FROM values) A GROUP BY slicetimestamp, projectname;', SliceStart)\",\r\n \"type\": \"Hive\"\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_WikipediaClickEvents\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"WikiHiveActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n },\r\n {\r\n \"type\": \"CopyActivity\",\r\n \"transformation\": {\r\n \"source\": {\r\n \"type\": \"BlobSource\",\r\n \"blobColumnSeparators\": \",\"\r\n },\r\n \"sink\": {\r\n \"type\": \"SqlSink\",\r\n \"writeBatchSize\": 1000000,\r\n \"writeBatchTimeout\": \"01:00:00\"\r\n }\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_WikiAggregatedData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"BlobToSqlCopyActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n }\r\n ],\r\n \"isPaused\": false,\r\n \"runtimeInfo\": {\r\n \"deploymentTime\": \"2014-10-21T17:52:27.8728433Z\",\r\n \"activityPeriods\": {\r\n \"wikiHiveActivity\": {\r\n \"start\": \"1601-01-01T00:00:00Z\",\r\n \"end\": \"1601-01-01T00:00:00Z\"\r\n },\r\n \"blobToSqlCopyActivity\": {\r\n \"start\": \"1601-01-01T00:00:00Z\",\r\n \"end\": \"1601-01-01T00:00:00Z\"\r\n }\r\n }\r\n },\r\n \"provisioningState\": \"PendingCreation\",\r\n \"hubName\": \"default\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "2715" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "b5ec47cc-1238-4d83-8b45-37204bfc86d7" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "11972" + ], + "x-ms-correlation-request-id": [ + "9f89b226-38de-4fa5-ac98-893ef1c54588" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175228Z:9f89b226-38de-4fa5-ac98-893ef1c54588" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:27 GMT" + ], + "Location": [ + "https://api-current.resources.windows-int.net/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 201 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"name\": \"DP_WikipediaSamplePipeline\",\r\n \"properties\": {\r\n \"description\": \"DP Wikipedia Sample Pipelines\",\r\n \"activities\": [\r\n {\r\n \"name\": \"WikiHiveActivity\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_WikipediaClickEvents\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"linkedServiceName\": \"HDILinkedService\",\r\n \"type\": \"HDInsightActivity\",\r\n \"transformation\": {\r\n \"type\": \"Hive\",\r\n \"script\": \"$$Text.Format('DROP TABLE IF EXISTS values; CREATE EXTERNAL TABLE values (projectname string, title string, pageviews string, bytestransfer string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\' \\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledatain\\\\'; DROP TABLE IF EXISTS stats; CREATE EXTERNAL TABLE stats (slicetimestamp string, projectname string, pageviews string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\',\\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledataout/{0:yyyyMMddHH}\\\\'; INSERT OVERWRITE TABLE Stats SELECT slicetimestamp, projectname, sum(pageviews) FROM (SELECT \\\\'2014/02/25\\\\' AS slicetimestamp, CASE WHEN size(split(projectname, \\\\'[.]\\\\'))=1 THEN \\\\'wikipedia\\\\' ELSE CASE split(projectname, \\\\'[.]\\\\')[1] WHEN \\\\'b\\\\' THEN \\\\'wikibooks\\\\' WHEN \\\\'d\\\\' THEN \\\\'wiktionary\\\\' WHEN \\\\'m\\\\' THEN \\\\'wikimedia\\\\' WHEN \\\\'mv\\\\' THEN \\\\'wikipedia mobile\\\\' WHEN \\\\'n\\\\' THEN \\\\'wikinews\\\\' WHEN \\\\'q\\\\' THEN \\\\'wikiquote\\\\' WHEN \\\\'s\\\\' THEN \\\\'wikisource\\\\' WHEN \\\\'v\\\\' THEN \\\\'wikiversity\\\\' WHEN \\\\'w\\\\' THEN \\\\'mediawiki\\\\' ELSE \\\\'n/a\\\\' END END AS projectname, pageviews FROM values) A GROUP BY slicetimestamp, projectname;', SliceStart)\"\r\n },\r\n \"policy\": {\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2,\r\n \"timeout\": \"01:00:00\"\r\n }\r\n },\r\n {\r\n \"name\": \"BlobToSqlCopyActivity\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_WikiAggregatedData\"\r\n }\r\n ],\r\n \"linkedServiceName\": \"HDILinkedService\",\r\n \"type\": \"CopyActivity\",\r\n \"transformation\": {\r\n \"source\": {\r\n \"type\": \"BlobSource\",\r\n \"blobColumnSeparators\": \",\"\r\n },\r\n \"sink\": {\r\n \"type\": \"SqlSink\",\r\n \"writeBatchSize\": 1000000,\r\n \"writeBatchTimeout\": \"01:00:00\"\r\n }\r\n },\r\n \"policy\": {\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2,\r\n \"timeout\": \"01:00:00\"\r\n }\r\n }\r\n ]\r\n }\r\n}", + "RequestHeaders": { + "Content-Type": [ + "application/json" + ], + "Content-Length": [ + "3199" + ], + "x-ms-client-request-id": [ + "8519f557-5694-488c-b11c-8168eb66d346" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "55" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DP_WikipediaSamplePipeline\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline\",\r\n \"properties\": {\r\n \"description\": \"DP Wikipedia Sample Pipelines\",\r\n \"activities\": [\r\n {\r\n \"type\": \"HDInsightActivity\",\r\n \"transformation\": {\r\n \"script\": \"$$Text.Format('DROP TABLE IF EXISTS values; CREATE EXTERNAL TABLE values (projectname string, title string, pageviews string, bytestransfer string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\' \\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledatain\\\\'; DROP TABLE IF EXISTS stats; CREATE EXTERNAL TABLE stats (slicetimestamp string, projectname string, pageviews string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\',\\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledataout/{0:yyyyMMddHH}\\\\'; INSERT OVERWRITE TABLE Stats SELECT slicetimestamp, projectname, sum(pageviews) FROM (SELECT \\\\'2014/02/25\\\\' AS slicetimestamp, CASE WHEN size(split(projectname, \\\\'[.]\\\\'))=1 THEN \\\\'wikipedia\\\\' ELSE CASE split(projectname, \\\\'[.]\\\\')[1] WHEN \\\\'b\\\\' THEN \\\\'wikibooks\\\\' WHEN \\\\'d\\\\' THEN \\\\'wiktionary\\\\' WHEN \\\\'m\\\\' THEN \\\\'wikimedia\\\\' WHEN \\\\'mv\\\\' THEN \\\\'wikipedia mobile\\\\' WHEN \\\\'n\\\\' THEN \\\\'wikinews\\\\' WHEN \\\\'q\\\\' THEN \\\\'wikiquote\\\\' WHEN \\\\'s\\\\' THEN \\\\'wikisource\\\\' WHEN \\\\'v\\\\' THEN \\\\'wikiversity\\\\' WHEN \\\\'w\\\\' THEN \\\\'mediawiki\\\\' ELSE \\\\'n/a\\\\' END END AS projectname, pageviews FROM values) A GROUP BY slicetimestamp, projectname;', SliceStart)\",\r\n \"type\": \"Hive\"\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_WikipediaClickEvents\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"WikiHiveActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n },\r\n {\r\n \"type\": \"CopyActivity\",\r\n \"transformation\": {\r\n \"source\": {\r\n \"type\": \"BlobSource\",\r\n \"blobColumnSeparators\": \",\"\r\n },\r\n \"sink\": {\r\n \"type\": \"SqlSink\",\r\n \"writeBatchSize\": 1000000,\r\n \"writeBatchTimeout\": \"01:00:00\"\r\n }\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_WikiAggregatedData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"BlobToSqlCopyActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n }\r\n ],\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\",\r\n \"isPaused\": false,\r\n \"runtimeInfo\": {\r\n \"deploymentTime\": \"2014-10-21T17:52:41.1185199Z\",\r\n \"activityPeriods\": {\r\n \"blobToSqlCopyActivity\": {\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\"\r\n },\r\n \"wikiHiveActivity\": {\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\"\r\n }\r\n }\r\n },\r\n \"provisioningState\": \"PendingUpdate\",\r\n \"hubName\": \"default\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "2773" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "7bf32afc-144c-4def-86af-c7fca017aae2" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "11970" + ], + "x-ms-correlation-request-id": [ + "b10c2091-cf8d-4061-8c43-dda801154318" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175241Z:b10c2091-cf8d-4061-8c43-dda801154318" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:40 GMT" + ], + "Location": [ + "https://api-current.resources.windows-int.net/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 201 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "e11185b6-9d07-4fc2-9f07-bccd93c4ac77" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "47" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DP_WikipediaSamplePipeline\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline\",\r\n \"properties\": {\r\n \"description\": \"DP Wikipedia Sample Pipelines\",\r\n \"activities\": [\r\n {\r\n \"type\": \"HDInsightActivity\",\r\n \"transformation\": {\r\n \"script\": \"$$Text.Format('DROP TABLE IF EXISTS values; CREATE EXTERNAL TABLE values (projectname string, title string, pageviews string, bytestransfer string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\' \\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledatain\\\\'; DROP TABLE IF EXISTS stats; CREATE EXTERNAL TABLE stats (slicetimestamp string, projectname string, pageviews string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\',\\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledataout/{0:yyyyMMddHH}\\\\'; INSERT OVERWRITE TABLE Stats SELECT slicetimestamp, projectname, sum(pageviews) FROM (SELECT \\\\'2014/02/25\\\\' AS slicetimestamp, CASE WHEN size(split(projectname, \\\\'[.]\\\\'))=1 THEN \\\\'wikipedia\\\\' ELSE CASE split(projectname, \\\\'[.]\\\\')[1] WHEN \\\\'b\\\\' THEN \\\\'wikibooks\\\\' WHEN \\\\'d\\\\' THEN \\\\'wiktionary\\\\' WHEN \\\\'m\\\\' THEN \\\\'wikimedia\\\\' WHEN \\\\'mv\\\\' THEN \\\\'wikipedia mobile\\\\' WHEN \\\\'n\\\\' THEN \\\\'wikinews\\\\' WHEN \\\\'q\\\\' THEN \\\\'wikiquote\\\\' WHEN \\\\'s\\\\' THEN \\\\'wikisource\\\\' WHEN \\\\'v\\\\' THEN \\\\'wikiversity\\\\' WHEN \\\\'w\\\\' THEN \\\\'mediawiki\\\\' ELSE \\\\'n/a\\\\' END END AS projectname, pageviews FROM values) A GROUP BY slicetimestamp, projectname;', SliceStart)\",\r\n \"type\": \"Hive\"\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_WikipediaClickEvents\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"WikiHiveActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n },\r\n {\r\n \"type\": \"CopyActivity\",\r\n \"transformation\": {\r\n \"source\": {\r\n \"type\": \"BlobSource\",\r\n \"blobColumnSeparators\": \",\"\r\n },\r\n \"sink\": {\r\n \"type\": \"SqlSink\",\r\n \"writeBatchSize\": 1000000,\r\n \"writeBatchTimeout\": \"01:00:00\"\r\n }\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_WikiAggregatedData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"BlobToSqlCopyActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n }\r\n ],\r\n \"isPaused\": false,\r\n \"runtimeInfo\": {\r\n \"deploymentTime\": \"2014-10-21T17:52:27.8728433Z\",\r\n \"activityPeriods\": {\r\n \"wikiHiveActivity\": {\r\n \"start\": \"1601-01-01T00:00:00Z\",\r\n \"end\": \"1601-01-01T00:00:00Z\"\r\n },\r\n \"blobToSqlCopyActivity\": {\r\n \"start\": \"1601-01-01T00:00:00Z\",\r\n \"end\": \"1601-01-01T00:00:00Z\"\r\n }\r\n }\r\n },\r\n \"provisioningState\": \"PendingCreation\",\r\n \"hubName\": \"default\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "2715" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "59a2fbdd-1903-4859-8fb2-b69693275b05" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799926" + ], + "x-ms-correlation-request-id": [ + "199815b4-a2f2-46c1-97ad-1b5f30cf77d4" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175229Z:199815b4-a2f2-46c1-97ad-1b5f30cf77d4" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:29 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "1206c84d-ae20-486d-a676-42c2454e47c7" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "47" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DP_WikipediaSamplePipeline\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline\",\r\n \"properties\": {\r\n \"description\": \"DP Wikipedia Sample Pipelines\",\r\n \"activities\": [\r\n {\r\n \"type\": \"HDInsightActivity\",\r\n \"transformation\": {\r\n \"script\": \"$$Text.Format('DROP TABLE IF EXISTS values; CREATE EXTERNAL TABLE values (projectname string, title string, pageviews string, bytestransfer string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\' \\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledatain\\\\'; DROP TABLE IF EXISTS stats; CREATE EXTERNAL TABLE stats (slicetimestamp string, projectname string, pageviews string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\',\\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledataout/{0:yyyyMMddHH}\\\\'; INSERT OVERWRITE TABLE Stats SELECT slicetimestamp, projectname, sum(pageviews) FROM (SELECT \\\\'2014/02/25\\\\' AS slicetimestamp, CASE WHEN size(split(projectname, \\\\'[.]\\\\'))=1 THEN \\\\'wikipedia\\\\' ELSE CASE split(projectname, \\\\'[.]\\\\')[1] WHEN \\\\'b\\\\' THEN \\\\'wikibooks\\\\' WHEN \\\\'d\\\\' THEN \\\\'wiktionary\\\\' WHEN \\\\'m\\\\' THEN \\\\'wikimedia\\\\' WHEN \\\\'mv\\\\' THEN \\\\'wikipedia mobile\\\\' WHEN \\\\'n\\\\' THEN \\\\'wikinews\\\\' WHEN \\\\'q\\\\' THEN \\\\'wikiquote\\\\' WHEN \\\\'s\\\\' THEN \\\\'wikisource\\\\' WHEN \\\\'v\\\\' THEN \\\\'wikiversity\\\\' WHEN \\\\'w\\\\' THEN \\\\'mediawiki\\\\' ELSE \\\\'n/a\\\\' END END AS projectname, pageviews FROM values) A GROUP BY slicetimestamp, projectname;', SliceStart)\",\r\n \"type\": \"Hive\"\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_WikipediaClickEvents\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"WikiHiveActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n },\r\n {\r\n \"type\": \"CopyActivity\",\r\n \"transformation\": {\r\n \"source\": {\r\n \"type\": \"BlobSource\",\r\n \"blobColumnSeparators\": \",\"\r\n },\r\n \"sink\": {\r\n \"type\": \"SqlSink\",\r\n \"writeBatchSize\": 1000000,\r\n \"writeBatchTimeout\": \"01:00:00\"\r\n }\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_WikiAggregatedData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"BlobToSqlCopyActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n }\r\n ],\r\n \"isPaused\": false,\r\n \"runtimeInfo\": {\r\n \"deploymentTime\": \"2014-10-21T17:52:27.8728433Z\",\r\n \"activityPeriods\": {\r\n \"wikiHiveActivity\": {\r\n \"start\": \"1601-01-01T00:00:00Z\",\r\n \"end\": \"1601-01-01T00:00:00Z\"\r\n },\r\n \"blobToSqlCopyActivity\": {\r\n \"start\": \"1601-01-01T00:00:00Z\",\r\n \"end\": \"1601-01-01T00:00:00Z\"\r\n }\r\n }\r\n },\r\n \"provisioningState\": \"PendingCreation\",\r\n \"hubName\": \"default\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "2715" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "4a418971-acf5-418e-8df7-db0610379df6" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799925" + ], + "x-ms-correlation-request-id": [ + "4e84e00c-f525-443a-9032-1e22622bc06a" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175234Z:4e84e00c-f525-443a-9032-1e22622bc06a" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:34 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "a7adb996-1e39-4e7a-b6b2-0721c471bd23" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "47" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DP_WikipediaSamplePipeline\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline\",\r\n \"properties\": {\r\n \"description\": \"DP Wikipedia Sample Pipelines\",\r\n \"activities\": [\r\n {\r\n \"type\": \"HDInsightActivity\",\r\n \"transformation\": {\r\n \"script\": \"$$Text.Format('DROP TABLE IF EXISTS values; CREATE EXTERNAL TABLE values (projectname string, title string, pageviews string, bytestransfer string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\' \\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledatain\\\\'; DROP TABLE IF EXISTS stats; CREATE EXTERNAL TABLE stats (slicetimestamp string, projectname string, pageviews string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\',\\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledataout/{0:yyyyMMddHH}\\\\'; INSERT OVERWRITE TABLE Stats SELECT slicetimestamp, projectname, sum(pageviews) FROM (SELECT \\\\'2014/02/25\\\\' AS slicetimestamp, CASE WHEN size(split(projectname, \\\\'[.]\\\\'))=1 THEN \\\\'wikipedia\\\\' ELSE CASE split(projectname, \\\\'[.]\\\\')[1] WHEN \\\\'b\\\\' THEN \\\\'wikibooks\\\\' WHEN \\\\'d\\\\' THEN \\\\'wiktionary\\\\' WHEN \\\\'m\\\\' THEN \\\\'wikimedia\\\\' WHEN \\\\'mv\\\\' THEN \\\\'wikipedia mobile\\\\' WHEN \\\\'n\\\\' THEN \\\\'wikinews\\\\' WHEN \\\\'q\\\\' THEN \\\\'wikiquote\\\\' WHEN \\\\'s\\\\' THEN \\\\'wikisource\\\\' WHEN \\\\'v\\\\' THEN \\\\'wikiversity\\\\' WHEN \\\\'w\\\\' THEN \\\\'mediawiki\\\\' ELSE \\\\'n/a\\\\' END END AS projectname, pageviews FROM values) A GROUP BY slicetimestamp, projectname;', SliceStart)\",\r\n \"type\": \"Hive\"\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_WikipediaClickEvents\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"WikiHiveActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n },\r\n {\r\n \"type\": \"CopyActivity\",\r\n \"transformation\": {\r\n \"source\": {\r\n \"type\": \"BlobSource\",\r\n \"blobColumnSeparators\": \",\"\r\n },\r\n \"sink\": {\r\n \"type\": \"SqlSink\",\r\n \"writeBatchSize\": 1000000,\r\n \"writeBatchTimeout\": \"01:00:00\"\r\n }\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_WikiAggregatedData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"BlobToSqlCopyActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n }\r\n ],\r\n \"isPaused\": false,\r\n \"runtimeInfo\": {\r\n \"deploymentTime\": \"2014-10-21T17:52:27.8728433Z\",\r\n \"activityPeriods\": {\r\n \"wikiHiveActivity\": {\r\n \"start\": \"1601-01-01T00:00:00Z\",\r\n \"end\": \"1601-01-01T00:00:00Z\"\r\n },\r\n \"blobToSqlCopyActivity\": {\r\n \"start\": \"1601-01-01T00:00:00Z\",\r\n \"end\": \"1601-01-01T00:00:00Z\"\r\n }\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\",\r\n \"hubName\": \"default\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "2709" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "762d60f5-898c-4d2c-9448-73e5d83a2d0a" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799924" + ], + "x-ms-correlation-request-id": [ + "e774a1ed-0ddf-4991-987d-4a5d70fd3a45" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175239Z:e774a1ed-0ddf-4991-987d-4a5d70fd3a45" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:39 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "2041b245-becf-4a5a-ad91-f3846829156c" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "55" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DP_WikipediaSamplePipeline\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline\",\r\n \"properties\": {\r\n \"description\": \"DP Wikipedia Sample Pipelines\",\r\n \"activities\": [\r\n {\r\n \"type\": \"HDInsightActivity\",\r\n \"transformation\": {\r\n \"script\": \"$$Text.Format('DROP TABLE IF EXISTS values; CREATE EXTERNAL TABLE values (projectname string, title string, pageviews string, bytestransfer string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\' \\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledatain\\\\'; DROP TABLE IF EXISTS stats; CREATE EXTERNAL TABLE stats (slicetimestamp string, projectname string, pageviews string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\',\\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledataout/{0:yyyyMMddHH}\\\\'; INSERT OVERWRITE TABLE Stats SELECT slicetimestamp, projectname, sum(pageviews) FROM (SELECT \\\\'2014/02/25\\\\' AS slicetimestamp, CASE WHEN size(split(projectname, \\\\'[.]\\\\'))=1 THEN \\\\'wikipedia\\\\' ELSE CASE split(projectname, \\\\'[.]\\\\')[1] WHEN \\\\'b\\\\' THEN \\\\'wikibooks\\\\' WHEN \\\\'d\\\\' THEN \\\\'wiktionary\\\\' WHEN \\\\'m\\\\' THEN \\\\'wikimedia\\\\' WHEN \\\\'mv\\\\' THEN \\\\'wikipedia mobile\\\\' WHEN \\\\'n\\\\' THEN \\\\'wikinews\\\\' WHEN \\\\'q\\\\' THEN \\\\'wikiquote\\\\' WHEN \\\\'s\\\\' THEN \\\\'wikisource\\\\' WHEN \\\\'v\\\\' THEN \\\\'wikiversity\\\\' WHEN \\\\'w\\\\' THEN \\\\'mediawiki\\\\' ELSE \\\\'n/a\\\\' END END AS projectname, pageviews FROM values) A GROUP BY slicetimestamp, projectname;', SliceStart)\",\r\n \"type\": \"Hive\"\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_WikipediaClickEvents\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"WikiHiveActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n },\r\n {\r\n \"type\": \"CopyActivity\",\r\n \"transformation\": {\r\n \"source\": {\r\n \"type\": \"BlobSource\",\r\n \"blobColumnSeparators\": \",\"\r\n },\r\n \"sink\": {\r\n \"type\": \"SqlSink\",\r\n \"writeBatchSize\": 1000000,\r\n \"writeBatchTimeout\": \"01:00:00\"\r\n }\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_WikiAggregatedData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"BlobToSqlCopyActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n }\r\n ],\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\",\r\n \"isPaused\": false,\r\n \"runtimeInfo\": {\r\n \"deploymentTime\": \"2014-10-21T17:52:41.1185199Z\",\r\n \"activityPeriods\": {\r\n \"blobToSqlCopyActivity\": {\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\"\r\n },\r\n \"wikiHiveActivity\": {\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\"\r\n }\r\n }\r\n },\r\n \"provisioningState\": \"PendingUpdate\",\r\n \"hubName\": \"default\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "2773" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "78470dc4-6461-411c-a9cc-8f3f7c2ed037" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799921" + ], + "x-ms-correlation-request-id": [ + "09ca72ec-5ce5-4f1c-8cd7-18019b94e009" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175241Z:09ca72ec-5ce5-4f1c-8cd7-18019b94e009" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:41 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "d15402ed-c0a2-447d-a349-c8baa7681e82" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "55" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DP_WikipediaSamplePipeline\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline\",\r\n \"properties\": {\r\n \"description\": \"DP Wikipedia Sample Pipelines\",\r\n \"activities\": [\r\n {\r\n \"type\": \"HDInsightActivity\",\r\n \"transformation\": {\r\n \"script\": \"$$Text.Format('DROP TABLE IF EXISTS values; CREATE EXTERNAL TABLE values (projectname string, title string, pageviews string, bytestransfer string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\' \\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledatain\\\\'; DROP TABLE IF EXISTS stats; CREATE EXTERNAL TABLE stats (slicetimestamp string, projectname string, pageviews string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\',\\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledataout/{0:yyyyMMddHH}\\\\'; INSERT OVERWRITE TABLE Stats SELECT slicetimestamp, projectname, sum(pageviews) FROM (SELECT \\\\'2014/02/25\\\\' AS slicetimestamp, CASE WHEN size(split(projectname, \\\\'[.]\\\\'))=1 THEN \\\\'wikipedia\\\\' ELSE CASE split(projectname, \\\\'[.]\\\\')[1] WHEN \\\\'b\\\\' THEN \\\\'wikibooks\\\\' WHEN \\\\'d\\\\' THEN \\\\'wiktionary\\\\' WHEN \\\\'m\\\\' THEN \\\\'wikimedia\\\\' WHEN \\\\'mv\\\\' THEN \\\\'wikipedia mobile\\\\' WHEN \\\\'n\\\\' THEN \\\\'wikinews\\\\' WHEN \\\\'q\\\\' THEN \\\\'wikiquote\\\\' WHEN \\\\'s\\\\' THEN \\\\'wikisource\\\\' WHEN \\\\'v\\\\' THEN \\\\'wikiversity\\\\' WHEN \\\\'w\\\\' THEN \\\\'mediawiki\\\\' ELSE \\\\'n/a\\\\' END END AS projectname, pageviews FROM values) A GROUP BY slicetimestamp, projectname;', SliceStart)\",\r\n \"type\": \"Hive\"\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_WikipediaClickEvents\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"WikiHiveActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n },\r\n {\r\n \"type\": \"CopyActivity\",\r\n \"transformation\": {\r\n \"source\": {\r\n \"type\": \"BlobSource\",\r\n \"blobColumnSeparators\": \",\"\r\n },\r\n \"sink\": {\r\n \"type\": \"SqlSink\",\r\n \"writeBatchSize\": 1000000,\r\n \"writeBatchTimeout\": \"01:00:00\"\r\n }\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_WikiAggregatedData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"BlobToSqlCopyActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n }\r\n ],\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\",\r\n \"isPaused\": false,\r\n \"runtimeInfo\": {\r\n \"deploymentTime\": \"2014-10-21T17:52:41.1185199Z\",\r\n \"activityPeriods\": {\r\n \"blobToSqlCopyActivity\": {\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\"\r\n },\r\n \"wikiHiveActivity\": {\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\"\r\n }\r\n }\r\n },\r\n \"provisioningState\": \"PendingUpdate\",\r\n \"hubName\": \"default\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "2773" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "b2d03236-2183-4ca7-a5b2-6c99ac151bef" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799920" + ], + "x-ms-correlation-request-id": [ + "0cda9be7-84f3-4597-b49f-43f328286e30" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175246Z:0cda9be7-84f3-4597-b49f-43f328286e30" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:46 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "860a74f0-85c5-43ce-ab66-4000e7a6e8f7" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "55" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DP_WikipediaSamplePipeline\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline\",\r\n \"properties\": {\r\n \"description\": \"DP Wikipedia Sample Pipelines\",\r\n \"activities\": [\r\n {\r\n \"type\": \"HDInsightActivity\",\r\n \"transformation\": {\r\n \"script\": \"$$Text.Format('DROP TABLE IF EXISTS values; CREATE EXTERNAL TABLE values (projectname string, title string, pageviews string, bytestransfer string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\' \\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledatain\\\\'; DROP TABLE IF EXISTS stats; CREATE EXTERNAL TABLE stats (slicetimestamp string, projectname string, pageviews string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\',\\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledataout/{0:yyyyMMddHH}\\\\'; INSERT OVERWRITE TABLE Stats SELECT slicetimestamp, projectname, sum(pageviews) FROM (SELECT \\\\'2014/02/25\\\\' AS slicetimestamp, CASE WHEN size(split(projectname, \\\\'[.]\\\\'))=1 THEN \\\\'wikipedia\\\\' ELSE CASE split(projectname, \\\\'[.]\\\\')[1] WHEN \\\\'b\\\\' THEN \\\\'wikibooks\\\\' WHEN \\\\'d\\\\' THEN \\\\'wiktionary\\\\' WHEN \\\\'m\\\\' THEN \\\\'wikimedia\\\\' WHEN \\\\'mv\\\\' THEN \\\\'wikipedia mobile\\\\' WHEN \\\\'n\\\\' THEN \\\\'wikinews\\\\' WHEN \\\\'q\\\\' THEN \\\\'wikiquote\\\\' WHEN \\\\'s\\\\' THEN \\\\'wikisource\\\\' WHEN \\\\'v\\\\' THEN \\\\'wikiversity\\\\' WHEN \\\\'w\\\\' THEN \\\\'mediawiki\\\\' ELSE \\\\'n/a\\\\' END END AS projectname, pageviews FROM values) A GROUP BY slicetimestamp, projectname;', SliceStart)\",\r\n \"type\": \"Hive\"\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_WikipediaClickEvents\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"WikiHiveActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n },\r\n {\r\n \"type\": \"CopyActivity\",\r\n \"transformation\": {\r\n \"source\": {\r\n \"type\": \"BlobSource\",\r\n \"blobColumnSeparators\": \",\"\r\n },\r\n \"sink\": {\r\n \"type\": \"SqlSink\",\r\n \"writeBatchSize\": 1000000,\r\n \"writeBatchTimeout\": \"01:00:00\"\r\n }\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_WikiAggregatedData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"BlobToSqlCopyActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n }\r\n ],\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\",\r\n \"isPaused\": false,\r\n \"runtimeInfo\": {\r\n \"deploymentTime\": \"2014-10-21T17:52:41.1185199Z\",\r\n \"activityPeriods\": {\r\n \"blobToSqlCopyActivity\": {\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\"\r\n },\r\n \"wikiHiveActivity\": {\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\"\r\n }\r\n }\r\n },\r\n \"provisioningState\": \"PendingUpdate\",\r\n \"hubName\": \"default\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "2773" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "82007a50-6732-43c3-9fcf-cc121d7f5a4c" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799919" + ], + "x-ms-correlation-request-id": [ + "228140f0-54f8-4c7f-ad47-f215b7f44e65" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175251Z:228140f0-54f8-4c7f-ad47-f215b7f44e65" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:51 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "a72d610d-e0fa-4e96-9dec-37e8521ca591" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "55" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DP_WikipediaSamplePipeline\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline\",\r\n \"properties\": {\r\n \"description\": \"DP Wikipedia Sample Pipelines\",\r\n \"activities\": [\r\n {\r\n \"type\": \"HDInsightActivity\",\r\n \"transformation\": {\r\n \"script\": \"$$Text.Format('DROP TABLE IF EXISTS values; CREATE EXTERNAL TABLE values (projectname string, title string, pageviews string, bytestransfer string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\' \\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledatain\\\\'; DROP TABLE IF EXISTS stats; CREATE EXTERNAL TABLE stats (slicetimestamp string, projectname string, pageviews string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\',\\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledataout/{0:yyyyMMddHH}\\\\'; INSERT OVERWRITE TABLE Stats SELECT slicetimestamp, projectname, sum(pageviews) FROM (SELECT \\\\'2014/02/25\\\\' AS slicetimestamp, CASE WHEN size(split(projectname, \\\\'[.]\\\\'))=1 THEN \\\\'wikipedia\\\\' ELSE CASE split(projectname, \\\\'[.]\\\\')[1] WHEN \\\\'b\\\\' THEN \\\\'wikibooks\\\\' WHEN \\\\'d\\\\' THEN \\\\'wiktionary\\\\' WHEN \\\\'m\\\\' THEN \\\\'wikimedia\\\\' WHEN \\\\'mv\\\\' THEN \\\\'wikipedia mobile\\\\' WHEN \\\\'n\\\\' THEN \\\\'wikinews\\\\' WHEN \\\\'q\\\\' THEN \\\\'wikiquote\\\\' WHEN \\\\'s\\\\' THEN \\\\'wikisource\\\\' WHEN \\\\'v\\\\' THEN \\\\'wikiversity\\\\' WHEN \\\\'w\\\\' THEN \\\\'mediawiki\\\\' ELSE \\\\'n/a\\\\' END END AS projectname, pageviews FROM values) A GROUP BY slicetimestamp, projectname;', SliceStart)\",\r\n \"type\": \"Hive\"\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_WikipediaClickEvents\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"WikiHiveActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n },\r\n {\r\n \"type\": \"CopyActivity\",\r\n \"transformation\": {\r\n \"source\": {\r\n \"type\": \"BlobSource\",\r\n \"blobColumnSeparators\": \",\"\r\n },\r\n \"sink\": {\r\n \"type\": \"SqlSink\",\r\n \"writeBatchSize\": 1000000,\r\n \"writeBatchTimeout\": \"01:00:00\"\r\n }\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_WikiAggregatedData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"BlobToSqlCopyActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n }\r\n ],\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\",\r\n \"isPaused\": false,\r\n \"runtimeInfo\": {\r\n \"deploymentTime\": \"2014-10-21T17:52:41.1185199Z\",\r\n \"activityPeriods\": {\r\n \"blobToSqlCopyActivity\": {\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\"\r\n },\r\n \"wikiHiveActivity\": {\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\"\r\n }\r\n }\r\n },\r\n \"provisioningState\": \"PendingUpdate\",\r\n \"hubName\": \"default\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "2773" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "69eac134-690a-462d-acbd-05669eb77298" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799918" + ], + "x-ms-correlation-request-id": [ + "e3001d1f-aee3-45ee-8cc1-0babcfb0f308" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175257Z:e3001d1f-aee3-45ee-8cc1-0babcfb0f308" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:56 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "274a7e25-f8bb-45c0-9ad8-5f720b26444a" + ], + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "55" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DP_WikipediaSamplePipeline\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline\",\r\n \"properties\": {\r\n \"description\": \"DP Wikipedia Sample Pipelines\",\r\n \"activities\": [\r\n {\r\n \"type\": \"HDInsightActivity\",\r\n \"transformation\": {\r\n \"script\": \"$$Text.Format('DROP TABLE IF EXISTS values; CREATE EXTERNAL TABLE values (projectname string, title string, pageviews string, bytestransfer string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\' \\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledatain\\\\'; DROP TABLE IF EXISTS stats; CREATE EXTERNAL TABLE stats (slicetimestamp string, projectname string, pageviews string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\',\\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledataout/{0:yyyyMMddHH}\\\\'; INSERT OVERWRITE TABLE Stats SELECT slicetimestamp, projectname, sum(pageviews) FROM (SELECT \\\\'2014/02/25\\\\' AS slicetimestamp, CASE WHEN size(split(projectname, \\\\'[.]\\\\'))=1 THEN \\\\'wikipedia\\\\' ELSE CASE split(projectname, \\\\'[.]\\\\')[1] WHEN \\\\'b\\\\' THEN \\\\'wikibooks\\\\' WHEN \\\\'d\\\\' THEN \\\\'wiktionary\\\\' WHEN \\\\'m\\\\' THEN \\\\'wikimedia\\\\' WHEN \\\\'mv\\\\' THEN \\\\'wikipedia mobile\\\\' WHEN \\\\'n\\\\' THEN \\\\'wikinews\\\\' WHEN \\\\'q\\\\' THEN \\\\'wikiquote\\\\' WHEN \\\\'s\\\\' THEN \\\\'wikisource\\\\' WHEN \\\\'v\\\\' THEN \\\\'wikiversity\\\\' WHEN \\\\'w\\\\' THEN \\\\'mediawiki\\\\' ELSE \\\\'n/a\\\\' END END AS projectname, pageviews FROM values) A GROUP BY slicetimestamp, projectname;', SliceStart)\",\r\n \"type\": \"Hive\"\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_WikipediaClickEvents\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"WikiHiveActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n },\r\n {\r\n \"type\": \"CopyActivity\",\r\n \"transformation\": {\r\n \"source\": {\r\n \"type\": \"BlobSource\",\r\n \"blobColumnSeparators\": \",\"\r\n },\r\n \"sink\": {\r\n \"type\": \"SqlSink\",\r\n \"writeBatchSize\": 1000000,\r\n \"writeBatchTimeout\": \"01:00:00\"\r\n }\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_WikiAggregatedData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"BlobToSqlCopyActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n }\r\n ],\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\",\r\n \"isPaused\": false,\r\n \"runtimeInfo\": {\r\n \"deploymentTime\": \"2014-10-21T17:52:41.1185199Z\",\r\n \"activityPeriods\": {\r\n \"blobToSqlCopyActivity\": {\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\"\r\n },\r\n \"wikiHiveActivity\": {\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\"\r\n }\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\",\r\n \"hubName\": \"default\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "2769" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "d92832cd-9245-4a4c-abc2-56bc508be8ee" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799917" + ], + "x-ms-correlation-request-id": [ + "dd5ac4d1-21be-434d-aa46-be5444fd3cbd" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175302Z:dd5ac4d1-21be-434d-aa46-be5444fd3cbd" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:53:02 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "5ba7cd6d-ac4e-41ac-96b5-4c7867b8765e" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DP_WikipediaSamplePipeline\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline\",\r\n \"properties\": {\r\n \"description\": \"DP Wikipedia Sample Pipelines\",\r\n \"activities\": [\r\n {\r\n \"type\": \"HDInsightActivity\",\r\n \"transformation\": {\r\n \"script\": \"$$Text.Format('DROP TABLE IF EXISTS values; CREATE EXTERNAL TABLE values (projectname string, title string, pageviews string, bytestransfer string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\' \\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledatain\\\\'; DROP TABLE IF EXISTS stats; CREATE EXTERNAL TABLE stats (slicetimestamp string, projectname string, pageviews string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\',\\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledataout/{0:yyyyMMddHH}\\\\'; INSERT OVERWRITE TABLE Stats SELECT slicetimestamp, projectname, sum(pageviews) FROM (SELECT \\\\'2014/02/25\\\\' AS slicetimestamp, CASE WHEN size(split(projectname, \\\\'[.]\\\\'))=1 THEN \\\\'wikipedia\\\\' ELSE CASE split(projectname, \\\\'[.]\\\\')[1] WHEN \\\\'b\\\\' THEN \\\\'wikibooks\\\\' WHEN \\\\'d\\\\' THEN \\\\'wiktionary\\\\' WHEN \\\\'m\\\\' THEN \\\\'wikimedia\\\\' WHEN \\\\'mv\\\\' THEN \\\\'wikipedia mobile\\\\' WHEN \\\\'n\\\\' THEN \\\\'wikinews\\\\' WHEN \\\\'q\\\\' THEN \\\\'wikiquote\\\\' WHEN \\\\'s\\\\' THEN \\\\'wikisource\\\\' WHEN \\\\'v\\\\' THEN \\\\'wikiversity\\\\' WHEN \\\\'w\\\\' THEN \\\\'mediawiki\\\\' ELSE \\\\'n/a\\\\' END END AS projectname, pageviews FROM values) A GROUP BY slicetimestamp, projectname;', SliceStart)\",\r\n \"type\": \"Hive\"\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_WikipediaClickEvents\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"WikiHiveActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n },\r\n {\r\n \"type\": \"CopyActivity\",\r\n \"transformation\": {\r\n \"source\": {\r\n \"type\": \"BlobSource\",\r\n \"blobColumnSeparators\": \",\"\r\n },\r\n \"sink\": {\r\n \"type\": \"SqlSink\",\r\n \"writeBatchSize\": 1000000,\r\n \"writeBatchTimeout\": \"01:00:00\"\r\n }\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_WikiAggregatedData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"BlobToSqlCopyActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n }\r\n ],\r\n \"isPaused\": false,\r\n \"runtimeInfo\": {\r\n \"deploymentTime\": \"2014-10-21T17:52:27.8728433Z\",\r\n \"activityPeriods\": {\r\n \"wikiHiveActivity\": {\r\n \"start\": \"1601-01-01T00:00:00Z\",\r\n \"end\": \"1601-01-01T00:00:00Z\"\r\n },\r\n \"blobToSqlCopyActivity\": {\r\n \"start\": \"1601-01-01T00:00:00Z\",\r\n \"end\": \"1601-01-01T00:00:00Z\"\r\n }\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\",\r\n \"hubName\": \"default\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "2709" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "9f469b8c-019c-4d46-bd8d-2c4f6a31d33c" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799923" + ], + "x-ms-correlation-request-id": [ + "a028fc30-efd9-4915-8fdb-587378bc084b" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175239Z:a028fc30-efd9-4915-8fdb-587378bc084b" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:39 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "366fd4c3-2655-4525-a39f-f052b2b48dcc" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ] + }, + "ResponseBody": "{\r\n \"name\": \"DP_WikipediaSamplePipeline\",\r\n \"id\": \"/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline\",\r\n \"properties\": {\r\n \"description\": \"DP Wikipedia Sample Pipelines\",\r\n \"activities\": [\r\n {\r\n \"type\": \"HDInsightActivity\",\r\n \"transformation\": {\r\n \"script\": \"$$Text.Format('DROP TABLE IF EXISTS values; CREATE EXTERNAL TABLE values (projectname string, title string, pageviews string, bytestransfer string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\' \\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledatain\\\\'; DROP TABLE IF EXISTS stats; CREATE EXTERNAL TABLE stats (slicetimestamp string, projectname string, pageviews string) ROW FORMAT DELIMITED FIELDS TERMINATED BY \\\\',\\\\' LINES TERMINATED BY \\\\'10\\\\' STORED AS TEXTFILE LOCATION \\\\'wasb://wikidatagateway@mdpprodstore.blob.core.windows.net/wikisampledataout/{0:yyyyMMddHH}\\\\'; INSERT OVERWRITE TABLE Stats SELECT slicetimestamp, projectname, sum(pageviews) FROM (SELECT \\\\'2014/02/25\\\\' AS slicetimestamp, CASE WHEN size(split(projectname, \\\\'[.]\\\\'))=1 THEN \\\\'wikipedia\\\\' ELSE CASE split(projectname, \\\\'[.]\\\\')[1] WHEN \\\\'b\\\\' THEN \\\\'wikibooks\\\\' WHEN \\\\'d\\\\' THEN \\\\'wiktionary\\\\' WHEN \\\\'m\\\\' THEN \\\\'wikimedia\\\\' WHEN \\\\'mv\\\\' THEN \\\\'wikipedia mobile\\\\' WHEN \\\\'n\\\\' THEN \\\\'wikinews\\\\' WHEN \\\\'q\\\\' THEN \\\\'wikiquote\\\\' WHEN \\\\'s\\\\' THEN \\\\'wikisource\\\\' WHEN \\\\'v\\\\' THEN \\\\'wikiversity\\\\' WHEN \\\\'w\\\\' THEN \\\\'mediawiki\\\\' ELSE \\\\'n/a\\\\' END END AS projectname, pageviews FROM values) A GROUP BY slicetimestamp, projectname;', SliceStart)\",\r\n \"type\": \"Hive\"\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_WikipediaClickEvents\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"WikiHiveActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n },\r\n {\r\n \"type\": \"CopyActivity\",\r\n \"transformation\": {\r\n \"source\": {\r\n \"type\": \"BlobSource\",\r\n \"blobColumnSeparators\": \",\"\r\n },\r\n \"sink\": {\r\n \"type\": \"SqlSink\",\r\n \"writeBatchSize\": 1000000,\r\n \"writeBatchTimeout\": \"01:00:00\"\r\n }\r\n },\r\n \"inputs\": [\r\n {\r\n \"name\": \"DA_CuratedWikiData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"DA_WikiAggregatedData\"\r\n }\r\n ],\r\n \"policy\": {\r\n \"timeout\": \"01:00:00\",\r\n \"concurrency\": 1,\r\n \"executionPriorityOrder\": \"NewestFirst\",\r\n \"retry\": 2\r\n },\r\n \"name\": \"BlobToSqlCopyActivity\",\r\n \"linkedServiceName\": \"HDILinkedService\"\r\n }\r\n ],\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\",\r\n \"isPaused\": false,\r\n \"runtimeInfo\": {\r\n \"deploymentTime\": \"2014-10-21T17:52:41.1185199Z\",\r\n \"activityPeriods\": {\r\n \"blobToSqlCopyActivity\": {\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\"\r\n },\r\n \"wikiHiveActivity\": {\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\"\r\n }\r\n }\r\n },\r\n \"provisioningState\": \"Succeeded\",\r\n \"hubName\": \"default\"\r\n }\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "2769" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "423aa3cc-3ae7-4b7c-b72e-4463ea82cacf" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799916" + ], + "x-ms-correlation-request-id": [ + "9ff42939-2689-46ea-a6a7-9c5bbafca15c" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175302Z:9ff42939-2689-46ea-a6a7-9c5bbafca15c" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:53:02 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline/update?start=2014-09-07T23:00:00.0000000&end=2014-09-08T00:00:00.0000000&autoResolve=false&forceRecalc=false&api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZS91cGRhdGU/c3RhcnQ9MjAxNC0wOS0wN1QyMyUzQTAwJTNBMDAuMDAwMDAwMCZlbmQ9MjAxNC0wOS0wOFQwMCUzQTAwJTNBMDAuMDAwMDAwMCZhdXRvUmVzb2x2ZT1mYWxzZSZmb3JjZVJlY2FsYz1mYWxzZSZhcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "POST", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "ea3a3bf5-5802-4578-8902-c63ffcac7b46" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ] + }, + "ResponseBody": "", + "ResponseHeaders": { + "Content-Length": [ + "0" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "a8a78d8e-8e72-4926-bc0b-654e8dae3571" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "11971" + ], + "x-ms-correlation-request-id": [ + "9dc7c2e5-41a9-4acb-8bfa-90315a035a57" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175240Z:9dc7c2e5-41a9-4acb-8bfa-90315a035a57" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:40 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/tables/DA_WikiAggregatedData/slices?start=2014-09-07T23:00:00.0000000&end=2014-09-08T00:00:00.0000000&api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvdGFibGVzL0RBX1dpa2lBZ2dyZWdhdGVkRGF0YS9zbGljZXM/c3RhcnQ9MjAxNC0wOS0wN1QyMyUzQTAwJTNBMDAuMDAwMDAwMCZlbmQ9MjAxNC0wOS0wOFQwMCUzQTAwJTNBMDAuMDAwMDAwMCZhcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "063bd8f3-501e-4327-aa10-845dc6f3de68" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ] + }, + "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"status\": \"PendingExecution\",\r\n \"latencyStatus\": null,\r\n \"retryCount\": 0,\r\n \"longRetryCount\": 0,\r\n \"discardUntilTimestamp\": null,\r\n \"start\": \"2014-09-07T23:00:00Z\",\r\n \"end\": \"2014-09-08T00:00:00Z\"\r\n }\r\n ]\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "271" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "e4c012a0-58dd-4742-963b-4215134bedcc" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799922" + ], + "x-ms-correlation-request-id": [ + "f290ab3a-7553-451e-af11-f0d2b1fa2545" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175240Z:f290ab3a-7553-451e-af11-f0d2b1fa2545" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:52:40 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "DELETE", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "9523fad3-dd80-4982-938d-fd656ec960fa" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "63" + ] + }, + "ResponseBody": "", + "ResponseHeaders": { + "Content-Length": [ + "0" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "Retry-After": [ + "15" + ], + "x-ms-request-id": [ + "f233c938-c2b0-4969-a085-953d1deaf895" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "11969" + ], + "x-ms-correlation-request-id": [ + "24270f1f-68a8-4526-a261-a93b61ab9980" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175303Z:24270f1f-68a8-4526-a261-a93b61ab9980" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:53:03 GMT" + ], + "Location": [ + "https://api-current.resources.windows-int.net/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline/operationresults/4e599726d83c41df913f9788a3ce1723?api-version=2014-10-01-preview" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 202 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZT9hcGktdmVyc2lvbj0yMDE0LTEwLTAxLXByZXZpZXc=", + "RequestMethod": "DELETE", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "000601c6-16da-405f-9543-a331360b2085" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "67" + ] + }, + "ResponseBody": "", + "ResponseHeaders": { + "Content-Length": [ + "0" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "dff36f65-77f9-4d59-a13c-57df43b4c21d" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "11968" + ], + "x-ms-correlation-request-id": [ + "273a3680-76ab-49c3-8cc9-8f24cf57dd1f" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175318Z:273a3680-76ab-49c3-8cc9-8f24cf57dd1f" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:53:18 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 204 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline/operationresults/4e599726d83c41df913f9788a3ce1723?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZS9vcGVyYXRpb25yZXN1bHRzLzRlNTk5NzI2ZDgzYzQxZGY5MTNmOTc4OGEzY2UxNzIzP2FwaS12ZXJzaW9uPTIwMTQtMTAtMDEtcHJldmlldw==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "63" + ] + }, + "ResponseBody": "", + "ResponseHeaders": { + "Content-Length": [ + "0" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "Retry-After": [ + "15" + ], + "x-ms-request-id": [ + "86424b59-e7f3-473a-ac2a-ed002b5c68e7" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799915" + ], + "x-ms-correlation-request-id": [ + "3b674a39-78d0-4b91-8630-e89b77bc2d8f" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175303Z:3b674a39-78d0-4b91-8630-e89b77bc2d8f" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:53:03 GMT" + ], + "Location": [ + "https://api-current.resources.windows-int.net/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline/operationresults/4e599726d83c41df913f9788a3ce1723?api-version=2014-10-01-preview" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 202 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964/datapipelines/DP_WikipediaSamplePipeline/operationresults/4e599726d83c41df913f9788a3ce1723?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQvZGF0YXBpcGVsaW5lcy9EUF9XaWtpcGVkaWFTYW1wbGVQaXBlbGluZS9vcGVyYXRpb25yZXN1bHRzLzRlNTk5NzI2ZDgzYzQxZGY5MTNmOTc4OGEzY2UxNzIzP2FwaS12ZXJzaW9uPTIwMTQtMTAtMDEtcHJldmlldw==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-version": [ + "2014-10-01-preview" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ], + "client-tracking-id": [ + "63" + ] + }, + "ResponseBody": "", + "ResponseHeaders": { + "Content-Length": [ + "0" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "43c8b153-96ce-4e3e-b1fc-d1f7370e6aba" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "799914" + ], + "x-ms-correlation-request-id": [ + "a3fd8a2a-73e1-4da9-b4a0-1cbec16e0683" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175318Z:a3fd8a2a-73e1-4da9-b4a0-1cbec16e0683" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:53:18 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/8d88dc98-ab0c-4b80-825b-123b2cf8443c/resourcegroups/onesdk9215/providers/Microsoft.DataFactory/datafactories/onesdk3964?api-version=2014-10-01-preview", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvOGQ4OGRjOTgtYWIwYy00YjgwLTgyNWItMTIzYjJjZjg0NDNjL3Jlc291cmNlZ3JvdXBzL29uZXNkazkyMTUvcHJvdmlkZXJzL01pY3Jvc29mdC5EYXRhRmFjdG9yeS9kYXRhZmFjdG9yaWVzL29uZXNkazM5NjQ/YXBpLXZlcnNpb249MjAxNC0xMC0wMS1wcmV2aWV3", + "RequestMethod": "DELETE", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "a196d90d-566a-48b3-8e6e-3ed3223eadc4" + ], + "User-Agent": [ + "Microsoft.Azure.Management.DataFactories.DataPipelineManagementClient/0.9.0.0" + ] + }, + "ResponseBody": "", + "ResponseHeaders": { + "Content-Length": [ + "0" + ], + "Expires": [ + "-1" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-request-id": [ + "96e9ed01-a918-4a50-aacc-bbdd50877c2a" + ], + "x-ms-ratelimit-remaining-subscription-writes": [ + "11967" + ], + "x-ms-correlation-request-id": [ + "8192633a-0e3d-4893-bd08-410cd1ef8abd" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20141021T175319Z:8192633a-0e3d-4893-bd08-410cd1ef8abd" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-cache" + ], + "Date": [ + "Tue, 21 Oct 2014 17:53:19 GMT" + ], + "Server": [ + "Microsoft-IIS/8.0" + ], + "X-Powered-By": [ + "ASP.NET" + ] + }, + "StatusCode": 200 + } + ], + "Names": { + "Test-WikipediaSamplePipeline": [ + "onesdk3964", + "onesdk9215" + ] + }, + "Variables": { + "SubscriptionId": "8d88dc98-ab0c-4b80-825b-123b2cf8443c" + } +} \ No newline at end of file diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Commands.KeyVault.Test.csproj b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Commands.KeyVault.Test.csproj new file mode 100644 index 000000000000..2371d5c7366c --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Commands.KeyVault.Test.csproj @@ -0,0 +1,156 @@ + + + + + Debug + AnyCPU + {080B0477-7E52-4455-90AB-23BD13D1B1CE} + Library + Properties + Microsoft.Azure.Commands.KeyVault.Test + Microsoft.Azure.Commands.KeyVault.Test + v4.5 + 512 + + ..\..\ + true + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + + + true + full + false + bin\Debug + DEBUG;TRACE + prompt + 4 + true + true + false + + + bin\Release + TRACE;SIGN + true + pdbonly + AnyCPU + bin\Release\Common.Test.dll.CodeAnalysisLog.xml + true + GlobalSuppressions.cs + prompt + MinimumRecommendedRules.ruleset + ;$(ProgramFiles)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\Rule Sets + ;$(ProgramFiles)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\FxCop\Rules + true + MSSharedLibKey.snk + true + true + false + + + + ..\..\..\packages\Hydra.HttpRecorder.1.0.5406.28672-prerelease\lib\net45\Microsoft.Azure.Utilities.HttpRecorder.dll + + + False + ..\..\..\packages\Microsoft.IdentityModel.Clients.ActiveDirectory.2.11.10918.1222\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.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 + + + + False + ..\..\..\packages\Microsoft.WindowsAzure.Common.1.4.0\lib\net45\Microsoft.WindowsAzure.Common.dll + + + False + ..\..\..\packages\Microsoft.WindowsAzure.Common.1.4.0\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll + + + ..\..\..\packages\Hydra.SpecTestSupport.1.0.5406.28672-prerelease\lib\net45\Microsoft.WindowsAzure.Testing.dll + + + False + ..\..\..\packages\Moq.4.2.1409.1722\lib\net40\Moq.dll + + + False + ..\..\..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll + + + False + C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35\System.Management.Automation.dll + + + + + + ..\..\..\packages\Microsoft.Net.Http.2.2.28\lib\net45\System.Net.Http.Extensions.dll + + + ..\..\..\packages\Microsoft.Net.Http.2.2.28\lib\net45\System.Net.Http.Primitives.dll + + + + ..\..\..\packages\xunit.1.9.2\lib\net20\xunit.dll + + + + + + True + True + Resource.resx + + + + + + + + + + + Designer + + + + + + {5ee72c53-1720-4309-b54b-5fb79703195f} + Commands.Common + + + {c1bda476-a5cc-4394-914d-48b0ec31a710} + Commands.ScenarioTests.Common + + + {9ffc40cc-a341-4d0c-a25d-dc6b78ef6c94} + Commands.KeyVault + + + + + ResXFileCodeGenerator + Resource.Designer.cs + + + + + + + + + + + + xcopy "$(SolutionDir)Package\$(ConfigurationName)\*.*" $(TargetDir) /Y /E + + \ No newline at end of file diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/MSSharedLibKey.snk b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/MSSharedLibKey.snk new file mode 100644 index 000000000000..695f1b38774e Binary files /dev/null and b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/MSSharedLibKey.snk differ diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Models/UtilitiesTests.cs b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Models/UtilitiesTests.cs new file mode 100644 index 000000000000..888659eaf1ed --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Models/UtilitiesTests.cs @@ -0,0 +1,73 @@ +// ---------------------------------------------------------------------------------- +// +// 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.KeyVault.Client; +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.WebKey; +using Microsoft.WindowsAzure.Commands.ScenarioTest; +using System; +using System.IO; +using System.Linq; +using System.Security.Cryptography; +using System.Security.Cryptography.X509Certificates; +using Xunit; + +namespace Microsoft.Azure.Commands.KeyVault.Test.Models +{ + public class UtilitiesTests + { + [Fact] + [Trait(Category.KeyVault, Category.CheckIn)] + public void ConvertStringAndSecureString() + { + var origStr = "this is test string"; + var secureString = origStr.ConvertToSecureString(); + var convStr = secureString.ConvertToString(); + + Assert.Equal( origStr, convStr ); + } + + [Fact] + [Trait(Category.KeyVault, Category.CheckIn)] + public void GetWebKeyFromByok() + { + Random rnd = new Random(); + byte[] byokBlob = new byte[100]; + rnd.NextBytes(byokBlob); + string tempPath = Path.GetTempFileName() + ".byok"; + File.WriteAllBytes(tempPath, byokBlob); + IWebKeyConverter converters = WebKeyConverterFactory.CreateConverterChain(); + var webKey = converters.ConvertKeyFromFile(new FileInfo(tempPath), null); + + Assert.True(webKey.T.SequenceEqual(byokBlob)); + Assert.Equal(webKey.Kty, JsonWebKeyType.RsaHsm); + } + + [Fact] + [Trait(Category.KeyVault, Category.CheckIn)] + public void GetWebKeyFromCertificate() + { + string password = "123"; + string tempPath = Path.GetTempFileName() + ".pfx"; + File.WriteAllBytes(tempPath, Resource.pfxCert); + + IWebKeyConverter converters = WebKeyConverterFactory.CreateConverterChain(); + var webKey = converters.ConvertKeyFromFile(new FileInfo(tempPath), password.ConvertToSecureString()); + + Assert.True(webKey.HasPrivateKey()); + Assert.True(webKey.IsValid()); + Assert.Equal(webKey.Kty, JsonWebKeyType.Rsa); + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Properties/AssemblyInfo.cs b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Properties/AssemblyInfo.cs new file mode 100644 index 000000000000..f00455fcb2ac --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Properties/AssemblyInfo.cs @@ -0,0 +1,50 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Reflection; +using System.Runtime.CompilerServices; +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( "Microsoft.Azure.Commands.KeyVault.Test" )] +[assembly: AssemblyDescription( "" )] +[assembly: AssemblyConfiguration( "" )] +[assembly: AssemblyCompany( "" )] +[assembly: AssemblyProduct( "Microsoft.Azure.Commands.KeyVault.Test" )] +[assembly: AssemblyCopyright( "Copyright © 2014" )] +[assembly: AssemblyTrademark( "" )] +[assembly: AssemblyCulture( "" )] + +// 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( "92c42e00-f56b-406a-af5d-0d870d454f55" )] + +// 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/KeyVault/Commands.KeyVault.Test/Resource.Designer.cs b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Resource.Designer.cs new file mode 100644 index 000000000000..e6ee07174dcb --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Resource.Designer.cs @@ -0,0 +1,73 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18449 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Microsoft.Azure.Commands.KeyVault.Test { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resource { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resource() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.Azure.Commands.KeyVault.Test.Resource", typeof(Resource).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] pfxCert { + get { + object obj = ResourceManager.GetObject("pfxCert", resourceCulture); + return ((byte[])(obj)); + } + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Resource.resx b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Resource.resx new file mode 100644 index 000000000000..2d24425dc6d2 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Resource.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + Resources\pshtest.pfx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Resources/pshtest.pfx b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Resources/pshtest.pfx new file mode 100644 index 000000000000..fefc03c0d0a0 Binary files /dev/null and b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Resources/pshtest.pfx differ diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/Common.ps1 b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/Common.ps1 new file mode 100644 index 000000000000..35857d0d61ac --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/Common.ps1 @@ -0,0 +1,264 @@ +# ---------------------------------------------------------------------------------- +# +# 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. +# ---------------------------------------------------------------------------------- + +$global:createdKeys = @() +$global:createdSecrets = @() + +$invocationPath = Split-Path $MyInvocation.MyCommand.Definition; + +<# +.SYNOPSIS +Get test key name +#> +function Get-KeyVault([bool] $haspermission=$true) +{ + if ($global:testEnv -eq 'BVT' -and $haspermission) + { + return 'powershellbvt' + } + elseif ($global:testEnv -eq 'BVT') + { + return 'azkmstestbvteu2' + } + elseif ($haspermission) + { + return 'azkmspsprodeus' + } + else + { + return 'azkmspsnopermprodeus' + } +} + +<# +.SYNOPSIS +Get test key name +#> +function Get-KeyName([string]$suffix) +{ + return 'pshtk-' + $global:testns+ '-' + $suffix +} + +<# +.SYNOPSIS +Get test secret name +#> +function Get-SecretName([string]$suffix) +{ + return 'pshts-' + $global:testns+ '-' + $suffix +} + + +<# +.SYNOPSIS +Get key file path to be imported +The name convention of a key file is $filesuffixtest.$filesuffix +#> +function Get-ImportKeyFile([string]$filesuffix, [bool] $exists=$true) +{ + if ($exists) + { + $file = "$filesuffix"+"test.$filesuffix" + } + else + { + $file = "notexist" + ".$filesuffix" + } + + if ($global:testEnv -eq 'BVT') + { + return Join-Path $invocationPath "bvtdata\$file" + } + else + { + return Join-Path $invocationPath "proddata\$file" + } +} + +<# +.SYNOPSIS +Remove log file under a folder +#> +function Cleanup-Log([string]$rootfolder) +{ + Get-ChildItem –Path $rootfolder -Include *.debug_log -Recurse | where {$_.mode -match "a"} | Remove-Item -Force +} + +<# +.SYNOPSIS +Remove log file under a folder +#> +function Move-Log([string]$rootfolder) +{ + $logfolder = Join-Path $rootfolder ("$global:testEnv"+"$global:testns"+"log") + if (Test-Path $logfolder) + { + Cleanup-Log $logfolder + } + else + { + New-Item $logfolder -type directory -force + } + + Get-ChildItem –Path $rootfolder -Include *.debug_log -Recurse | Move-Item -Destination $logfolder +} + + +<# +.SYNOPSIS +Removes all keys starting with the prefix +#> +function Initialize-KeyTest +{ + $keyVault = Get-KeyVault + $keyPattern = Get-KeyName '*' + Get-AzureKeyVaultKey $keyVault | Where-Object {$_.KeyName -like $keyPattern} | Remove-AzureKeyVaultKey -Force -Confirm:$false +} + +<# +.SYNOPSIS +Removes all secrets starting with the prefix +#> +function Initialize-SecretTest +{ + $keyVault = Get-KeyVault + $secretPattern = Get-SecretName '*' + Get-AzureKeyVaultSecret $keyVault | Where-Object {$_.SecretName -like $secretPattern} | Remove-AzureKeyVaultSecret -Force -Confirm:$false +} + + + +<# +.SYNOPSIS +Removes all created keys. +#> +function Cleanup-SingleKeyTest +{ + $global:createdKeys | % { + if ($_ -ne $null) + { + try + { + $keyVault = Get-KeyVault + Write-Debug "Removing key with name $_ in vault $keyVault" + $catch = Remove-AzureKeyVaultKey $keyVault $_ -Force -Confirm:$false + } + catch + { + } + } + } + + $global:createdKeys.Clear() +} + +<# +.SYNOPSIS +Removes all created secrets. +#> +function Cleanup-SingleSecretTest +{ + $global:createdSecrets | % { + if ($_ -ne $null) + { + try + { + $keyVault = Get-KeyVault + Write-Debug "Removing secret with name $_ in vault $keyVault" + $catch = Remove-AzureKeyVaultSecret $keyVault $_ -Force -Confirm:$false + } + catch + { + } + } + } + + $global:createdSecrets.Clear() +} + +<# +.SYNOPSIS +Run a key test, with cleanup. +#> +function Run-KeyTest ([ScriptBlock] $test, [string] $testName) +{ + try + { + Run-Test $test $testName *>> "$testName.debug_log" + } + finally + { + Cleanup-SingleKeyTest *>> "$testName.debug_log" + } +} + +function Run-SecretTest ([ScriptBlock] $test, [string] $testName) +{ + try + { + Run-Test $test $testName *>> "$testName.debug_log" + } + finally + { + Cleanup-SingleSecretTest *>> "$testName.debug_log" + } +} + +function Write-FileReport +{ + $fileName = "$global:testEnv"+"$global:testns"+"Summary.debug_log" + Get-TestRunReport *>> $fileName +} + + +function Get-TestRunReport +{ + + Write-Output "PASSED TEST Count=$global:passedCount" + Write-Output "Total TEST Count=$global:totalCount" + Write-Output "Start Time=$global:startTime" + Write-Output "End Time=$global:endTime" + $elapsed=$global:endTime - $global:startTime + Write-Output "Elapsed=$elapsed" + + Write-Output "Passed TEST`tExecutionTime" + $global:passedTests | % { $extime=$global:times[$_]; Write-Output $_`t$extime } + Write-Output "Failed TEST lists" + $global:failedTests | % { $extime=$global:times[$_]; Write-Output $_`t$extime } +} + +function Write-ConsoleReport +{ + Write-Host + Write-Host -ForegroundColor Green "$global:passedCount / $global:totalCount Key Vault Tests Pass" + Write-Host -ForegroundColor Green "============" + Write-Host -ForegroundColor Green "PASSED TESTS" + Write-Host -ForegroundColor Green "============" + $global:passedTests | % { Write-Host -ForegroundColor Green "PASSED "$_": "($global:times[$_]).ToString()} + Write-Host -ForegroundColor Green "============" + Write-Host + Write-Host -ForegroundColor Red "============" + Write-Host -ForegroundColor Red "FAILED TESTS" + Write-Host -ForegroundColor Red "============" + $global:failedTests | % { Write-Host -ForegroundColor Red "FAILED "$_": "($global:times[$_]).ToString()} + Write-Host -ForegroundColor Red "============" + Write-Host + Write-Host -ForegroundColor Green "=======" + Write-Host -ForegroundColor Green "TIMES" + Write-Host -ForegroundColor Green "=======" + Write-Host + Write-Host -ForegroundColor Green "Start Time: $global:startTime" + Write-Host -ForegroundColor Green "End Time: $global:endTime" + Write-Host -ForegroundColor Green "Elapsed: "($global:endTime - $global:startTime).ToString() +} \ No newline at end of file diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/PSHCommon/Assert.ps1 b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/PSHCommon/Assert.ps1 new file mode 100644 index 000000000000..eb7db0931910 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/PSHCommon/Assert.ps1 @@ -0,0 +1,345 @@ +# ---------------------------------------------------------------------------------- +# +# 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. +# ---------------------------------------------------------------------------------- + +###################### +# +# Validate that the given code block throws the given exception +# +# param [ScriptBlock] $script : The code to test +# param [string] $message : The text of the exception that should be thrown +####################### +function Assert-Throws +{ + param([ScriptBlock] $script, [string] $message) + try + { + &$script + } + catch + { + if ($message -ne "") + { + $actualMessage = $_.Exception.Message + Write-Output ("Caught exception: '$actualMessage'") + + if ($actualMessage -eq $message) + { + return $true; + } + else + { + throw "Expected exception not received: '$message' the actual message is '$actualMessage'"; + } + } + else + { + return $true; + } + } + + throw "No exception occured"; +} + +###################### +# +# Validate that the given code block throws the given exception +# +# param [ScriptBlock] $script : The code to test +# param [ScriptBlock] $compare : Predicate used to determine if the message meets criteria +####################### +function Assert-ThrowsContains +{ + param([ScriptBlock] $script, [string] $compare) + try + { + &$script + } + catch + { + if ($message -ne "") + { + $actualMessage = $_.Exception.Message + Write-Output ("Caught exception: '$actualMessage'") + if ($actualMessage.Contains($compare)) + { + return $true; + } + else + { + throw "Expected exception does not contain expected text '$compare', the actual message is '$actualMessage'"; + } + } + else + { + return $true; + } + } + + throw "No exception occured"; +} + +<# +.SYNOPSIS +Given a list of variable names, assert that all of them are defined +#> +function Assert-Env +{ + param([string[]] $vars) + $tmp = Get-Item env: + $env = @{} + $tmp | % { $env.Add($_.Key, $_.Value)} + $vars | % { Assert-True {$env.ContainsKey($_)} "Environment Variable $_ Is Required. Please set the value before runnign the test"} +} + +################### +# +# Verify that the given scriptblock returns true +# +# param [ScriptBlock] $script : The script to execute +# param [string] $message : The message to return if the given script does not return true +#################### +function Assert-True +{ + param([ScriptBlock] $script, [string] $message) + + if (!$message) + { + $message = "Assertion failed: " + $script + } + + $result = &$script + if (-not $result) + { + Write-Debug "Failure: $message" + throw $message + } + + return $true +} + +################### +# +# Verify that the given scriptblock returns false +# +# param [ScriptBlock] $script : The script to execute +# param [string] $message : The message to return if the given script does not return false +#################### +function Assert-False +{ + param([ScriptBlock] $script, [string] $message) + + if (!$message) + { + $message = "Assertion failed: " + $script + } + + $result = &$script + if ($result) + { + throw $message + } + + return $true +} + +################### +# +# Verify that the given scriptblock returns false +# +# param [ScriptBlock] $script : The script to execute +# param [string] $message : The message to return if the given script does not return false +#################### +function Assert-False +{ + param([ScriptBlock] $script, [string] $message) + + if (!$message) + { + $message = "Assertion failed: " + $script + } + + $result = &$script + if ($result) + { + throw $message + } + + return $true +} + +################### +# +# Verify that the given scriptblock does not return null +# +# param [object] $actual : The actual object +# param [string] $message : The message to return if the given script does not return true +#################### +function Assert-NotNull +{ + param([object] $actual, [string] $message) + + if (!$message) + { + $message = "Assertion failed because the object is null: " + $actual + } + + if ($actual -eq $null) + { + throw $message + } + + return $true +} + +###################### +# +# Assert that the given file exists +# +# param [string] $path : The path to the file to test +# param [string] $message: The text of the exception to throw if the file doesn't exist +###################### +function Assert-Exists +{ + param([string] $path, [string] $message) + return Assert-True {Test-Path $path} $message +} + +################### +# +# Verify that two given objects are equal +# +# param [object] $expected : The expected object +# param [object] $actual : The actual object +# param [string] $message : The message to return if the given objects are not equal +#################### +function Assert-AreEqual +{ + param([object] $expected, [object] $actual, [string] $message) + + if (!$message) + { + $message = "Assertion failed because expected '$expected' does not match actual '$actual'" + } + + if ($expected -ne $actual) + { + throw $message + } + + return $true +} + +################### +# +# Verify that two given arrays are equal +# +# param [array] $expected : The expected array +# param [array] $actual : The actual array +# param [string] $message : The message to return if the given arrays are not equal. +#################### +function Assert-AreEqualArray +{ + param([object] $expected, [object] $actual, [string] $message) + + if (!$message) + { + $message = "Assertion failed because expected '$expected' does not match actual '$actual'" + } + + $diff = Compare-Object $expected $actual -PassThru + + if ($diff -ne $null) + { + throw $message + } + + return $true +} + +################### +# +# Verify that two given objects have equal properties +# +# param [object] $expected : The expected object +# param [object] $actual : The actual object +# param [string] $message : The message to return if the given objects are not equal. +#################### +function Assert-AreEqualObjectProperties +{ + param([object] $expected, [object] $actual, [string] $message) + + $properties = $expected | Get-Member -MemberType "Property" | Select -ExpandProperty Name + $diff = Compare-Object $expected $actual -Property $properties + + if ($diff -ne $null) + { + if (!$message) + { + $message = "Assert failed because the objects don't match. Expected: " + $diff[0] + " Actual: " + $diff[1] + } + + throw $message + } + + return $true +} + +################### +# +# Verify that the given value is null +# +# param [object] $actual : The actual object +# param [string] $message : The message to return if the given object is not null +#################### +function Assert-Null +{ + param([object] $actual, [string] $message) + + if (!$message) + { + $message = "Assertion failed because the object is not null: " + $actual + } + + if ($actual -ne $null) + { + throw $message + } + + return $true +} + +################### +# +# Verify that two given objects are not equal +# +# param [object] $expected : The expected object +# param [object] $actual : The actual object +# param [string] $message : The message to return if the given objects are equal +#################### +function Assert-AreNotEqual +{ + param([object] $expected, [object] $actual, [string] $message) + + if (!$message) + { + $message = "Assertion failed because expected '$expected' does match actual '$actual'" + } + + if ($expected -eq $actual) + { + throw $message + } + + return $true +} \ No newline at end of file diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/PSHCommon/Common.ps1 b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/PSHCommon/Common.ps1 new file mode 100644 index 000000000000..dadbcab9bceb --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/PSHCommon/Common.ps1 @@ -0,0 +1,363 @@ +# ---------------------------------------------------------------------------------- +# +# 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. +# ---------------------------------------------------------------------------------- + +$excludedExtensions = @(".dll", ".zip", ".msi", ".exe") +################################### +# +# Retrievce the contents of a powershrell transcript, stripping headers and footers +# +# param [string] $path: The path to the transript file to read +################################### +function Get-Transcript +{ + param([string] $path) + return Get-Content $path | + Select-String -InputObject {$_} -Pattern "^Start Time\s*:.*" -NotMatch | + Select-String -InputObject {$_} -Pattern "^End Time\s*:.*" -NotMatch | + Select-String -InputObject {$_} -Pattern "^Machine\s*:.*" -NotMatch | + Select-String -InputObject {$_} -Pattern "^Username\s*:.*" -NotMatch | + Select-String -InputObject {$_} -Pattern "^Transcript started, output file is.*" -NotMatch +} + +######################## +# +# Get a random file name in the current directory +# +# param [string] $rootPath: The path of the directory to contain the random file (optional) +######################## +function Get-LogFile +{ + param([string] $rootPath = ".") + return [System.IO.Path]::Combine($rootPath, ([System.IO.Path]::GetRandomFileName())) +} + +################# +# +# Execute a test, no exception thrown means the test passes. Can also be used to compare test +# output to a baseline file, or to generate a baseline file +# +# param [scriptblock] $test: The test code to run +# param [string] $testScript: The path to the baseline file (optional) +# param [switch] $generate: Set if the baseline file should be generated, otherwise +# the baseline file would be used for comparison with test output +################## +function Run-Test +{ + param([scriptblock]$test, [string] $testName = $null, [string] $testScript = $null, [switch] $generate = $false) + Test-Setup + $transFile = $testName + ".log" + if ($testName -eq $null) + { + $transFile = Get-LogFile "." + } + if($testScript) + { + if ($generate) + { + Write-Log "[run-test]: generating script file $testScript" + $transFile = $testScript + } + else + { + Write-Log "[run-test]: writing output to $transFile, using validation script $testScript" + } + } + else + { + Write-Log "[run-test]: Running test without file comparison" + } + + $oldPref = $ErrorActionPreference + $ErrorActionPreference = "SilentlyContinue" + #Start-Transcript -Path $transFile + $success = $false; + $ErrorActionPreference = $oldPref + try + { + &$test + $success = $true; + } + finally + { + Test-Cleanup + $oldPref = $ErrorActionPreference + $ErrorActionPreference = "SilentlyContinue" + #Stop-Transcript + $ErrorActionPreference = $oldPref + if ($testScript) + { + if ($success -and -not $generate) + { + $result = Compare-Object (Get-Transcript $testScript) (Get-Transcript $transFile) + if ($result -ne $null) + { + throw "[run-test]: Test Failed " + (Out-String -InputObject $result) + ", Transcript at $transFile" + } + + } + } + + if ($success) + { + Write-Log "[run-test]: Test Passed" + } + } + +} + +################## +# +# Format a string for proper output to host and transcript +# +# param [string] $message: The text to write +################## +function Write-Log +{ + [CmdletBinding()] + param( [Object] [Parameter(Position=0, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$false)] $obj = "") + PROCESS + { + $obj | Out-String | Write-Verbose + } +} + +function Check-SubscriptionMatch +{ + param([string] $baseSubscriptionName, [Microsoft.WindowsAzure.Commands.Utilities.Common.SubscriptionData] $checkedSubscription) + Write-Log ("[CheckSubscriptionMatch]: base subscription: '$baseSubscriptionName', validating '" + ($checkedSubscription.SubscriptionName)+ "'") + Format-Subscription $checkedSubscription | Write-Log + if ($baseSubscriptionName -ne $checkedSubscription.SubscriptionName) + { + throw ("[Check-SubscriptionMatch]: Subscription Match Failed '" + ($baseSubscriptionName) + "' != '" + ($checkedSubscription.SubscriptionName) + "'") + } + + Write-Log ("CheckSubscriptionMatch]: subscription check succeeded.") +} + + +########################## +# +# Return the fully qualified filename of a given file +# +# param [string] $path: The relative path to the file +# +########################## +function Get-FullName +{ + param([string] $path) + $pathObj = Get-Item $path + return ($pathObj.FullName) +} + +############################# +# +# PowerShell environment setup for running a test, save previous snvironment settings and +# enable verbose, debug, and warning streams +# +############################# +function Test-Setup +{ + $global:oldConfirmPreference = $global:ConfirmPreference + $global:oldDebugPreference = $global:DebugPreference + $global:oldErrorActionPreference = $global:ErrorActionPreference + $global:oldFormatEnumerationLimit = $global:FormatEnumerationLimit + $global:oldProgressPreference = $global:ProgressPreference + $global:oldVerbosePreference = $global:VerbosePreference + $global:oldWarningPreference = $global:WarningPreference + $global:oldWhatIfPreference = $global:WhatIfPreference + $global:ConfirmPreference = "None" + $global:DebugPreference = "Continue" + $global:ErrorActionPreference = "Stop" + $global:FormatEnumerationLimit = 10000 + $global:ProgressPreference = "SilentlyContinue" + $global:VerbosePreference = "Continue" + $global:WarningPreference = "Continue" + $global:WhatIfPreference = 0 +} + +############################# +# +# PowerShell environment cleanup for running a test, restore previous snvironment settings +# +############################# +function Test-Cleanup +{ + $global:ConfirmPreference = $global:oldConfirmPreference + $global:DebugPreference = $global:oldDebugPreference + $global:ErrorActionPreference = $global:oldErrorActionPreference + $global:FormatEnumerationLimit = $global:oldFormatEnumerationLimit + $global:ProgressPreference = $global:oldProgressPreference + $global:VerbosePreference = $global:oldVerbosePreference + $global:WarningPreference = $global:oldWarningPreference + $global:WhatIfPreference = $global:oldWhatIfPreference +} + +####################### +# +# Dump the contents of a directory to the output stream +# +# param [string] $rootPath: The path to the directory +# param [switch] $resurse : True if we should recurse directories +###################### +function Dump-Contents +{ + param([string] $rootPath = ".", [switch] $recurse = $false) + if (-not ((Test-Path $rootPath) -eq $true)) + { + throw "[dump-contents]: $rootPath does not exist" + } + + foreach ($item in Get-ChildItem $rootPath) + { + Write-Log + Write-Log "---------------------------" + Write-Log $item.Name + Write-Log "---------------------------" + Write-Log + if (!$item.PSIsContainer) + { + if (Test-BinaryFile $item) + { + Write-Log "---- binary data excluded ----" + } + else + { + Get-Content ($item.PSPath) + } + } + elseif ($recurse) + { + Dump-Contents ($item.PSPath) -recurse + } + } +} + +function Test-BinaryFile +{ + param ([System.IO.FileInfo] $file) + ($excludedExtensions | Where-Object -FilterScript {$_ -eq $file.Extension}) -ne $null +} + + +<# +.SYNOPSIS +Removes all current subscriptions. +#> +function Remove-AllSubscriptions +{ + Get-AzureSubscription | Remove-AzureSubscription -Force +} + +<# +.SYNOPSIS +Waits on the specified job with the given timeout. + +.PARAMETER scriptBlock +The script block to execute. + +.PARAMETER timeout +The maximum timeout for the script. +#> +function Wait-Function +{ + param([ScriptBlock] $scriptBlock, [object] $breakCondition, [int] $timeout) + + if ($timeout -eq 0) { $timeout = 60 * 5 } + $start = [DateTime]::Now + $current = [DateTime]::Now + $diff = $current - $start + + do + { + Start-Sleep -s 5 + $current = [DateTime]::Now + $diff = $current - $start + $result = &$scriptBlock + } + while(($result -ne $breakCondition) -and ($diff.TotalSeconds -lt $timeout)) + + if ($diff.TotalSeconds -ge $timeout) + { + Write-Warning "The script block '$scriptBlock' exceeded the timeout." + # End the processing so the test does not blow up + exit + } +} + + +<# +.SYNOPSIS +Waits for specified duration if not-mocked, otherwise skips wait. + +.PARAMETER timeout +Timeout in seconds +#> +function Wait-Seconds +{ + param([int] $timeout) + + [Microsoft.WindowsAzure.Testing.TestUtilities]::Wait($timeout * 1000) +} + + +<# +.SYNOPSIS +Retires the specified job the given numer of times, waiting the given interval between tries + +.PARAMETER scriptBlock +The script block to execute. Must be a predicate (return true or false) + +.PARAMETER argument +Argument to pass to the script block + +.PARAMETER maxTries +The maximum number of times to retry + +.PARAMETER interval +The number of seconds to wait before retrying +#> +function Retry-Function +{ + param([ScriptBlock] $scriptBlock, [Object] $argument, [int] $maxTries, [int] $interval) + + if ($interval -eq 0) { $interval = 60 } + + $result = Invoke-Command -ScriptBlock $scriptBlock -ArgumentList $argument; + $tries = 1; + while(( $result -ne $true) -and ($tries -le $maxTries)) + { + Start-Sleep -s $interval + $result = Invoke-Command -ScriptBlock $scriptBlock -ArgumentList $argument; + $tries++; + } + + return $result; +} + +function getAssetName +{ + $stack = Get-PSCallStack + $testName = $null; + foreach ($frame in $stack) + { + if ($frame.Command.StartsWith("Test-", "CurrentCultureIgnoreCase")) + { + $testName = $frame.Command + } + } + + $assetName = [Microsoft.Azure.Utilities.HttpRecorder.HttpMockServer]::GetAssetName($testName, "onesdk") + + return $assetName +} \ No newline at end of file diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/RunKeyVaultTests.ps1 b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/RunKeyVaultTests.ps1 new file mode 100644 index 000000000000..d5bff11a0c03 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/RunKeyVaultTests.ps1 @@ -0,0 +1,179 @@ +Param( + [Parameter(Mandatory=$True,Position=0)] + [ValidateSet('BVT','PROD')] + [string]$testenv, + [Parameter(Mandatory=$True,Position=1)] + [string]$testns +) + +$invocationPath = Split-Path $MyInvocation.MyCommand.Definition; +. (Join-Path $invocationPath "PSHCommon\Common.ps1"); +. (Join-Path $invocationPath "PSHCommon\Assert.ps1"); +. (Join-Path $invocationPath "Common.ps1"); +. (Join-Path $invocationPath "VaultKeyTests.ps1"); +. (Join-Path $invocationPath "VaultSecretTests.ps1"); + +$global:totalCount = 0; +$global:passedCount = 0; +$global:passedTests = @() +$global:failedTests = @() +$global:times = @{} +$global:testEnv = $testenv.ToUpperInvariant() +$global:testns = $testns + +function Run-TestProtected +{ + param([ScriptBlock]$script, [string] $testName) + $testStart = Get-Date + try + { + Write-Host -ForegroundColor Green ===================================== + Write-Host -ForegroundColor Green "Running test $testName" + Write-Host -ForegroundColor Green ===================================== + Write-Host + &$script + $global:passedCount = $global:passedCount + 1 + Write-Host + Write-Host -ForegroundColor Green ===================================== + Write-Host -ForegroundColor Green "Test Passed" + Write-Host -ForegroundColor Green ===================================== + Write-Host + $global:passedTests += $testName + } + catch + { + Out-String -InputObject $_.Exception | Write-Host -ForegroundColor Red + Write-Host + Write-Host -ForegroundColor Red ===================================== + Write-Host -ForegroundColor Red "Test Failed" + Write-Host -ForegroundColor Red ===================================== + Write-Host + $global:failedTests += $testName + } + finally + { + $testEnd = Get-Date + $testElapsed = $testEnd - $testStart + $global:times[$testName] = $testElapsed + $global:totalCount = $global:totalCount + 1 + } +} + +# Initialize +Write-Host Delete log files +Cleanup-Log $invocationPath + +$testkeyVault = Get-KeyVault +Write-Host Test key vault is $testKeyVault +Write-Host Initializing Key Tests +Initialize-KeyTest +Write-Host Initializing Secret Tests +Initialize-SecretTest +Write-Host Initialization Completed + +$global:startTime = Get-Date + +# Add-AzureKeyVaultKey tests +Run-TestProtected { Run-KeyTest {Test_CreateSoftwareKeyWithDefaultAttributes} "Test_CreateSoftwareKeyWithDefaultAttributes" } "Test_CreateSoftwareKeyWithDefaultAttributes" +Run-TestProtected { Run-KeyTest {Test_CreateSoftwareKeyWithCustomAttributes} "Test_CreateSoftwareKeyWithCustomAttributes" } "Test_CreateSoftwareKeyWithCustomAttributes" +Run-TestProtected { Run-KeyTest {Test_CreateHsmKeyWithDefaultAttributes} "Test_CreateHsmKeyWithDefaultAttributes" } "Test_CreateHsmKeyWithDefaultAttributes" +Run-TestProtected { Run-KeyTest {Test_CreateHsmKeyWithCustomAttributes} "Test_CreateHsmKeyWithCustomAttributes" } "Test_CreateHsmKeyWithCustomAttributes" +Run-TestProtected { Run-KeyTest {Test_ImportPfxWithDefaultAttributes} "Test_ImportPfxWithDefaultAttributes" } "Test_ImportPfxWithDefaultAttributes" +Run-TestProtected { Run-KeyTest {Test_ImportPfxWithCustomAttributes} "Test_ImportPfxWithCustomAttributes" } "Test_ImportPfxWithCustomAttributes" +Run-TestProtected { Run-KeyTest {Test_ImportPfxAsHsmWithDefaultAttributes} "Test_ImportPfxAsHsmWithDefaultAttributes" } "Test_ImportPfxAsHsmWithDefaultAttributes" +Run-TestProtected { Run-KeyTest {Test_ImportPfxAsHsmWithCustomAttributes} "Test_ImportPfxAsHsmWithCustomAttributes" } "Test_ImportPfxAsHsmWithCustomAttributes" +Run-TestProtected { Run-KeyTest {Test_ImportByokWithDefaultAttributes} "Test_ImportByokWithDefaultAttributes" } "Test_ImportByokWithDefaultAttributes" +Run-TestProtected { Run-KeyTest {Test_ImportByokWithCustomAttributes} "Test_ImportByokWithCustomAttributes" } "Test_ImportByokWithCustomAttributes" +Run-TestProtected { Run-KeyTest {Test_AddKeyPositionalParameter} "Test_AddKeyPositionalParameter" } "Test_AddKeyPositionalParameter" +Run-TestProtected { Run-KeyTest {Test_AddKeyAliasParameter} "Test_AddKeyAliasParameter" } "Test_AddKeyAliasParameter" +Run-TestProtected { Run-KeyTest {Test_ImportNonExistPfxFile} "Test_ImportNonExistPfxFile" } "Test_ImportNonExistPfxFile" +Run-TestProtected { Run-KeyTest {Test_ImportPfxFileWithIncorrectPassword} "Test_ImportPfxFileWithIncorrectPassword" } "Test_ImportPfxFileWithIncorrectPassword" +Run-TestProtected { Run-KeyTest {Test_ImportNonExistByokFile} "Test_ImportNonExistByokFile" } "Test_ImportNonExistByokFile" +Run-TestProtected { Run-KeyTest {Test_CreateKeyInNonExistVault} "Test_CreateKeyInNonExistVault" } "Test_CreateKeyInNonExistVault" +Run-TestProtected { Run-KeyTest {Test_ImportByokAsSoftwareKey} "Test_ImportByokAsSoftwareKey" } "Test_ImportByokAsSoftwareKey" +Run-TestProtected { Run-KeyTest {Test_CreateKeyInNoPermissionVault} "Test_CreateKeyInNoPermissionVault" } "Test_CreateKeyInNoPermissionVault" + +# Set-AzureKeyVaultKey tests +Run-TestProtected { Run-KeyTest {Test_UpdateIndividualAttributes} "Test_UpdateIndividualAttributes" } "Test_UpdateIndividualAttributes" +Run-TestProtected { Run-KeyTest {Test_UpdateAllEditableAttributes} "Test_UpdateAllEditableAttributes" } "Test_UpdateAllEditableAttributes" +Run-TestProtected { Run-KeyTest {Test_UpdateKeyWithNoChange} "Test_UpdateKeyWithNoChange" } "Test_UpdateKeyWithNoChange" +Run-TestProtected { Run-KeyTest {Test_SetKeyPositionalParameter} "Test_SetKeyPositionalParameter" } "Test_SetKeyPositionalParameter" +Run-TestProtected { Run-KeyTest {Test_SetKeyAliasParameter} "Test_SetKeyAliasParameter" } "Test_SetKeyAliasParameter" +Run-TestProtected { Run-KeyTest {Test_SetKeyInNonExistVault} "Test_SetKeyInNonExistVault" } "Test_SetKeyInNonExistVault" +Run-TestProtected { Run-KeyTest {Test_SetNonExistKey} "Test_SetNonExistKey" } "Test_SetNonExistKey" +Run-TestProtected { Run-KeyTest {Test_SetInvalidAttributes} "Test_SetInvalidAttributes" } "Test_SetInvalidAttributes" +Run-TestProtected { Run-KeyTest {Test_SetKeyInNoPermissionVault} "Test_SetKeyInNoPermissionVault" } "Test_SetKeyInNoPermissionVault" + +# Get-AzureKeyVaultKey tests +Run-TestProtected { Run-KeyTest {Test_GetOneKey} "Test_GetOneKey" } "Test_GetOneKey" +Run-TestProtected { Run-KeyTest {Test_GetAllKeys} "Test_GetAllKeys" } "Test_GetAllKeys" +Run-TestProtected { Run-KeyTest {Test_GetPreviousVersionOfKey} "Test_GetPreviousVersionOfKey" } "Test_GetPreviousVersionOfKey" +Run-TestProtected { Run-KeyTest {Test_GetKeyPositionalParameter} "Test_GetKeyPositionalParameter" } "Test_GetKeyPositionalParameter" +Run-TestProtected { Run-KeyTest {Test_GetKeyAliasParameter} "Test_GetKeyAliasParameter" } "Test_GetKeyAliasParameter" +Run-TestProtected { Run-KeyTest {Test_GetKeysInNonExistVault} "Test_GetKeysInNonExistVault" } "Test_GetKeysInNonExistVault" +Run-TestProtected { Run-KeyTest {Test_GetNonExistKey} "Test_GetNonExistKey" } "Test_GetNonExistKey" +Run-TestProtected { Run-KeyTest {Test_GetKeyInNoPermissionVault} "Test_GetKeyInNoPermissionVault" } "Test_GetKeyInNoPermissionVault" + + +# Remove-AzureKeyVaultKey tests +Run-TestProtected { Run-KeyTest {Test_RemoveKeyWithoutPrompt} "Test_RemoveKeyWithoutPrompt" } "Test_RemoveKeyWithoutPrompt" +Run-TestProtected { Run-KeyTest {Test_RemoveKeyWhatIf} "Test_RemoveKeyWhatIf" } "Test_RemoveKeyWhatIf" +Run-TestProtected { Run-KeyTest {Test_RemoveKeyPositionalParameter} "Test_RemoveKeyPositionalParameter" } "Test_RemoveKeyPositionalParameter" +Run-TestProtected { Run-KeyTest {Test_RemoveKeyAliasParameter} "Test_RemoveKeyAliasParameter" } "Test_RemoveKeyAliasParameter" +Run-TestProtected { Run-KeyTest {Test_RemoveKeyInNonExistVault} "Test_RemoveKeyInNonExistVault" } "Test_RemoveKeyInNonExistVault" +Run-TestProtected { Run-KeyTest {Test_RemoveNonExistKey} "Test_RemoveNonExistKey" } "Test_RemoveNonExistKey" +Run-TestProtected { Run-KeyTest {Test_RemoveKeyInNoPermissionVault} "Test_RemoveKeyInNoPermissionVault" } "Test_RemoveKeyInNoPermissionVault" + +# Backup-AzureKeyVaultKey and Restore-AzureKeyVaultKey tests +Run-TestProtected { Run-KeyTest {Test_BackupRestoreKey} "Test_BackupRestoreKey" } "Test_BackupRestoreKey" +Run-TestProtected { Run-KeyTest {Test_BackupNonExisitingKey} "Test_BackupNonExisitingKey" } "Test_BackupNonExisitingKey" +Run-TestProtected { Run-KeyTest {Test_BackupToNonExisitingFile} "Test_BackupToNonExisitingFile" } "Test_BackupToNonExisitingFile" +Run-TestProtected { Run-KeyTest {Test_RestoreFromNonExistingFile} "Test_RestoreFromNonExistingFile" } "Test_RestoreFromNonExistingFile" + +# *-AzureKeyVaultKey pipeline tests +Run-TestProtected { Run-KeyTest {Test_PipelineUpdateKeys} "Test_PipelineUpdateKeys" } "Test_PipelineUpdateKeys" +Run-TestProtected { Run-KeyTest {Test_PipelineRemoveKeys} "Test_PipelineRemoveKeys" } "Test_PipelineRemoveKeys" + + +# Set-AzureKeyVaultSecret tests +Run-TestProtected { Run-SecretTest {Test_CreateSecret} "Test_CreateSecret" } "Test_CreateSecret" +Run-TestProtected { Run-SecretTest {Test_UpdateSecret} "Test_UpdateSecret" } "Test_UpdateSecret" +Run-TestProtected { Run-SecretTest {Test_SetSecretPositionalParameter} "Test_SetSecretPositionalParameter" } "Test_SetSecretPositionalParameter" +Run-TestProtected { Run-SecretTest {Test_SetSecretAliasParameter} "Test_SetSecretAliasParameter" } "Test_SetSecretAliasParameter" +Run-TestProtected { Run-SecretTest {Test_SetSecretInNonExistVault} "Test_SetSecretInNonExistVault" } "Test_SetSecretInNonExistVault" +Run-TestProtected { Run-SecretTest {Test_SetSecretInNoPermissionVault} "Test_SetSecretInNoPermissionVault" } "Test_SetSecretInNoPermissionVault" + +# Get-AzureKeyVaultSecret tests +Run-TestProtected { Run-SecretTest {Test_GetOneSecret} "Test_GetOneSecret" } "Test_GetOneSecret" +Run-TestProtected { Run-SecretTest {Test_GetAllSecrets} "Test_GetAllSecrets" } "Test_GetAllSecrets" +Run-TestProtected { Run-SecretTest {Test_GetPreviousVersionOfSecret} "Test_GetPreviousVersionOfSecret" } "Test_GetPreviousVersionOfSecret" +Run-TestProtected { Run-SecretTest {Test_GetSecretPositionalParameter} "Test_GetSecretPositionalParameter" } "Test_GetSecretPositionalParameter" +Run-TestProtected { Run-SecretTest {Test_GetSecretAliasParameter} "Test_GetSecretAliasParameter" } "Test_GetSecretAliasParameter" +Run-TestProtected { Run-SecretTest {Test_GetSecretInNonExistVault} "Test_GetSecretInNonExistVault" } "Test_GetSecretInNonExistVault" +Run-TestProtected { Run-SecretTest {Test_GetNonExistSecret} "Test_GetNonExistSecret" } "Test_GetNonExistSecret" +Run-TestProtected { Run-SecretTest {Test_GetSecretInNoPermissionVault} "Test_GetSecretInNoPermissionVault" } "Test_GetSecretInNoPermissionVault" + +# Remove-AzureKeyVaultSecret tests +Run-TestProtected { Run-SecretTest {Test_RemoveSecretWithoutPrompt} "Test_RemoveSecretWithoutPrompt" } "Test_RemoveSecretWithoutPrompt" +Run-TestProtected { Run-SecretTest {Test_RemoveSecretWhatIf} "Test_RemoveSecretWhatIf" } "Test_RemoveSecretWhatIf" +Run-TestProtected { Run-SecretTest {Test_RemoveSecretPositionalParameter} "Test_RemoveSecretPositionalParameter" } "Test_RemoveSecretPositionalParameter" +Run-TestProtected { Run-SecretTest {Test_RemoveSecretAliasParameter} "Test_RemoveSecretAliasParameter" } "Test_RemoveSecretAliasParameter" +Run-TestProtected { Run-SecretTest {Test_RemoveSecretInNonExistVault} "Test_RemoveSecretInNonExistVault" } "Test_RemoveSecretInNonExistVault" +Run-TestProtected { Run-SecretTest {Test_RemoveNonExistSecret} "Test_RemoveNonExistSecret" } "Test_RemoveNonExistSecret" +Run-TestProtected { Run-SecretTest {Test_RemoveSecretInNoPermissionVault} "Test_RemoveSecretInNoPermissionVault" } "Test_RemoveSecretInNoPermissionVault" + +# *-AzureKeyVaultKey pipeline tests +Run-TestProtected { Run-SecretTest {Test_PipelineUpdateSecrets} "Test_PipelineUpdateSecrets" } "Test_PipelineUpdateSecrets" +Run-TestProtected { Run-SecretTest {Test_PipelineRemoveSecrets} "Test_PipelineRemoveSecrets" } "Test_PipelineRemoveSecrets" + +$global:endTime = Get-Date + +# Report +Write-FileReport +Write-ConsoleReport + + +# Post run +Move-Log $invocationPath + + diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/RunUITests.ps1 b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/RunUITests.ps1 new file mode 100644 index 000000000000..0152b97a708f --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/RunUITests.ps1 @@ -0,0 +1,95 @@ +Param( + [Parameter(Mandatory=$True,Position=0)] + [ValidateSet('BVT','PROD')] + [string]$testenv, + [Parameter(Mandatory=$True,Position=1)] + [string]$testns +) + +$invocationPath = Split-Path $MyInvocation.MyCommand.Definition; +. (Join-Path $invocationPath "PSHCommon\Common.ps1"); +. (Join-Path $invocationPath "PSHCommon\Assert.ps1"); +. (Join-Path $invocationPath "Common.ps1"); +. (Join-Path $invocationPath "VaultUITests.ps1"); + +$global:totalCount = 0; +$global:passedCount = 0; +$global:passedTests = @() +$global:failedTests = @() +$global:times = @{} +$global:testEnv = $testenv.ToUpperInvariant() +$global:testns = $testns+"UI" + +function Run-TestProtected +{ + param([ScriptBlock]$script, [string] $testName) + $testStart = Get-Date + try + { + Write-Host -ForegroundColor Green ===================================== + Write-Host -ForegroundColor Green "Running test $testName" + Write-Host -ForegroundColor Green ===================================== + Write-Host + &$script + $global:passedCount = $global:passedCount + 1 + Write-Host + Write-Host -ForegroundColor Green ===================================== + Write-Host -ForegroundColor Green "Test Passed" + Write-Host -ForegroundColor Green ===================================== + Write-Host + $global:passedTests += $testName + } + catch + { + Out-String -InputObject $_.Exception | Write-Host -ForegroundColor Red + Write-Host + Write-Host -ForegroundColor Red ===================================== + Write-Host -ForegroundColor Red "Test Failed" + Write-Host -ForegroundColor Red ===================================== + Write-Host + $global:failedTests += $testName + } + finally + { + $testEnd = Get-Date + $testElapsed = $testEnd - $testStart + $global:times[$testName] = $testElapsed + $global:totalCount = $global:totalCount + 1 + } +} + +# Initialize +Write-Host Delete log files +Cleanup-Log $invocationPath + +$testkeyVault = Get-KeyVault +Write-Host Test key vault is $testKeyVault +Write-Host Initializing Key Tests +Initialize-KeyTest +Write-Host Initializing Secret Tests +Initialize-SecretTest +Write-Host Initialization Completed + +$global:startTime = Get-Date + +# Run key tests +Run-TestProtected { Run-KeyTest {Test_RemoveKeyWithTwoConfirmations} "Test_RemoveKeyWithTwoConfirmations" } "Test_RemoveKeyWithTwoConfirmations" +Run-TestProtected { Run-KeyTest {Test_RemoveKeyWithOneConfirmations} "Test_RemoveKeyWithOneConfirmations" } "Test_RemoveKeyWithOneConfirmations" +Run-TestProtected { Run-KeyTest {Test_CancelKeyRemovalOnce} "Test_CancelKeyRemovalOnce" } "Test_CancelKeyRemovalOnce" +Run-TestProtected { Run-KeyTest {Test_ConfirmThenCancelKeyRemoval} "Test_ConfirmThenCancelKeyRemoval" } "Test_ConfirmThenCancelKeyRemoval" + +# Run secret tests +Run-TestProtected { Run-SecretTest {Test_RemoveSecretWithTwoConfirmations} "Test_RemoveSecretWithTwoConfirmations" } "Test_RemoveSecretWithTwoConfirmations" +Run-TestProtected { Run-SecretTest {Test_RemoveSecretWithOneConfirmations} "Test_RemoveSecretWithOneConfirmations" } "Test_RemoveSecretWithOneConfirmations" +Run-TestProtected { Run-SecretTest {Test_CancelSecretRemovalOnce} "Test_CancelSecretRemovalOnce" } "Test_CancelSecretRemovalOnce" +Run-TestProtected { Run-SecretTest {Test_ConfirmThenCancelSecretRemoval} "Test_ConfirmThenCancelSecretRemoval" } "Test_ConfirmThenCancelSecretRemoval" + + +$global:endTime = Get-Date + +# Report +Write-FileReport +Write-ConsoleReport + +# Post run +Move-Log $invocationPath diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/VaultKeyTests.ps1 b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/VaultKeyTests.ps1 new file mode 100644 index 000000000000..9706e871a5fb --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/VaultKeyTests.ps1 @@ -0,0 +1,821 @@ +$pfxpwd='123' +$securepfxpwd=$pfxpwd | ConvertTo-SecureString -AsPlainText -Force +$expires= (Get-Date).AddYears(2).ToUniversalTime() +$nbf=(Get-Date).ToUniversalTime() +$newexpires= (Get-Date).AddYears(5).ToUniversalTime() +$newnbf=(Get-Date).AddYears(1).ToUniversalTime() +$ops = "decrypt", "verify" +$newOps = "encrypt", "decrypt", "sign" +$delta=[TimeSpan]::FromMinutes(2) + +function Equal-DateTime($left, $right) +{ + if ($left -eq $null -and $right -eq $null) + { + return $true + } + if ($left -eq $null -or $right -eq $null) + { + return $false + } + + return (($left - $right).Duration() -le $delta) +} + +function Equal-OperationList($left, $right) +{ + if ($left -eq $null -and $right -eq $null) + { + return $true + } + if ($left -eq $null -or $right -eq $null) + { + return $false + } + + $diff = Compare-Object -ReferenceObject $left -DifferenceObject $right -PassThru + + return (-not $diff) +} + +function Assert-KeyAttributes($keyAttr, $keytype, $keyenable, $keyexp, $keynbf, $keyops) +{ + Assert-NotNull $keyAttr, "keyAttr is null." + Assert-AreEqual $keytype $keyAttr.KeyType "Expect $keytype. Get $keyAttr.KeyType" + Assert-AreEqual $keyenable $keyAttr.Enabled "Expect $keyenable. Get $keyAttr.Enabled" + if ($keyexp -ne $null) + { + Assert-True { Equal-DateTime $keyexp $keyAttr.Expires } "Expect $keyexp. Get $keyAttr.Expires" + } + if ($keynbf -ne $null) + { + Assert-True { Equal-DateTime $keynbf $keyAttr.NotBefore} "Expect $keynbf. Get $keyAttr.NotBefore" + } + if ($keyops -ne $null) + { + Assert-True { Equal-OperationList $keyops $keyAttr.KeyOps} "Expect $keyops. Get $keyAttr.KeyOps" + } +} + + +<# +.SYNOPSIS +Tests create software key with default attributes +#> + +function Test_CreateSoftwareKeyWithDefaultAttributes +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'soft' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA' $true $null $null $null +} + +<# +.SYNOPSIS +Tests create software key with custom attributes +#> +function Test_CreateSoftwareKeyWithCustomAttributes +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'attr' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' -Expires $expires -NotBefore $nbf -KeyOps $ops -Disable + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA' $false $expires $nbf $ops +} + +<# +.SYNOPSIS +Tests create Hsm key with custom attributes +#> +function Test_CreateHsmKeyWithDefaultAttributes +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'hsm' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'HSM' + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA-HSM' $true $null $null $null +} + +<# +.SYNOPSIS +Tests create Hsm key with custom attributes +#> +function Test_CreateHsmKeyWithCustomAttributes +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'attrhsm' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'HSM' -Expires $expires -NotBefore $nbf -KeyOps $ops -Disable + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA-HSM' $false $expires $nbf $ops +} + +<# +.SYNOPSIS +Tests import pfx with default attributes +#> +function Test_ImportPfxWithDefaultAttributes +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'pfx' + $pfxpath = Get-ImportKeyFile 'pfx' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -KeyFilePath $pfxpath -KeyFilePassword $securepfxpwd + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA' $true $null $null $null + } + +<# +.SYNOPSIS +Tests import pfx with custom attributes +#> +function Test_ImportPfxWithCustomAttributes +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'attrpfx' + $pfxpath = Get-ImportKeyFile 'pfx' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' -KeyFilePath $pfxpath -KeyFilePassword $securepfxpwd -Expires $expires -NotBefore $nbf -KeyOps $ops -Disable + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA' $false $expires $nbf $ops +} + +<# +.SYNOPSIS +Tests import pfx as Hsm with default attributes +#> +function Test_ImportPfxAsHsmWithDefaultAttributes +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'pfxashsm' + $pfxpath = Get-ImportKeyFile 'pfx' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'HSM' -KeyFilePath $pfxpath -KeyFilePassword $securepfxpwd + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA-HSM' $true $null $null $null +} + +<# +.SYNOPSIS +Tests import pfx as Hsm with custom attributes +#> +function Test_ImportPfxAsHsmWithCustomAttributes +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'attrpfxashsm' + $pfxpath = Get-ImportKeyFile 'pfx' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'HSM' -KeyFilePath $pfxpath -KeyFilePassword $securepfxpwd -Expires $expires -NotBefore $nbf -KeyOps $ops -Disable + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA-HSM' $false $expires $nbf $ops +} + +<# +.SYNOPSIS +Tests import byok with default attributes +#> +function Test_ImportByokWithDefaultAttributes +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'byok' + $byokpath = Get-ImportKeyFile 'byok' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -KeyFilePath $byokpath + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA-HSM' $true $null $null $null +} + +<# +.SYNOPSIS +Tests import byok with custom attributes +#> +function Test_ImportByokWithCustomAttributes +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'attrbyok' + $byokpath = Get-ImportKeyFile 'byok' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'HSM' -KeyFilePath $byokpath -Expires $expires -NotBefore $nbf -KeyOps $ops -Disable + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA-HSM' $false $expires $nbf $ops +} + +<# +.SYNOPSIS +Tests import byok with custom attributes +#> +function Test_ImportByokWithCustomAttributes +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'attrbyok' + $byokpath = Get-ImportKeyFile 'byok' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'HSM' -KeyFilePath $byokpath -Expires $expires -NotBefore $nbf -KeyOps $ops -Disable + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA-HSM' $false $expires $nbf $ops +} + +<# +.SYNOPSIS +Tests Add-AzureKeyVaultKey with positionalParameter +#> +function Test_AddKeyPositionalParameter +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'positional' + $key=Add-AzureKeyVaultKey $keyVault $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname +} + +<# +.SYNOPSIS +Tests Add-AzureKeyVaultKey with parameter alias +#> +function Test_AddKeyAliasParameter +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'alias' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -KeyName $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname +} + + +<# +.SYNOPSIS +Tests import non-exist pfx file +#> +function Test_ImportNonExistPfxFile +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'nonexistpfx' + $nonexistpfx = Get-ImportKeyFile 'pfx' $false + Assert-Throws {Add-AzureKeyVaultKey -VaultName $keyVault -KeyName $keyname -KeyFilePath $nonexistpfx -KeyFilePassword $securepfxpwd} +} + +<# +.SYNOPSIS +Tests import non-exist pfx file +#> +function Test_ImportPfxFileWithIncorrectPassword +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'wrongpwdpfx' + $pfxpath = Get-ImportKeyFile 'pfx' + $wrongpwd= 'foo' | ConvertTo-SecureString -AsPlainText -Force + Assert-Throws {Add-AzureKeyVaultKey -VaultName $keyVault -KeyName $keyname -Name $keyname -KeyFilePath $pfxpath -KeyFilePassword $wrongpwd} +} + +<# +.SYNOPSIS +Tests import non-exist pfx file +#> +function Test_ImportNonExistByokFile +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'nonexistbyok' + $nonexistbyok = Get-ImportKeyFile 'byok' $false + Assert-Throws {Add-AzureKeyVaultKey -VaultName $keyVault -KeyName $keyname -KeyFilePath $nonexistbyok} +} + +<# +.SYNOPSIS +Tests import non-exist pfx file +#> +function Test_CreateKeyInNonExistVault +{ + $keyVault = 'notexistvault' + $keyname= 'notexitkey' + Assert-Throws {Add-AzureKeyVaultKey -VaultName $keyVault -KeyName $keyname -Destination 'Software'} +} + +<# +.SYNOPSIS +Tests import non-exist pfx file +#> +function Test_ImportByokAsSoftwareKey +{ + $keyVault = Get-KeyVault + $keyname= Get-KeyName 'byokassoftware' + Assert-Throws {Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' -KeyFilePath $byokpath} +} + +<# +.SYNOPSIS +Tests create key in a vault not have permission +#> +function Test_CreateKeyInNoPermissionVault +{ + $keyVault = Get-KeyVault $false + $keyname= Get-KeyName 'nopermission' + Assert-Throws {Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software'} +} + + +<# +.SYNOPSIS +Tests update individual key attributes +#> +function Test_UpdateIndividualAttributes +{ + # Create a software key for updating + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'updatesoft' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' -Expires $expires -NotBefore $nbf -KeyOps $ops -Disable + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA' $false $expires $nbf $ops + + # Update Expires + $key=Set-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Expires $newexpires + Assert-NotNull $key + Assert-KeyAttributes $key.Attributes 'RSA' $false $newexpires $nbf $null + + # Update NotBefore + $key=Set-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -NotBefore $newnbf + Assert-NotNull $key + Assert-KeyAttributes $key.Attributes 'RSA' $false $newexpires $newnbf $null + + # Update KeyOps + $key=Set-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -KeyOps $newOps + Assert-NotNull $key + Assert-KeyAttributes $key.Attributes 'RSA' $false $newexpires $newnbf -keyops $newOps + + # Update Enable + $key=Set-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Enable $true + Assert-NotNull $key + Assert-KeyAttributes $key.Attributes 'RSA' $true $newexpires $newnbf $null +} + +<# +.SYNOPSIS +Tests update with no change to key +#> +function Test_UpdateKeyWithNoChange +{ + # Create a software key for updating + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'updatesoft' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' -Expires $expires -NotBefore $nbf -KeyOps $ops + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA' $true $expires $nbf $ops + + # Update Expires + $key=Set-AzureKeyVaultKey -VaultName $keyVault -Name $keyname + Assert-NotNull $key + Assert-KeyAttributes $key.Attributes 'RSA' $true $expires $nbf $ops +} + +<# +.SYNOPSIS +Tests update individual key attributes +#> +function Test_UpdateAllEditableAttributes +{ + # Create a software key for updating + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'usoft' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' -Expires $expires -NotBefore $nbf -KeyOps $ops -Disable + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA' $false $expires $nbf $ops + + # Update Expires + $key=Set-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Expires $newexpires -NotBefore $newnbf -Enable $true + Assert-KeyAttributes $key.Attributes 'RSA' $true $newexpires $newnbf $null + + # Create a hsm key for updating + $keyname=Get-KeyName 'uhsm' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'HSM' -Expires $expires -NotBefore $nbf -KeyOps $ops -Disable + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA-HSM' $false $expires $nbf $ops + + # Update Expires + $key=Set-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Expires $newexpires -NotBefore $newnbf -Enable $true + Assert-KeyAttributes $key.Attributes 'RSA-HSM' $true $newexpires $newnbf $null +} + + +<# +.SYNOPSIS +Tests Set-AzureKeyVaultKey with positionalParameter +#> +function Test_SetKeyPositionalParameter +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'positional' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + + Set-AzureKeyVaultKey $keyVault $keyname -Expires $newexpires -NotBefore $newnbf -Enable $true +} + +<# +.SYNOPSIS +Tests Set-AzureKeyVaultKey with parameter alias +#> +function Test_SetKeyAliasParameter +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'alias' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + + Set-AzureKeyVaultKey -VaultName $keyVault -KeyName $keyname -Expires $newexpires -NotBefore $newnbf -Enable $true +} + +<# +.SYNOPSIS +Tests set a key in non-exist key vault +#> +function Test_SetKeyInNonExistVault +{ + $keyVault = 'notexistvault' + $keyname=Get-KeyName 'nonexist' + Assert-Throws {Set-AzureKeyVaultKey -VaultName $keyVault -KeyName $keyname -Enable $true} +} + +<# +.SYNOPSIS +Tests set an not exist key +#> +function Test_SetNonExistKey +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'nonexist' + Assert-Throws {Set-AzureKeyVaultKey -VaultName $keyVault -KeyName $keyname -Enable $true} +} + +<# +.SYNOPSIS +Tests set invalid +#> +function Test_SetInvalidAttributes +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'invalidattr' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + + Assert-Throws {Set-AzureKeyVaultKey -VaultName $keyVault -KeyName $keyname -Expires $nbf -NotBefore $expires } + +} + +<# +.SYNOPSIS +Tests set key in a vault not have permission +#> +function Test_SetKeyInNoPermissionVault +{ + $keyVault = Get-KeyVault $false + $keyname= Get-KeyName 'nopermission' + Assert-Throws {Set-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Enable $true} +} + + +<# +.SYNOPSIS +Tests get one key from key vault +#> + +function Test_GetOneKey +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'getone' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + Assert-KeyAttributes $key.Attributes 'RSA' $true $null $null $null + + $key=Get-AzureKeyVaultKey -VaultName $keyVault -Name $keyname + Assert-KeyAttributes $key.Attributes 'RSA' $true $null $null $null +} + +<# +.SYNOPSIS +Tests get all keys from key vault +#> + +function Test_GetAllKeys +{ + $keyVault = Get-KeyVault + $keypartialname=Get-KeyName 'get' + $total=2 + for ($i=0;$i -lt $total; $i++) + { + $keyname = $keypartialname+$i; + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + } + + $keys=Get-AzureKeyVaultKey -VaultName $keyVault + Assert-True { $keys.Count -ge $total } +} + +<# +.SYNOPSIS +Tests get previous version of a key from key vault +#> + +function Test_GetPreviousVersionOfKey +{ + $keyOperation = 'encrypt' + + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'getversion' + $key1=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' -Disable -NotBefore $nbf -Expires $expires -KeyOps $ops + + $global:createdKeys += $keyname + Assert-KeyAttributes -keyAttr $key1.Attributes -keytype 'RSA' -keyenable $false -keyexp $expires -keynbf $nbf -keyops $ops + + $key2=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-KeyAttributes $key2.Attributes 'RSA' $true $null $null $null + + $key3=Get-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Version $key1.Version + Assert-KeyAttributes -keyAttr $key3.Attributes -keytype 'RSA' -keyenable $false -keyexp $expires -keynbf $nbf -keyops $ops + + $key4=Get-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Version $key2.Version + Assert-KeyAttributes $key4.Attributes 'RSA' $true $null $null $null +} + +<# +.SYNOPSIS +Tests Get-AzureKeyVaultKey with positional Parameter +#> +function Test_GetKeyPositionalParameter +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'positional' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + + $key=Get-AzureKeyVaultKey $keyVault $keyname + Assert-NotNull $key +} + +<# +.SYNOPSIS +Tests Get-AzureKeyVaultKey with parameter alias +#> +function Test_GetKeyAliasParameter +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'alias' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + + $key=Get-AzureKeyVaultKey -VaultName $keyVault -KeyName $keyname + Assert-NotNull $key +} + +<# +.SYNOPSIS +Tests get a key from non-exist key vault +#> +function Test_GetKeysInNonExistVault +{ + $keyVault = 'notexistvault' + Assert-Throws {Get-AzureKeyVaultKey -VaultName $keyVault} +} + +<# +.SYNOPSIS +Tests get a non-exist key +#> +function Test_GetNonExistKey +{ + $keyVault = Get-KeyVault + $keyname = 'notexist' + Assert-Throws {Get-AzureKeyVaultKey -VaultName $keyVault -KeyName $keyname} +} + +<# +.SYNOPSIS +Tests get key in a vault not have permission +#> +function Test_GetKeyInNoPermissionVault +{ + $keyVault = Get-KeyVault $false + Assert-Throws {Get-AzureKeyVaultKey -VaultName $keyVault} +} + + +<# +.SYNOPSIS +Tests remove a key +#> +function Test_RemoveKeyWithoutPrompt +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'remove' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + + $key=Remove-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Force -Confirm:$false -PassThru + Assert-NotNull $key + + Assert-Throws { Get-AzureKeyVaultKey -VaultName $keyVault -Name $keyname} +} + +<# +.SYNOPSIS +Tests Remove-AzureKeyVaultKey with whatif option +#> +function Test_RemoveKeyWhatIf +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'whatif' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + + Remove-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -WhatIf -Force + + $key=Get-AzureKeyVaultKey -VaultName $keyVault -Name $keyname + Assert-NotNull $key +} + +<# +.SYNOPSIS +Tests Remove-AzureKeyVaultKey with positional Parameter +#> +function Test_RemoveKeyPositionalParameter +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'positional' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + + Remove-AzureKeyVaultKey $keyVault $keyname -Force -Confirm:$false + + Assert-Throws { Get-AzureKeyVaultKey -VaultName $keyVault -Name $keyname} +} + +<# +.SYNOPSIS +Tests Remove-AzureKeyVaultKey with parameter alias +#> +function Test_RemoveKeyAliasParameter +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'alias' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + + Remove-AzureKeyVaultKey -VaultName $keyVault -KeyName $keyname -Force -Confirm:$false + + Assert-Throws { Get-AzureKeyVaultKey -VaultName $keyVault -Name $keyname} +} + +<# +.SYNOPSIS +Tests get a key from non-exist key vault +#> +function Test_RemoveKeyInNonExistVault +{ + $keyVault = 'notexistvault' + $keyname = 'notexist' + Assert-Throws {Remove-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Force -Confirm:$false} +} + +<# +.SYNOPSIS +Tests remove a non-exist key +#> +function Test_RemoveNonExistKey +{ + $keyVault = Get-KeyVault + $keyname = 'notexist' + Assert-Throws {Remove-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Force -Confirm:$false} +} + +<# +.SYNOPSIS +Tests remove key in a vault not have permission +#> +function Test_RemoveKeyInNoPermissionVault +{ + $keyVault = Get-KeyVault $false + $keyname= Get-KeyName 'nopermission' + Assert-Throws {Remove-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Enable $true -Force -Confirm:$false} +} + +<# +.SYNOPSIS +Tests backup and restore a key +#> +function Test_BackupRestoreKey +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'backuprestore' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + + $backupblob = Backup-AzureKeyVaultKey -VaultName $keyVault -KeyName $keyname + Remove-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Force -Confirm:$false + $restoredKey = Restore-AzureKeyVaultKey -VaultName $keyVault -InputFile $backupblob + Assert-KeyAttributes $restoredKey.Attributes 'RSA' $true $null $null $null +} + +<# +.SYNOPSIS +Tests backup a none existing key +#> +function Test_BackupNonExisitingKey +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'backupnonexisting' + + Assert-Throws { Backup-AzureKeyVaultKey -VaultName $keyVault -KeyName $keyname } +} + +<# +.SYNOPSIS +Tests backup a key to a none existing file +#> +function Test_BackupToNonExisitingFile +{ + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'backupnonexisting' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + + Assert-Throws { Backup-AzureKeyVaultKey -VaultName $keyVault -KeyName $keyname -OutputFile c:\nonexisting.blob } +} + +<# +.SYNOPSIS +Tests restore a key from a none existing file +#> +function Test_RestoreFromNonExistingFile +{ + $keyVault = Get-KeyVault + + Assert-Throws { Restore-AzureKeyVaultKey -VaultName $keyVault -InputFile c:\nonexisting.blob } +} + +<# +.SYNOPSIS +Tests pipeline commands to update attributes of multiple keys +#> + +function Test_PipelineUpdateKeys +{ + $keyVault = Get-KeyVault + $keypartialname=Get-KeyName 'pipeupdate' + $total=2 + for ($i=0;$i -lt $total; $i++) + { + $keyname = $keypartialname+$i; + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + } + + Get-AzureKeyVaultKey $keyVault | Where-Object {$_.KeyName -like $keypartialname+'*'} | Set-AzureKeyVaultKey -Enable $false + + Get-AzureKeyVaultKey $keyVault | Where-Object {$_.KeyName -like $keypartialname+'*'} | ForEach-Object { Assert-False { return $_.Attributes.Enable } } + } + +<# +.SYNOPSIS +Tests pipeline commands to remove multiple keys +#> + +function Test_PipelineRemoveKeys +{ + $keyVault = Get-KeyVault + $keypartialname=Get-KeyName 'piperemove' + $total=2 + for ($i=0;$i -lt $total; $i++) + { + $keyname = $keypartialname+$i; + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + } + + Get-AzureKeyVaultKey $keyVault | Where-Object {$_.KeyName -like $keypartialname+'*'} | Remove-AzureKeyVaultKey -Force -Confirm:$false + + $keys = Get-AzureKeyVaultKey $keyVault | Where-Object {$_.KeyName -like $keypartialname+'*'} + Assert-AreEqual $keys.Count 0 +} \ No newline at end of file diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/VaultSecretTests.ps1 b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/VaultSecretTests.ps1 new file mode 100644 index 000000000000..dcde35a77d92 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/VaultSecretTests.ps1 @@ -0,0 +1,385 @@ +$data=123 +$securedata=$data | ConvertTo-SecureString -AsPlainText -Force +$newdata=456 +$newsecuredata=$newdata | ConvertTo-SecureString -AsPlainText -Force + +<# +.SYNOPSIS +Create a secret +#> + +function Test_CreateSecret +{ + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'default' + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + Assert-AreEqual $sec.SecretValueText $data +} + + +<# +.SYNOPSIS +Update a secret +#> + +function Test_UpdateSecret +{ + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'update' + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + Assert-AreEqual $sec.SecretValueText $data + + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $newsecuredata + Assert-NotNull $sec + Assert-AreEqual $sec.SecretValueText $newdata +} + +<# +.SYNOPSIS +Tests Set-AzureKeyVaultSecret with positional parameter +#> +function Test_SetSecretPositionalParameter +{ + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'positional' + $sec=Set-AzureKeyVaultSecret $keyVault $secretname $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + Assert-AreEqual $sec.SecretValueText $data +} + +<# +.SYNOPSIS +Tests Set-AzureKeyVaultSecret with parameter alias +#> +function Test_SetSecretAliasParameter +{ + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'alias' + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -SecretName $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + Assert-AreEqual $sec.SecretValueText $data +} + +<# +.SYNOPSIS +Tests set a secret in non-exist key vault +#> +function Test_SetSecretInNonExistVault +{ + $keyVault = 'notexistvault' + $secretname= Get-SecretName 'nonexist' + Assert-Throws {Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata} +} + +<# +.SYNOPSIS +Tests set secret in a vault the user does not have permission +#> +function Test_SetSecretInNoPermissionVault +{ + $keyVault = Get-KeyVault $false + $secretname= Get-SecretName 'nopermission' + Assert-Throws {Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata} +} + +<# +.SYNOPSIS +Tests get one secret from key vault +#> + +function Test_GetOneSecret +{ + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'getone' + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + Assert-AreEqual $sec.SecretValueText $data + + $sec=Get-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname + Assert-NotNull $sec + Assert-AreEqual $sec.SecretValueText $data +} + +<# +.SYNOPSIS +Tests get all secrets from key vault +#> + +function Test_GetAllSecrets +{ + $keyVault = Get-KeyVault + $secretpartialname=Get-SecretName 'get' + $total=2 + for ($i=0;$i -lt $total; $i++) + { + $secretname = $secretpartialname+$i; + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + } + + $secs=Get-AzureKeyVaultSecret -VaultName $keyVault + Assert-True { $secs.Count -ge $total } +} + +<# +.SYNOPSIS +Tests get previous version of a secret from key vault +#> + +function Test_GetPreviousVersionOfSecret +{ + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'getversion' + + # set secret for the first time + $sec1=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec1 + $global:createdSecrets += $secretname + Assert-AreEqual $sec1.SecretValueText $data + + # set the same secret with new values but with new version + $sec2=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $newsecuredata + Assert-NotNull $sec2 + Assert-AreEqual $sec2.SecretValueText $newdata + + # Get the older version of the secret + $sec3=Get-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -Version $sec1.Version + Assert-NotNull $sec3 + Assert-AreEqual $sec3.SecretValueText $data + + # Get the newer version of the secret + $sec4=Get-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -Version $sec2.Version + Assert-NotNull $sec4 + Assert-AreEqual $sec4.SecretValueText $newdata +} + +<# +.SYNOPSIS +Tests Get-AzureKeyVaultSecret with positional parameter +#> +function Test_GetSecretPositionalParameter +{ + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'positional' + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + Assert-AreEqual $sec.SecretValueText $data + + $sec=Get-AzureKeyVaultSecret $keyVault $secretname + Assert-NotNull $sec + Assert-AreEqual $sec.SecretValueText $data +} + +<# +.SYNOPSIS +Tests Get-AzureKeyVaultSecret with parameter alias +#> +function Test_GetSecretAliasParameter +{ + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'alias' + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + Assert-AreEqual $sec.SecretValueText $data + + $sec=Get-AzureKeyVaultSecret -VaultName $keyVault -SecretName $secretname + Assert-NotNull $sec + Assert-AreEqual $sec.SecretValueText $data +} + +<# +.SYNOPSIS +Tests get a secret in non-exist key vault +#> +function Test_GetSecretInNonExistVault +{ + $keyVault = 'notexistvault' + Assert-Throws {Get-AzureKeyVaultSecret -VaultName $keyVault} +} + +<# +.SYNOPSIS +Tests get a non-exist secret +#> +function Test_GetNonExistSecret +{ + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'notexistvault' + + Assert-Throws {Get-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname} +} + +<# +.SYNOPSIS +Tests get secret in a vault the user does not have permission +#> +function Test_GetSecretInNoPermissionVault +{ + $keyVault = Get-KeyVault $false + Assert-Throws {Get-AzureKeyVaultSecret -VaultName $keyVault} +} + +<# +.SYNOPSIS +Tests remove a secret +#> +function Test_RemoveSecretWithoutPrompt +{ + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'remove' + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + + $sec=Remove-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -Force -Confirm:$false -PassThru + Assert-NotNull $sec + + Assert-Throws { Get-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname } +} + +<# +.SYNOPSIS +Tests Remove-AzureKeyVaultSecret with whatif option +#> +function Test_RemoveSecretWhatIf +{ + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'whatif' + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + + Remove-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -WhatIf -Force + + $sec=Get-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname + Assert-NotNull $sec +} + +<# +.SYNOPSIS +Tests Remove-AzureKeyVaultSecret with positional parameter +#> +function Test_RemoveSecretPositionalParameter +{ + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'positional' + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + Assert-AreEqual $sec.SecretValueText $data + + Remove-AzureKeyVaultSecret $keyVault $secretname -Force -Confirm:$false + + Assert-Throws {Get-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname} +} + +<# +.SYNOPSIS +Tests Remove-AzureKeyVaultSecret with parameter alias +#> +function Test_RemoveSecretAliasParameter +{ + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'alias' + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + Assert-AreEqual $sec.SecretValueText $data + + Remove-AzureKeyVaultSecret -VaultName $keyVault -SecretName $secretname -Force -Confirm:$false + + Assert-Throws {Get-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname} +} + +<# +.SYNOPSIS +Tests remove a secret in non-exist key vault +#> +function Test_RemoveSecretInNonExistVault +{ + $keyVault = 'notexistvault' + $secretname= Get-SecretName 'notexistvault' + Assert-Throws {Remove-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -Force -Confirm:$false} +} + +<# +.SYNOPSIS +Tests remove a non-exist secret +#> +function Test_RemoveNonExistSecret +{ + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'notexistvault' + + Assert-Throws {Remove-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -Force -Confirm:$false} +} + +<# +.SYNOPSIS +Tests Remove a secret in a vault the user does not have permission +#> +function Test_RemoveSecretInNoPermissionVault +{ + $keyVault = Get-KeyVault $false + $secretname= Get-SecretName 'nopermission' + Assert-Throws {Remove-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -Force -Confirm:$false} +} + +<# +.SYNOPSIS +Tests pipeline commands to update attributes of multiple secret +#> + +function Test_PipelineUpdateSecrets +{ + $keyVault = Get-KeyVault + $secretpartialname=Get-KeyName 'pipeupdate' + $total=2 + for ($i=0;$i -lt $total; $i++) + { + $secretname = $secretpartialname+$i; + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + Assert-AreEqual $sec.SecretValueText $data + } + + Get-AzureKeyVaultSecret $keyVault | Where-Object {$_.SecretName -like $secretpartialname+'*'} | Set-AzureKeyVaultSecret -SecretValue $newsecuredata + Get-AzureKeyVaultSecret $keyVault | Where-Object {$_.SecretName -like $secretpartialname+'*'} | ForEach-Object { Assert-AreEqual $_.SecretValueText $newdata } +} + +<# +.SYNOPSIS +Tests pipeline commands to remove multiple secrets +#> + +function Test_PipelineRemoveSecrets +{ + $keyVault = Get-KeyVault + $secretpartialname=Get-KeyName 'piperemove' + $total=2 + for ($i=0;$i -lt $total; $i++) + { + $secretname = $secretpartialname+$i; + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + Assert-AreEqual $sec.SecretValueText $data + } + + + Get-AzureKeyVaultSecret $keyVault | Where-Object {$_.SecretName -like $secretpartialname+'*'} | Remove-AzureKeyVaultSecret -Force -Confirm:$false + + $secs = Get-AzureKeyVaultSecret $keyVault | Where-Object {$_.SecretName -like $secretpartialname+'*'} + Assert-AreEqual $secs.Count 0 +} \ No newline at end of file diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/VaultUITests.ps1 b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/VaultUITests.ps1 new file mode 100644 index 000000000000..296b066f91a2 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/VaultUITests.ps1 @@ -0,0 +1,181 @@ +$pfxpwd='123' +$securepfxpwd=$pfxpwd | ConvertTo-SecureString -AsPlainText -Force +$data=123 +$securedata=$data | ConvertTo-SecureString -AsPlainText -Force + +<# +.SYNOPSIS +Tests remove a key with two confirmations +#> +function Test_RemoveKeyWithTwoConfirmations +{ + Write-Host "Type 'Yes' twice" + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'remove' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + + $cr=$global:ConfirmPreference + $global:ConfirmPreference="High" + Remove-AzureKeyVaultKey -VaultName $keyVault -Name $keyname + $global:ConfirmPreference=$cr + + Assert-Throws { Get-AzureKeyVaultKey -VaultName $keyVault -Name $keyname} +} + +<# +.SYNOPSIS +Tests remove a key with one confirmation +#> +function Test_RemoveKeyWithOneConfirmations +{ + Write-Host "Type 'Yes' once" + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'remove' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + + $cr=$global:ConfirmPreference + $global:ConfirmPreference="High" + Remove-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Force + $global:ConfirmPreference=$cr + + Assert-Throws { Get-AzureKeyVaultKey -VaultName $keyVault -Name $keyname} +} + +<# +.SYNOPSIS +Tests cancel removing a key with once +#> +function Test_CancelKeyRemovalOnce +{ + Write-Host "Type 'No' once" + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'remove' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + + $cr=$global:ConfirmPreference + $global:ConfirmPreference="High" + Remove-AzureKeyVaultKey -VaultName $keyVault -Name $keyname + $global:ConfirmPreference=$cr + + $key=Get-AzureKeyVaultKey -VaultName $keyVault -Name $keyname + Assert-NotNull $key +} + +<# +.SYNOPSIS +Tests cancel removing a key with two prompts +#> +function Test_ConfirmThenCancelKeyRemoval +{ + Write-Host "Type 'Yes' first. Then type 'No'" + $keyVault = Get-KeyVault + $keyname=Get-KeyName 'remove' + $key=Add-AzureKeyVaultKey -VaultName $keyVault -Name $keyname -Destination 'Software' + Assert-NotNull $key + $global:createdKeys += $keyname + + $cr=$global:ConfirmPreference + $global:ConfirmPreference="High" + Remove-AzureKeyVaultKey -VaultName $keyVault -Name $keyname + $global:ConfirmPreference=$cr + + $key=Get-AzureKeyVaultKey -VaultName $keyVault -Name $keyname + Assert-NotNull $key +} + + + +<# +.SYNOPSIS +Tests remove a secret with two confirmations +#> +function Test_RemoveSecretWithTwoConfirmations +{ + Write-Host "Type 'Yes' twice" + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'remove' + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + + $cr=$global:ConfirmPreference + $global:ConfirmPreference="High" + Remove-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname + $global:ConfirmPreference=$cr + + Assert-Throws { Get-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname } +} + +<# +.SYNOPSIS +Tests remove a secret with one confirmations +#> +function Test_RemoveSecretWithOneConfirmations +{ + Write-Host "Type 'Yes' once" + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'remove' + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + + $cr=$global:ConfirmPreference + $global:ConfirmPreference="High" + Remove-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -Force + $global:ConfirmPreference=$cr + + Assert-Throws { Get-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname } +} + +<# +.SYNOPSIS +Tests cancel removing a secret with once +#> +function Test_CancelSecretRemovalOnce +{ + Write-Host "Type 'No' once" + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'remove' + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + + $cr=$global:ConfirmPreference + $global:ConfirmPreference="High" + Remove-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname + $global:ConfirmPreference=$cr + + $sec=Get-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname + Assert-NotNull $sec +} + +<# +.SYNOPSIS +Tests cancel removing a secret with two prompts +#> +function Test_ConfirmThenCancelSecretRemoval +{ + Write-Host "Type 'Yes' first. Then type 'No'" + $keyVault = Get-KeyVault + $secretname= Get-SecretName 'remove' + $sec=Set-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname -SecretValue $securedata + Assert-NotNull $sec + $global:createdSecrets += $secretname + + $cr=$global:ConfirmPreference + $global:ConfirmPreference="High" + Remove-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname + $global:ConfirmPreference=$cr + + $sec=Get-AzureKeyVaultSecret -VaultName $keyVault -Name $secretname + Assert-NotNull $sec +} + + + diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/bvtdata/byoktest.byok b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/bvtdata/byoktest.byok new file mode 100644 index 000000000000..a8c9ed149309 Binary files /dev/null and b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/bvtdata/byoktest.byok differ diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/bvtdata/pfxtest.pfx b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/bvtdata/pfxtest.pfx new file mode 100644 index 000000000000..fefc03c0d0a0 Binary files /dev/null and b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/bvtdata/pfxtest.pfx differ diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/proddata/byoktest.byok b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/proddata/byoktest.byok new file mode 100644 index 000000000000..690e20b0319e Binary files /dev/null and b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/proddata/byoktest.byok differ diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/proddata/pfxtest.pfx b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/proddata/pfxtest.pfx new file mode 100644 index 000000000000..fefc03c0d0a0 Binary files /dev/null and b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/proddata/pfxtest.pfx differ diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/readme.txt b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/readme.txt new file mode 100644 index 000000000000..dd7823dab9f9 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/Scripts/readme.txt @@ -0,0 +1,5 @@ +This folder contains ps1 scripts testing Azure Key Vault cmdlets. +The steps to run these tests are: +1. Copy this folder on a server 2012 R2 or windows 8.1 machine with Azure Powershell msi installed. +2. Setup Azure account. Please refer to "Key Vault Powershell Sign-off criteria" in spec store for user account setup. +3. Run 63 scripting tests using RunKeyVaultTests.ps1. Run 8 tests required user inputs using RunUITests.ps1. \ No newline at end of file diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/UnitTests/KeyVaultUnitTestBase.cs b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/UnitTests/KeyVaultUnitTestBase.cs new file mode 100644 index 000000000000..e2e2faea1a6c --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/UnitTests/KeyVaultUnitTestBase.cs @@ -0,0 +1,58 @@ +// ---------------------------------------------------------------------------------- +// +// 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.KeyVault.Models; +using Moq; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.Test +{ + public class KeyVaultUnitTestBase + { + protected const string subscriptionId = "subscriptionid"; + + protected const string ResourceGroupName = "bar"; + + protected const string Location = "centralus"; + + protected const string VaultName = "vaultname"; + + protected const string KeyName = "keyfoo"; + + protected const string KeyName2 = "keyfoo2"; + + protected const string KeyVersion = "keyVersion"; + + protected const string SecretValue = "secval"; + + protected const string SecretValue2 = "secval2"; + + protected const string SecretName = "secfoo"; + + protected const string SecretName2 = "secfoo2"; + + protected const string SecretVersion = "secretVersion"; + + protected Mock keyVaultClientMock; + + protected Mock commandRuntimeMock; + + public virtual void SetupTest() + { + keyVaultClientMock = new Mock(); + + commandRuntimeMock = new Mock(); + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/UnitTests/RemoveKeyVaultKeyTests.cs b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/UnitTests/RemoveKeyVaultKeyTests.cs new file mode 100644 index 000000000000..a6323f9f3180 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/UnitTests/RemoveKeyVaultKeyTests.cs @@ -0,0 +1,126 @@ +// ---------------------------------------------------------------------------------- +// +// 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.KeyVault.Cmdlets; +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.WindowsAzure.Commands.ScenarioTest; +using Moq; +using System; +using System.Management.Automation; +using Xunit; +using WebKey = Microsoft.Azure.Commands.KeyVault.WebKey; + +namespace Microsoft.Azure.Commands.KeyVault.Test.UnitTests +{ + public class RemoveKeyVaultKeyTests : KeyVaultUnitTestBase + { + private RemoveAzureKeyVaultKey cmdlet; + private KeyAttributes keyAttributes; + private WebKey.JsonWebKey webKey; + private KeyBundle keyBundle; + + public RemoveKeyVaultKeyTests() + { + base.SetupTest(); + + cmdlet = new RemoveAzureKeyVaultKey() + { + CommandRuntime = commandRuntimeMock.Object, + DataServiceClient = keyVaultClientMock.Object, + VaultName = VaultName + }; + + keyAttributes = new KeyAttributes(true, DateTime.Now, DateTime.Now, "HSM", new string[]{"All"}); + webKey = new WebKey.JsonWebKey(); + keyBundle = new KeyBundle() { Attributes = keyAttributes, Key = webKey, Name = KeyName, VaultName = VaultName }; + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void CanRemvoeKeyWithPassThruTest() + { + KeyBundle expected = keyBundle; + keyVaultClientMock.Setup(kv => kv.DeleteKey(VaultName, KeyName)).Returns(expected).Verifiable(); + + // Mock the should process to return true + commandRuntimeMock.Setup(cr => cr.ShouldProcess(KeyName, It.IsAny())).Returns(true); + cmdlet.Name = KeyName; + cmdlet.Force = true; + cmdlet.PassThru = true; + cmdlet.ExecuteCmdlet(); + + // Assert + keyVaultClientMock.VerifyAll(); + commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Once()); + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void CanRemoveKeyWithNoPassThruTest() + { + KeyBundle expected = keyBundle; + keyVaultClientMock.Setup(kv => kv.DeleteKey(VaultName, KeyName)).Returns(expected).Verifiable(); + + // Mock the should process to return true + commandRuntimeMock.Setup(cr => cr.ShouldProcess(KeyName, It.IsAny())).Returns(true); + cmdlet.Name = KeyName; + cmdlet.Force = true; + cmdlet.ExecuteCmdlet(); + + keyVaultClientMock.VerifyAll(); + + // Without PassThru never call WriteObject + commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Never()); + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void CannotRemoveKeyWithoutShouldProcessOrForceConfirmationTest() + { + KeyBundle expected = null; + + cmdlet.Name = KeyName; + cmdlet.PassThru = true; + cmdlet.ExecuteCmdlet(); + + // Write object should be called with null input + commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Once()); + + // Should process but without force + commandRuntimeMock.Setup(cr => cr.ShouldProcess(KeyName, It.IsAny())).Returns(false); + cmdlet.ExecuteCmdlet(); + + // Write object should be called with null input + commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Exactly(2)); + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void ErrorRemvoeKeyWithPassThruTest() + { + keyVaultClientMock.Setup(kv => kv.DeleteKey(VaultName, KeyName)).Throws(new Exception()).Verifiable(); + + // Mock the should process to return true + commandRuntimeMock.Setup(cr => cr.ShouldProcess(KeyName, It.IsAny())).Returns(true); + cmdlet.Name = KeyName; + cmdlet.Force = true; + cmdlet.PassThru = true; + cmdlet.ExecuteCmdlet(); + + // Assert + keyVaultClientMock.VerifyAll(); + commandRuntimeMock.Verify(f => f.WriteError(It.IsAny()), Times.Once()); + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/UnitTests/RemoveKeyVaultSecretTests.cs b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/UnitTests/RemoveKeyVaultSecretTests.cs new file mode 100644 index 000000000000..85938345aafe --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/UnitTests/RemoveKeyVaultSecretTests.cs @@ -0,0 +1,130 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using Microsoft.Azure.Commands.KeyVault.Client; +using Microsoft.Azure.Commands.KeyVault.Cmdlets; +using Cmdlet = Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.WindowsAzure.Commands.ScenarioTest; +using Moq; +using System; +using System.Management.Automation; +using System.Security; +using Xunit; + +namespace Microsoft.Azure.Commands.KeyVault.Test.UnitTests +{ + public class RemoveKeyVaultSecretTests : KeyVaultUnitTestBase + { + private RemoveAzureKeyVaultSecret cmdlet; + + public RemoveKeyVaultSecretTests() + { + base.SetupTest(); + + cmdlet = new RemoveAzureKeyVaultSecret() + { + CommandRuntime = commandRuntimeMock.Object, + DataServiceClient = keyVaultClientMock.Object, + VaultName = VaultName + }; + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void CanRemoveSecretWithPassThruTest() + { + SecureString secureSecretValue = SecretValue.ConvertToSecureString(); + Cmdlet.Secret expected = new Cmdlet.Secret() { Name = SecretName, VaultName = VaultName, SecretValue = secureSecretValue }; + keyVaultClientMock.Setup(kv => kv.DeleteSecret(VaultName, SecretName)).Returns(expected).Verifiable(); + + // Mock the should process to return true + commandRuntimeMock.Setup(cr => cr.ShouldProcess(SecretName, It.IsAny())).Returns(true); + cmdlet.Name = SecretName; + cmdlet.Force = true; + cmdlet.PassThru = true; + cmdlet.ExecuteCmdlet(); + + keyVaultClientMock.VerifyAll(); + commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Once()); + + //No force but should continue + commandRuntimeMock.Setup(cr => cr.ShouldProcess(SecretName, It.IsAny())).Returns(true); + commandRuntimeMock.Setup(cr => cr.ShouldContinue(It.IsAny(), It.IsAny())).Returns(true); + cmdlet.Force = false; + cmdlet.PassThru = true; + cmdlet.ExecuteCmdlet(); + + keyVaultClientMock.VerifyAll(); + commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Exactly(2)); + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void CanRemoveSecretWithNoPassThruTest() + { + SecureString secureSecretValue = SecretValue.ConvertToSecureString(); + Cmdlet.Secret expected = new Cmdlet.Secret() { Name = SecretName, VaultName = VaultName, SecretValue = secureSecretValue }; + keyVaultClientMock.Setup(kv => kv.DeleteSecret(VaultName, SecretName)).Returns(expected).Verifiable(); + + // Mock the should process to return true + commandRuntimeMock.Setup(cr => cr.ShouldProcess(SecretName, It.IsAny())).Returns(true); + cmdlet.Name = SecretName; + cmdlet.Force = true; + cmdlet.ExecuteCmdlet(); + + keyVaultClientMock.VerifyAll(); + + // Without PassThru never call WriteObject + commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Never()); + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void CannotRemoveSecretWithoutShouldProcessOrForceConfirmationTest() + { + Cmdlet.Secret expected = null; + + cmdlet.Name = SecretName; + cmdlet.PassThru = true; + cmdlet.ExecuteCmdlet(); + + // Write object should be called with null input + commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Once()); + + // Should process but without force + commandRuntimeMock.Setup(cr => cr.ShouldProcess(SecretName, It.IsAny())).Returns(true); + cmdlet.ExecuteCmdlet(); + + // Write object should be called with null input + commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Exactly(2)); + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void ErrorRemoveSecretWithPassThruTest() + { + keyVaultClientMock.Setup(kv => kv.DeleteSecret(VaultName, SecretName)).Throws(new Exception()).Verifiable(); + + // Mock the should process to return true + commandRuntimeMock.Setup(cr => cr.ShouldProcess(SecretName, It.IsAny())).Returns(true); + cmdlet.Name = SecretName; + cmdlet.Force = true; + cmdlet.PassThru = true; + cmdlet.ExecuteCmdlet(); + + keyVaultClientMock.VerifyAll(); + commandRuntimeMock.Verify(f => f.WriteError(It.IsAny()), Times.Once()); + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/UnitTests/SetKeyVaultKeyTests.cs b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/UnitTests/SetKeyVaultKeyTests.cs new file mode 100644 index 000000000000..3ae96085a2ff --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/UnitTests/SetKeyVaultKeyTests.cs @@ -0,0 +1,93 @@ +// ---------------------------------------------------------------------------------- +// +// 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.KeyVault.Cmdlets; +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.WindowsAzure.Commands.ScenarioTest; +using Moq; +using System; +using System.Management.Automation; +using Xunit; +using WebKey = Microsoft.Azure.Commands.KeyVault.WebKey; + +namespace Microsoft.Azure.Commands.KeyVault.Test.UnitTests +{ + public class SetKeyVaultKeyTests : KeyVaultUnitTestBase + { + private SetAzureKeyVaultKey cmdlet; + private KeyAttributes keyAttributes; + private WebKey.JsonWebKey webKey; + private KeyBundle keyBundle; + + public SetKeyVaultKeyTests() + { + base.SetupTest(); + + keyAttributes = new KeyAttributes(true, DateTime.Now, DateTime.Now, null, null); + webKey = new WebKey.JsonWebKey(); + keyBundle = new KeyBundle() { Attributes = keyAttributes, Key = webKey, Name = KeyName, VaultName = VaultName, Version = KeyVersion }; + + cmdlet = new SetAzureKeyVaultKey() + { + CommandRuntime = commandRuntimeMock.Object, + DataServiceClient = keyVaultClientMock.Object, + VaultName = VaultName, + Enable = (bool)keyAttributes.Enabled, + Expires = keyAttributes.Expires, + NotBefore = keyAttributes.NotBefore, + Name = KeyName + }; + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void CanSetKeyTest() + { + KeyBundle expected = keyBundle; + keyVaultClientMock.Setup(kv => kv.SetKey(VaultName, KeyName, + It.Is(kt => kt.Enabled == keyAttributes.Enabled + && kt.Expires == keyAttributes.Expires + && kt.NotBefore == keyAttributes.NotBefore + && kt.KeyType == keyAttributes.KeyType + && kt.KeyOps == keyAttributes.KeyOps))) + .Returns(expected).Verifiable(); + + cmdlet.ExecuteCmdlet(); + + // Assert + keyVaultClientMock.VerifyAll(); + commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Once()); + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void ErrorSetKeyTest() + { + KeyBundle expected = keyBundle; + keyVaultClientMock.Setup(kv => kv.SetKey(VaultName, KeyName, + It.Is(kt => kt.Enabled == keyAttributes.Enabled + && kt.Expires == keyAttributes.Expires + && kt.NotBefore == keyAttributes.NotBefore + && kt.KeyType == keyAttributes.KeyType + && kt.KeyOps == keyAttributes.KeyOps))) + .Throws(new Exception("exception")).Verifiable(); + + cmdlet.ExecuteCmdlet(); + + // Assert + keyVaultClientMock.VerifyAll(); + commandRuntimeMock.Verify(f => f.WriteError(It.IsAny()), Times.Once()); + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/UnitTests/SetKeyVaultSecretTests.cs b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/UnitTests/SetKeyVaultSecretTests.cs new file mode 100644 index 000000000000..5017c612786e --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/UnitTests/SetKeyVaultSecretTests.cs @@ -0,0 +1,77 @@ +// ---------------------------------------------------------------------------------- +// +// 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.KeyVault.Client; +using Microsoft.Azure.Commands.KeyVault.Cmdlets; +using Cmdlet = Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.WindowsAzure.Commands.ScenarioTest; +using Moq; +using System; +using System.Management.Automation; +using System.Security; +using Xunit; + +namespace Microsoft.Azure.Commands.KeyVault.Test.UnitTests +{ + public class SetKeyVaultSecretTests : KeyVaultUnitTestBase + { + private SetAzureKeyVaultSecret cmdlet; + + public SetKeyVaultSecretTests() + { + base.SetupTest(); + + cmdlet = new SetAzureKeyVaultSecret() + { + CommandRuntime = commandRuntimeMock.Object, + DataServiceClient = keyVaultClientMock.Object, + VaultName = VaultName + }; + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void CanSetSecretTest() + { + SecureString secureSecretValue = SecretValue.ConvertToSecureString(); + Cmdlet.Secret expected = new Cmdlet.Secret() { Name = SecretName, VaultName = VaultName, SecretValue = secureSecretValue, Version = SecretVersion }; + keyVaultClientMock.Setup(kv => kv.SetSecret(VaultName, SecretName, secureSecretValue)).Returns(expected).Verifiable(); + + cmdlet.Name = SecretName; + cmdlet.SecretValue = secureSecretValue; + cmdlet.ExecuteCmdlet(); + + // Assert + keyVaultClientMock.VerifyAll(); + commandRuntimeMock.Verify(f => f.WriteObject(expected), Times.Once()); + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void ErrorSetSecretTest() + { + SecureString secureSecretValue = SecretValue.ConvertToSecureString(); + keyVaultClientMock.Setup(kv => kv.SetSecret(VaultName, SecretName, secureSecretValue)) + .Throws(new Exception("exception")).Verifiable(); + + cmdlet.Name = SecretName; + cmdlet.SecretValue = secureSecretValue; + cmdlet.ExecuteCmdlet(); + + // Assert + keyVaultClientMock.VerifyAll(); + commandRuntimeMock.Verify(f => f.WriteError(It.IsAny()), Times.Once()); + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault.Test/packages.config b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/packages.config new file mode 100644 index 000000000000..eaefc95c996e --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault.Test/packages.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Client/HttpBearerChallenge.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/HttpBearerChallenge.cs new file mode 100644 index 000000000000..e6a5adbf3c7a --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/HttpBearerChallenge.cs @@ -0,0 +1,214 @@ +// ---------------------------------------------------------------------------------- +// +// 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; + +namespace Microsoft.Azure.Commands.KeyVault.Client.Authentication +{ + /// + /// An OAuth2 Bearer Authentication Challenge + /// + public sealed class HttpBearerChallenge + { + private const string Authorization = "authorization"; + private const string AuthorizationUri = "authorization_uri"; + private const string Bearer = "Bearer"; + + /// + /// Tests whether an authentication header is a Bearer challenge + /// + /// + /// This method is forgiving: if the parameter is null, or the scheme + /// in the header is missing, then it will simply return false. + /// + /// The AuthenticationHeaderValue to test + /// True if the header is a Bearer challenge + public static bool IsBearerChallenge(string challenge) + { + if (string.IsNullOrEmpty(challenge)) + return false; + + if (!challenge.Trim().StartsWith(Bearer + " ")) + return false; + + return true; + } + + private Dictionary _parameters = null; + private string _sourceAuthority = null; + private Uri _sourceUri = null; + + /// + /// Parses an HTTP WWW-Authentication Bearer challenge from a server. + /// + /// The AuthenticationHeaderValue to parse + public HttpBearerChallenge(Uri requestUri, string challenge) + { + string authority = ValidateRequestURI(requestUri); + string trimmedChallenge = ValidateChallenge(challenge); + + _sourceAuthority = authority; + _sourceUri = requestUri; + + _parameters = new Dictionary(); + + // Split the trimmed challenge into a set of name=value strings that + // are comma separated. The value fields are expected to be within + // quotation characters that are stripped here. + String[] pairs = trimmedChallenge.Split(new String[] { "," }, StringSplitOptions.RemoveEmptyEntries); + + if (pairs != null && pairs.Length > 0) + { + // Process the name=value strings + for (int i = 0; i < pairs.Length; i++) + { + String[] pair = pairs[i].Split('='); + + if (pair.Length == 2) + { + // We have a key and a value, now need to trim and decode + String key = pair[0].Trim().Trim(new char[] { '\"' }); + String value = pair[1].Trim().Trim(new char[] { '\"' }); + + if (!string.IsNullOrEmpty(key)) + { + _parameters[key] = value; + } + } + } + } + + // Minimum set of parameters + if (_parameters.Count < 1) + throw new ArgumentException("Invalid challenge parameters", "challenge"); + + // Must specify authorization or authorization_uri + if (!_parameters.ContainsKey(Authorization) && !_parameters.ContainsKey(AuthorizationUri)) + throw new ArgumentException("Invalid challenge parameters", "challenge"); + } + + /// + /// Returns the value stored at the specified key. + /// + /// + /// If the key does not exist, will return false and the + /// content of value will not be changed + /// + /// The key to be retrieved + /// The value for the specified key + /// True when the key is found, false when it is not + public bool TryGetValue(string key, out string val) + { + return _parameters.TryGetValue(key, out val); + } + + /// + /// Returns the URI for the Authorization server if present, + /// otherwise string.Empty + /// + public string AuthorizationServer + { + get + { + string value = string.Empty; + + if (_parameters.TryGetValue("authorization_uri", out value)) + return value; + + if (_parameters.TryGetValue("authorization", out value)) + return value; + + return string.Empty; + } + } + + /// + /// Returns the Realm value if present, otherwise the Authority + /// of the request URI given in the ctor + /// + public string Resource + { + get + { + string value = string.Empty; + + if (_parameters.TryGetValue("resource", out value)) + return value; + + return _sourceAuthority; + } + } + + /// + /// Returns the Scope value if present, otherwise string.Empty + /// + public string Scope + { + get + { + string value = string.Empty; + + if (_parameters.TryGetValue("scope", out value)) + return value; + + return string.Empty; + } + } + + public string SourceAuthority + { + get + { + return _sourceAuthority; + } + } + + public Uri SourceUri + { + get + { + return _sourceUri; + } + } + + private static string ValidateChallenge(string challenge) + { + if (string.IsNullOrEmpty(challenge)) + throw new ArgumentNullException("challenge"); + + string trimmedChallenge = challenge.Trim(); + + if (!trimmedChallenge.StartsWith(Bearer + " ")) + throw new ArgumentException("Challenge is not Bearer", "challenge"); + + return trimmedChallenge.Substring(Bearer.Length + 1); + } + + private static string ValidateRequestURI(Uri requestUri) + { + if (null == requestUri) + throw new ArgumentNullException("requestUri"); + + if (!requestUri.IsAbsoluteUri) + throw new ArgumentException("The requestUri must be an absolute URI", "requestUri"); + + if (!requestUri.Scheme.Equals("http", StringComparison.CurrentCultureIgnoreCase) + && !requestUri.Scheme.Equals("https", StringComparison.CurrentCultureIgnoreCase)) + throw new ArgumentException("The requestUri must be HTTP or HTTPS", "requestUri"); + + return requestUri.FullAuthority(); + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Client/HttpBearerChallengeCache.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/HttpBearerChallengeCache.cs new file mode 100644 index 000000000000..7aade902d324 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/HttpBearerChallengeCache.cs @@ -0,0 +1,96 @@ +// ---------------------------------------------------------------------------------- +// +// 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; + +namespace Microsoft.Azure.Commands.KeyVault.Client.Authentication +{ + /// + /// Cache of Bearer challenges based on URL of the target service. + /// + /// + /// This class is more than a simple map of URL to challenge, it contains + /// internal logic to derive the correct key for the challenge from the URL. + /// + public sealed class HttpBearerChallengeCache + { + private static HttpBearerChallengeCache _instance = new HttpBearerChallengeCache(); + + public static HttpBearerChallengeCache GetInstance() + { + return _instance; + } + + private Dictionary _cache = null; + private object _cacheLock = null; + + private HttpBearerChallengeCache() + { + _cache = new Dictionary(); + _cacheLock = new object(); + } + + public HttpBearerChallenge GetChallengeForURL(Uri url) + { + if (url == null) + throw new ArgumentNullException("url"); + + HttpBearerChallenge value = null; + + lock (_cacheLock) + { + _cache.TryGetValue(url.FullAuthority(), out value); + } + + return value; + } + + public void RemoveChallengeForURL(Uri url) + { + if (url == null) + throw new ArgumentNullException("url"); + + lock (_cacheLock) + { + _cache.Remove(url.FullAuthority()); + } + } + + public void SetChallengeForURL(Uri url, HttpBearerChallenge value) + { + if (url == null) + throw new ArgumentNullException("url"); + + if (value == null) + throw new ArgumentNullException("value"); + + if (string.Compare(url.FullAuthority(), value.SourceAuthority, StringComparison.OrdinalIgnoreCase) != 0) + throw new ArgumentException("Source URL and Challenge URL do not match"); + + lock (_cacheLock) + { + _cache[url.FullAuthority()] = value; + } + } + + public void Clear() + { + lock (_cacheLock) + { + _cache.Clear(); + } + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Client/KeyAttributes.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/KeyAttributes.cs new file mode 100644 index 000000000000..1f6b2d42fbba --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/KeyAttributes.cs @@ -0,0 +1,69 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Runtime.Serialization; +using Newtonsoft.Json; + +namespace Microsoft.Azure.Commands.KeyVault.Client +{ + /// + /// The attributes of a key managed by the KeyVault service + /// + [JsonObject] + public class KeyAttributes + { + /// + /// Determines whether the key is enabled + /// + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = "enabled", Required = Required.Default)] + public bool? Enabled { get; set; } + + /// + /// Expires date as the number of seconds since the Unix Epoch (1/1/1970) + /// + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = "exp", Required = Required.Default)] + public int? Expires { get; set; } + + /// + /// NotBefore date as the number of seconds since the Unix Epoch (1/1/1970) + /// + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = "nbf", Required = Required.Default)] + public int? NotBefore { get; set; } + + /// + /// Default constructor + /// + /// + /// The defauts for the properties are: + /// Enabled = null + /// NotBefore = null + /// Expires = null + /// Hsm = null + /// + public KeyAttributes() + { + Enabled = null; + NotBefore = null; + Expires = null; + } + + public override string ToString() + { + return JsonConvert.SerializeObject(this); + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Client/KeyBundle.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/KeyBundle.cs new file mode 100644 index 000000000000..f2da8fa76b79 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/KeyBundle.cs @@ -0,0 +1,56 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Runtime.Serialization; +using Microsoft.Azure.Commands.KeyVault.WebKey; +using Newtonsoft.Json; + +namespace Microsoft.Azure.Commands.KeyVault.Client +{ + /// + /// A KeyBundle consisting of a WebKey plus its Attributes + /// + [DataContract()] + public class KeyBundle + { + internal const string Property_Key = "key"; + internal const string Property_Attributes = "attributes"; + + /// + /// The Json web key + /// + [DataMember(Name = Property_Key)] + public JsonWebKey Key { get; set; } + + /// + /// The key management attributes + /// + [DataMember(Name = Property_Attributes, IsRequired = false, EmitDefaultValue = false)] + public KeyAttributes Attributes { get; set; } + + /// + /// Default constructor + /// + public KeyBundle() + { + Key = new JsonWebKey(); + Attributes = new KeyAttributes(); + } + + public override string ToString() + { + return JsonConvert.SerializeObject(this); + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Client/KeyItem.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/KeyItem.cs new file mode 100644 index 000000000000..3d299bf09f60 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/KeyItem.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 Microsoft.Azure.Commands.KeyVault.Client.Protocol; +using Newtonsoft.Json; + +namespace Microsoft.Azure.Commands.KeyVault.Client +{ + [JsonObject] + public class KeyItem + { + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Kid, Required = Required.Always)] + public string Kid { get; set; } + + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Attributes, Required = Required.Always)] + public KeyAttributes Attributes { get; set; } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Client/KeyVaultClient.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/KeyVaultClient.cs new file mode 100644 index 000000000000..4b70a9cc665b --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/KeyVaultClient.cs @@ -0,0 +1,809 @@ +// ---------------------------------------------------------------------------------- +// +// 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.IO; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Threading.Tasks; +using Microsoft.Azure.Commands.KeyVault.Client.Authentication; +using Microsoft.Azure.Commands.KeyVault.Client.Protocol; +using Microsoft.Azure.Commands.KeyVault.WebKey; +using Newtonsoft.Json; +using System.Security; + +namespace Microsoft.Azure.Commands.KeyVault.Client +{ + /// + /// Contains the KMS supported cryptographic key operations, vault operations and signing + /// + /// + /// Instance methods on this class are not thread safe. + /// + public class KeyVaultClient + { + private const string ApiVersion = "?api-version=2014-12-08-preview"; + private const string HttpAuthorizationHeader = "Authorization"; + private const string HttpMethodHeader = "X-HTTP-Method"; + private const string HttpRequestIdHeader = "client-request-id"; + private const string JsonMediaType = "application/json"; + + /// + /// Thread-safe, shared singleton of the JsonSerializer + /// + protected static JsonSerializer _serializer = new JsonSerializer(); + + /// + /// The authentication callback delegate which is to be implemented by the client codes + /// + /// the authority URL + /// resource URL + /// scope + /// access token + public delegate string AuthenticationCallback(string authority, string resource, string scope); + + /// + /// Logs the request that is being sent along with its invocation id + /// + /// invocation identifier + /// request that is sent + public delegate void SendRequestCallback(string correlationId, HttpRequestMessage request); + + /// + /// Logs the response that is received along with its invocation id + /// + /// invocation identifier + /// response that is received + public delegate void ReceiveResponseCallback(string correlationId, HttpResponseMessage response); + + /// + /// Sets request Uri to a different network URI + /// It is used for development testing. + /// + /// the request URI + /// the http client + /// new uri to be used as the target end point + public delegate Uri SetRequestUriCallback(Uri requestUri, HttpClient httpClient); + + public event AuthenticationCallback OnAuthenticate = null; + public event SendRequestCallback OnSendRequest = null; + public event ReceiveResponseCallback OnReceiveResponse = null; + public event SetRequestUriCallback OnSetRequestUri = null; + + protected HttpClient _client; + + /// + /// Default constructor + /// + public KeyVaultClient(HttpClient httpClient = null) + { + _client = httpClient ?? new HttpClient(); + } + + /// + /// Constructor + /// + /// the authentication callback + /// the send request callback to log request that is sent + /// the receive response callback to log response that is received + /// customized http client + /// the callback to replace requst URI with a different URI + public KeyVaultClient( + AuthenticationCallback authenticationCallback, + SendRequestCallback sendRequestCallback = null, + ReceiveResponseCallback receiveResponseCallback = null, + HttpClient httpClient = null, + SetRequestUriCallback setRequestUriCallback = null) + : this(httpClient) + { + if (authenticationCallback == null) + throw new ArgumentNullException("authenticationCallback"); + + OnAuthenticate = authenticationCallback; + OnSendRequest = sendRequestCallback; + OnReceiveResponse = receiveResponseCallback; + OnSetRequestUri = setRequestUriCallback; + } + + public bool UseHttpPost { get; set; } + + #region Authentication + + /// + /// Hook point for customizing the request Uri; used for testing in custom environments. + /// + /// + /// + protected virtual Uri SetRequestUri(Uri requestUri) + { + return requestUri; + } + + /// + /// Attempts to pre-authenticate a request to the specified vault or key URL using + /// the Bearer challenge cache and the application supplied AuthenticationCallback. + /// + /// The vault or key URL + /// The access token to use for the request + protected string PreAuthenticate(Uri url) + { + if (OnAuthenticate != null) + { + var challenge = HttpBearerChallengeCache.GetInstance().GetChallengeForURL(url); + + if (challenge != null) + { + return OnAuthenticate(challenge.AuthorizationServer, challenge.Resource, challenge.Scope); + } + } + + return null; + } + + /// + /// Attempts to post-authenticate a request given an unauthorized response using + /// the Bearer challenge cache and the application supplied AuthenticationCallback. + /// + /// The unauthorized response + /// The access token to use for the request + protected string PostAuthenticate(HttpResponseMessage response) + { + // An HTTP 401 Not Authorized error; handle if an authentication callback has been supplied + if (OnAuthenticate != null) + { + // Extract the WWW-Authenticate header and determine if it represents an OAuth2 Bearer challenge + var authenticateHeader = response.Headers.WwwAuthenticate.ElementAt(0).ToString(); + + if (HttpBearerChallenge.IsBearerChallenge(authenticateHeader)) + { + var challenge = new HttpBearerChallenge(response.RequestMessage.RequestUri, authenticateHeader); + + if (challenge != null) + { + // Update challenge cache + HttpBearerChallengeCache.GetInstance().SetChallengeForURL(response.RequestMessage.RequestUri, challenge); + + // We have an authentication challenge, use it to get a new authorization token + return OnAuthenticate(challenge.AuthorizationServer, challenge.Resource, challenge.Scope); + } + } + } + + return null; + } + + #endregion + + #region Key Management + + /// + /// Requests that a backup of the specified key be downloaded to the client. + /// + /// The vault name, e.g. https://myvault.vault.azure.net + /// The key name + /// The backup blob containing the backed up key + public async Task BackupKeyAsync(string vault, string keyName) + { + if (string.IsNullOrEmpty(vault)) + throw new ArgumentNullException("vault"); + + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentNullException("keyName"); + + var keyIdentifier = new KeyIdentifier(vault, keyName); + + using (var httpResponse = await this.SendAsync("POST", + CreateKeyUrl(keyIdentifier.BaseIdentifier, "backup")).ConfigureAwait(false)) + { + await EnsureSuccessStatusCode(httpResponse).ConfigureAwait(false); + + var backupResponse = await DeserializeAsync(httpResponse).ConfigureAwait(false); + + return backupResponse.Value; + } + } + + /// + /// Restores the backup key in to a vault + /// + /// The vault name, e.g. https://myvault.vault.azure.net + /// the backup blob associated with a key bundle + /// Restored key bundle in the vault + public async Task RestoreKeyAsync(string vault, byte[] keyBundleBackup) + { + if (string.IsNullOrEmpty(vault)) + throw new ArgumentNullException("vault"); + + if (keyBundleBackup == null) + throw new ArgumentNullException("keyBundleBackup"); + + var request = new RestoreKeyRequestMessage { Value = keyBundleBackup }; + + using (var httpResponse = await this.SendAsync("POST", + CreateKeyVaultUrl(vault, "restore"), request).ConfigureAwait(false)) + { + await EnsureSuccessStatusCode(httpResponse).ConfigureAwait(false); + + var response = await DeserializeAsync(httpResponse).ConfigureAwait(false); + + return new KeyBundle + { + Attributes = response.Attributes, + Key = response.Key, + }; + } + } + + /// + /// Creates a new, named, key in the specified vault. + /// + /// The URL for the vault in which the key is to be created. + /// The name for the key + /// The type of key to create (one of the valid WebKeyTypes) + /// The attributes of the key + /// A key bundle containing the result of the create request + public async Task CreateKeyAsync(string vault, string keyName, string keyType, + int? keySize = null, string[] key_ops = null, KeyAttributes keyAttributes = null) + { + if (string.IsNullOrEmpty(vault)) + throw new ArgumentNullException("vault"); + + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentNullException("keyName"); + + if (string.IsNullOrEmpty(keyType)) + throw new ArgumentNullException("keyType"); + + if (!JsonWebKeyType.AllTypes.Contains(keyType)) + throw new ArgumentOutOfRangeException("keyType"); + + var keyIdentifier = new KeyIdentifier(vault, keyName); + var request = new CreateKeyRequestMessage { Kty = keyType, KeySize = keySize, KeyOps = key_ops, Attributes = keyAttributes }; + + using (var httpResponse = await this.SendAsync("POST", + CreateKeyUrl(keyIdentifier.BaseIdentifier, "create"), request).ConfigureAwait(false)) + { + await EnsureSuccessStatusCode(httpResponse).ConfigureAwait(false); + + var response = await DeserializeAsync(httpResponse).ConfigureAwait(false); + + return new KeyBundle + { + Attributes = response.Attributes, + Key = response.Key, + }; + } + } + + /// + /// Deletes the specified key + /// + /// The vault name, e.g. https://myvault.vault.azure.net + /// The key name + /// The public part of the deleted key + public async Task DeleteKeyAsync(string vault, string keyName) + { + if (string.IsNullOrEmpty(vault)) + throw new ArgumentNullException("vault"); + + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentNullException("keyName"); + + var identifier = new KeyIdentifier(vault, keyName); + + using (var httpResponse = await this.SendAsync("DELETE", + CreateKeyUrl(identifier.BaseIdentifier)).ConfigureAwait(false)) + { + await EnsureSuccessStatusCode(httpResponse).ConfigureAwait(false); + + var response = await DeserializeAsync(httpResponse).ConfigureAwait(false); + + return new KeyBundle + { + Attributes = response.Attributes, + Key = response.Key, + }; + } + } + + /// + /// Retrieves the public portion of a key plus its attributes + /// + /// The vault name, e.g. https://myvault.vault.azure.net + /// The key name + /// The key version + /// A KeyBundle of the key and its attributes + public async Task GetKeyAsync(string vault, string keyName, string keyVersion = null) + { + if (string.IsNullOrEmpty(vault)) + throw new ArgumentNullException("vault"); + + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentNullException("keyName"); + + var keyIdentifier = new KeyIdentifier(vault, keyName, keyVersion); + + return await GetKeyAsync(keyIdentifier.Identifier).ConfigureAwait(false); + } + + /// + /// Retrieves the public portion of a key plus its attributes + /// + /// The key identifier + /// A KeyBundle of the key and its attributes + public async Task GetKeyAsync(string keyIdentifier) + { + if (string.IsNullOrEmpty(keyIdentifier)) + throw new ArgumentNullException("keyIdentifier"); + + using (var httpResponse = await this.SendAsync("GET", + CreateKeyUrl(keyIdentifier, string.Empty)).ConfigureAwait(false)) + { + await EnsureSuccessStatusCode(httpResponse).ConfigureAwait(false); + + var response = await DeserializeAsync(httpResponse).ConfigureAwait(false); + + return new KeyBundle + { + Attributes = response.Attributes, + Key = response.Key, + }; + } + } + + /// + /// Gets all the key in the specified vault + /// + /// the vault URL + /// a collection of keys that are available in the vault + public async Task> GetKeysAsync(string vault) + { + if (string.IsNullOrEmpty(vault)) + throw new ArgumentNullException("vault"); + + using (var response = await this.SendAsync("GET", + CreateKeyVaultUrl(vault)).ConfigureAwait(false)) + { + await EnsureSuccessStatusCode(response).ConfigureAwait(false); + + return await DeserializeAsync(response).ConfigureAwait(false); + } + } + + /// + /// Imports a key into the specified vault + /// + /// The vault name, e.g. https://myvault.vault.azure.net + /// The key name + /// Key bundle + /// Whether to import as a hardware key (HSM) or software key + /// Imported key bundle to the vault + public async Task ImportKeyAsync(string vault, string keyName, KeyBundle keyBundle, bool? importToHardware = null) + { + if (string.IsNullOrEmpty(vault)) + throw new ArgumentNullException("vault"); + + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentNullException("keyName"); + + if (keyBundle == null) + throw new ArgumentNullException("keyBundle"); + + var identifier = new KeyIdentifier(vault, keyName); + var request = new ImportKeyRequestMessage { Hsm = importToHardware, + Key = keyBundle.Key, Attributes = keyBundle.Attributes }; + + using (var httpResponse = await this.SendAsync("PUT", + CreateKeyUrl(identifier.BaseIdentifier, "import"), request).ConfigureAwait(false)) + { + await EnsureSuccessStatusCode(httpResponse).ConfigureAwait(false); + + var response = await DeserializeAsync(httpResponse).ConfigureAwait(false); + + return new KeyBundle + { + Attributes = response.Attributes, + Key = response.Key, + }; + } + } + + /// + /// Updates the Key Attributes associated with the specified key + /// + /// The vault name, e.g. https://myvault.vault.azure.net + /// The key name + /// Json web key operations + /// The new attributes for the key + /// The updated key + public async Task UpdateKeyAsync(string vault, string keyName, + string[] keyOps = null, KeyAttributes attributes = null) + { + if (string.IsNullOrEmpty(vault)) + throw new ArgumentNullException("vault"); + + if (string.IsNullOrEmpty(keyName)) + throw new ArgumentNullException("keyName"); + + if (attributes == null && keyOps == null) + throw new ArgumentException("Must provide one of keyOps or attributes"); + + var keyIdentifier = new KeyIdentifier(vault, keyName); + + return await UpdateKeyAsync(keyIdentifier.Identifier, keyOps, attributes).ConfigureAwait(false); + } + + /// + /// Updates the Key Attributes associated with the specified key + /// + /// The vault name, e.g. https://myvault.vault.azure.net + /// The key name + /// Json web key operations + /// The new attributes for the key + /// The updated key + public async Task UpdateKeyAsync(string keyIdentifier, string[] keyOps = null, KeyAttributes attributes = null) + { + if (string.IsNullOrEmpty(keyIdentifier)) + throw new ArgumentNullException("keyIdentifier"); + + var request = new UpdateKeyRequestMessage { KeyOps = keyOps, Attributes = attributes }; + + using (var httpResponse = await this.SendAsync("PATCH", + CreateKeyUrl(keyIdentifier, "update"), request).ConfigureAwait(false)) + { + await EnsureSuccessStatusCode(httpResponse).ConfigureAwait(false); + + var response = await DeserializeAsync(httpResponse).ConfigureAwait(false); + + return new KeyBundle + { + Attributes = response.Attributes, + Key = response.Key, + }; + } + } + + #endregion + + #region Secrets Management + + /// + /// Lists all of the secrets in the specified vault. + /// + /// The URL for the vault containing the secrets. + /// A response message containing a list of all secrets in the vault + public async Task> GetSecretsAsync(string vault) + { + if (string.IsNullOrEmpty(vault)) + throw new ArgumentNullException("vaultAddress"); + + using (var response = await this.SendAsync("GET", + CreateSecretVaultUrl(vault)).ConfigureAwait(false)) + { + await EnsureSuccessStatusCode(response).ConfigureAwait(false); + + return await DeserializeAsync(response).ConfigureAwait(false); + } + } + + /// + /// Gets a secret. + /// + /// The URL for the vault containing the secrets. + /// The name the secret in the given vault. + /// The version of the secret (optional) + /// A response message containing the secret + public async Task GetSecretAsync(string vault, string secretName, string secretVersion = null) + { + if (string.IsNullOrEmpty(vault)) + throw new ArgumentNullException("vaultAddress"); + + if (string.IsNullOrEmpty(secretName)) + throw new ArgumentNullException("secretName"); + + var identifier = new SecretIdentifier(vault, secretName, secretVersion); + + using (var response = await this.SendAsync("GET", + CreateSecretUrl(identifier.Identifier)).ConfigureAwait(false)) + { + await EnsureSuccessStatusCode(response).ConfigureAwait(false); + + return await DeserializeAsync(response).ConfigureAwait(false); + } + } + + /// + /// Gets a secret. + /// + /// The URL for the secret. + /// A response message containing the secret + public async Task GetSecretAsync(string secretIdentifier) + { + if (string.IsNullOrEmpty(secretIdentifier)) + throw new ArgumentNullException("secretIdentifier"); + + using (var response = await this.SendAsync("GET", + CreateSecretUrl(secretIdentifier)).ConfigureAwait(false)) + { + await EnsureSuccessStatusCode(response).ConfigureAwait(false); + + return await DeserializeAsync(response).ConfigureAwait(false); + } + } + + /// + /// Sets a secret in the specified vault. + /// + /// The URL for the vault containing the secrets. + /// The name the secret in the given vault. + /// The value of the secret. + /// A response message containing the updated secret + public async Task SetSecretAsync(string vault, string secretName, SecureString value) + { + if (string.IsNullOrEmpty(vault)) + throw new ArgumentNullException("vaultAddress"); + + if (string.IsNullOrEmpty(secretName)) + throw new ArgumentNullException("secretName"); + + var identifier = new SecretIdentifier(vault, secretName); + var request = new SecretRequestMessage() { Value = value }; + + using (var response = await this.SendAsync("PUT", + CreateSecretUrl(identifier.BaseIdentifier), request).ConfigureAwait(false)) + { + await EnsureSuccessStatusCode(response).ConfigureAwait(false); + + var putResponse = await DeserializeAsync(response).ConfigureAwait(false); + + return new Secret() { Id = putResponse.Id, SecureValue = putResponse.Value }; + } + } + + /// + /// Deletes a secret from the specified vault. + /// + /// The URL for the vault containing the secrets. + /// The name the secret in the given vault. + /// The deleted secret + public async Task DeleteSecretAsync(string vault, string secretName) + { + if (string.IsNullOrEmpty(vault)) + throw new ArgumentNullException("vaultAddress"); + + if (string.IsNullOrEmpty(secretName)) + throw new ArgumentNullException("secretName"); + + var identifier = new SecretIdentifier(vault, secretName); + + using (var response = await this.SendAsync("DELETE", + CreateSecretUrl(identifier.BaseIdentifier)).ConfigureAwait(false)) + { + await EnsureSuccessStatusCode(response).ConfigureAwait(false); + + return await DeserializeAsync(response).ConfigureAwait(false); + } + } + + #endregion + + protected virtual Func GetRequestWriter() where TBody : class + { + ByteArrayContent content = null; + + return (TBody body) => + { + // TODO: BSON support + using (var stream = new MemoryStream()) + { + var writer = new JsonTextWriter(new StreamWriter(stream)); + + _serializer.Serialize(writer, body, typeof(TBody)); + + writer.Flush(); + + content = new ByteArrayContent(stream.ToArray()); + } + + content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); + //content.Headers.Add( "ContentType", "application/json" ); + + return content; + }; + } + + protected virtual async Task DeserializeAsync(HttpResponseMessage response) where TResult : class + { + TResult result; + using (var stream = new StreamReader(await response.Content.ReadAsStreamAsync().ConfigureAwait(false))) + { + using (JsonReader reader = new JsonTextReader(stream)) + { + result = _serializer.Deserialize(reader); + } + } + return result; + } + + #region URL Construction + + protected Uri CreateKeyUrl(string keyIdentifier, string operation = null) + { + var baseUri = new Uri(keyIdentifier).AbsoluteUri.TrimEnd('/'); + + return new Uri(baseUri + "/" + operation + ApiVersion); + } + + protected Uri CreateKeyVaultUrl(string vault, string operation = null) + { + var baseUri = new Uri(vault).AbsoluteUri.TrimEnd('/'); + + return new Uri(baseUri + "/keys/" + operation + ApiVersion); + } + + protected Uri CreateSecretUrl(string secretIdentifier) + { + return new Uri(secretIdentifier + ApiVersion); + } + + protected Uri CreateSecretVaultUrl(string vault, string operation = null) + { + var baseUri = new Uri(vault).AbsoluteUri.TrimEnd('/'); + + return new Uri(baseUri + "/secrets/" + operation + ApiVersion); + } + + #endregion + + protected virtual async Task EnsureSuccessStatusCode(HttpResponseMessage response) + { + if (!response.IsSuccessStatusCode) + { + ErrorResponseMessage error = null; + + if (response.Content.Headers.ContentType != null && + response.Content.Headers.ContentType.MediaType == "application/json") + { + // Attempt to read the error data from the service. + var errorText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + + try + { + error = JsonConvert.DeserializeObject(errorText); + } + catch (Exception) + { + // Error deserialization failed, attempt to get some data for the client + error = new ErrorResponseMessage() + { + Error = new Error() + { + Code = "Unknown", + Message = errorText, + }, + }; + } + } + else + { + // Unrecognized content type + error = new ErrorResponseMessage() + { + Error = new Error() + { + Code = response.StatusCode.ToString(), + Message = string.Format("HTTP {0} Error: ", response.StatusCode.ToString(), response.ReasonPhrase), + }, + }; + } + + throw new KeyVaultClientException(response.StatusCode, response.RequestMessage.RequestUri, error != null ? error.Error : null); + } + + return true; + } + + + #region HTTP Methods + + protected virtual async Task SendAsync(string httpMethod, Uri requestUri, TBody body = null) where TBody : class + { + string correlationId = Guid.NewGuid().ToString("D"); + + _client.DefaultRequestHeaders.Clear(); + _client.DefaultRequestHeaders.Accept.Add((new MediaTypeWithQualityHeaderValue(JsonMediaType))); + _client.DefaultRequestHeaders.Add(HttpRequestIdHeader, correlationId); + + // Override URL for Azure Development Fabric + var targetUri = SetRequestUri(requestUri); + if (OnSetRequestUri != null) + { + targetUri = OnSetRequestUri(requestUri, _client); + } + + // PreAuthenticate + var accessToken = PreAuthenticate(requestUri); + + if (!string.IsNullOrEmpty(accessToken)) + _client.DefaultRequestHeaders.Add(HttpAuthorizationHeader, "Bearer " + accessToken); + + // Switch method if required + var method = httpMethod.ToUpperInvariant(); + + switch (method) + { + case "DELETE": + case "PATCH": + case "PUT": + _client.DefaultRequestHeaders.Add(HttpMethodHeader, method); + method = "POST"; + break; + } + + HttpResponseMessage response; + using (var request = new HttpRequestMessage(new HttpMethod(method), targetUri)) + { + + if (body != null) + { + var writer = GetRequestWriter(); + request.Content = writer(body); + } + + // Record the request that is to be sent + if (OnSendRequest != null) + { + OnSendRequest(correlationId, request); + } + + response = await _client.SendAsync(request).ConfigureAwait(false); + } + + if (response.StatusCode == HttpStatusCode.Unauthorized) + { + accessToken = PostAuthenticate(response); + + if (!string.IsNullOrEmpty(accessToken)) + { + _client.DefaultRequestHeaders.Add(HttpAuthorizationHeader, "Bearer " + accessToken); + + using (var request = new HttpRequestMessage(new HttpMethod(method), targetUri)) + { + + if (body != null) + { + var writer = GetRequestWriter(); + request.Content = writer(body); + } + + response = await _client.SendAsync(request).ConfigureAwait(false); + } + } + } + + // Record the response that is received + if (OnReceiveResponse != null) + { + OnReceiveResponse(correlationId, response); + } + + return response; + } + + #endregion + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Client/KeyVaultClientException.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/KeyVaultClientException.cs new file mode 100644 index 000000000000..8ecc7ed9ebc6 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/KeyVaultClientException.cs @@ -0,0 +1,82 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Globalization; +using System.Net; +using Microsoft.Azure.Commands.KeyVault.Client.Protocol; + +namespace Microsoft.Azure.Commands.KeyVault.Client +{ + /// + /// KeyVault Request Exception + /// + public class KeyVaultClientException : Exception + { + private static string GetExceptionMessage( Error error ) + { + if ( error != null && !string.IsNullOrWhiteSpace( error.Message ) ) + return error.Message; + + return "Service Error information was not available"; + } + + /// + /// Default constructor + /// + public KeyVaultClientException() + { + } + + /// + /// Constructor + /// + /// The HTTP response status code + /// The Error object returned by the service + public KeyVaultClientException( HttpStatusCode status, Uri requestUri, Error error = null ) + : base( GetExceptionMessage( error ) ) + { + Error = error; + RequestUri = requestUri; + Status = status; + } + + /// + /// The HTTP response status code + /// + public HttpStatusCode Status + { + get; + private set; + } + + /// + /// The Error object returned by the service + /// + public Error Error + { + get; + private set; + } + + /// + /// The Uri that the request was made to. + /// + public Uri RequestUri + { + get; + private set; + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Client/Messages.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/Messages.cs new file mode 100644 index 000000000000..9095c503196a --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/Messages.cs @@ -0,0 +1,188 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Collections.Generic; +using System.Runtime.Serialization; +using Microsoft.Azure.Commands.KeyVault.WebKey; +using Microsoft.Azure.Commands.KeyVault.WebKey.Json; +using Newtonsoft.Json; +using System.Security; + +namespace Microsoft.Azure.Commands.KeyVault.Client.Protocol +{ + public static class MessagePropertyNames + { + public const string Algorithm = "alg"; + public const string Attributes = "attributes"; + public const string Digest = "digest"; + public const string Hsm = "hsm"; + public const string Key = "key"; + public const string KeySize = "key_size"; + public const string KeyOps = "key_ops"; + public const string Kid = "kid"; + public const string Kty = "kty"; + public const string Value = "value"; + public const string Id = "id"; + } + + #region Error Response Messages + + [JsonObject] + public class Error + { + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = "code", Required = Required.Default)] + public string Code { get; set; } + + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = "message", Required = Required.Default)] + public string Message { get; set; } + + [JsonExtensionData] + public Dictionary AdditionalInfo { get; set; } + } + + [JsonObject] + public class ErrorResponseMessage + { + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = "error", Required = Required.Default)] + public Error Error { get; set; } + + [JsonExtensionData] + public Dictionary AdditionalInfo { get; set; } + } + + #endregion + + #region Key Management Messages + [JsonObject] + public class GetKeyResponseMessage + { + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Key, Required = Required.Always)] + public JsonWebKey Key { get; set; } + + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Attributes, Required = Required.Always)] + public KeyAttributes Attributes { get; set; } + } + + [JsonObject] + public class BackupKeyResponseMessage + { + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Value, Required = Required.Always)] + [JsonConverter(typeof(Base64UrlConverter))] + public byte[] Value { get; set; } + } + + [JsonObject] + public class CreateKeyRequestMessage + { + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Kty, Required = Required.Always)] + public string Kty { get; set; } + + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.KeySize, Required = Required.Default)] + public int? KeySize { get; set; } + + /// + /// Supported Key Operations + /// + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.KeyOps, Required = Required.Default)] + public string[] KeyOps { get; set; } + + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Attributes, Required = Required.Default)] + public KeyAttributes Attributes { get; set; } + } + + [JsonObject] + public class ImportKeyRequestMessage + { + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Key, Required = Required.Always)] + public JsonWebKey Key { get; set; } + + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Attributes, Required = Required.Always)] + public KeyAttributes Attributes { get; set; } + + /// + /// Is this key protected by an HSM? + /// + /// This attribute is only meaningul at IMPORT requests. In future versions, it may be removed from this structure. + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Hsm, Required = Required.Default)] + public bool? Hsm { get; set; } + } + + [JsonObject] + public class RestoreKeyRequestMessage + { + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Value, Required = Required.Always)] + [JsonConverter(typeof(Base64UrlConverter))] + public byte[] Value { get; set; } + } + + [JsonObject] + public class UpdateKeyRequestMessage + { + /// + /// Supported Key Operations + /// + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.KeyOps, Required = Required.Default)] + public string[] KeyOps { get; set; } + + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Attributes, Required = Required.Always)] + public KeyAttributes Attributes { get; set; } + } + + [JsonObject] + public class DeleteKeyRequestMessage + { + // Since DELETE is a POST operation, it must have a body. + // But so far there is no field. + } + + #endregion + + [JsonObject] + public class SecretRequestMessage + { + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Value, Required = Required.Always)] + [JsonConverter(typeof(SecureStringConverter))] + public SecureString Value { get; set; } + } + + [JsonObject] + public class SecretResponseMessage + { + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Value, Required = Required.Always)] + [JsonConverter(typeof(SecureStringConverter))] + public SecureString Value { get; set; } + + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Id, Required = Required.Default)] + public string Id { get; set; } + } +} \ No newline at end of file diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Client/ObjectIdentifier.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/ObjectIdentifier.cs new file mode 100644 index 000000000000..4052832ea414 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/ObjectIdentifier.cs @@ -0,0 +1,154 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Globalization; +using System.Web; + +namespace Microsoft.Azure.Commands.KeyVault.Client +{ + public class ObjectIdentifier + { + private readonly string _vault; + private readonly string _name; + private readonly string _version; + + private readonly string _baseIdentifier; + private readonly string _identifier; + + protected ObjectIdentifier(string vault, string collection, string name, string version = null) + { + if (string.IsNullOrEmpty(vault)) + throw new ArgumentNullException("vault"); + + if (string.IsNullOrEmpty(collection)) + throw new ArgumentNullException("collection"); + + if (string.IsNullOrEmpty(name)) + throw new ArgumentNullException("keyName"); + + var baseUri = new Uri(vault, UriKind.Absolute); + + _name = name; + _version = version; + _vault = string.Format(CultureInfo.InvariantCulture, "{0}://{1}", baseUri.Scheme, baseUri.FullAuthority()); + + _baseIdentifier = string.Format(CultureInfo.InvariantCulture, "{0}/{1}/{2}", _vault, collection, _name); + _identifier = string.IsNullOrEmpty(_version) ? _name : string.Format(CultureInfo.InvariantCulture, "{0}/{1}", _name, _version); + _identifier = string.Format(CultureInfo.InvariantCulture, "{0}/{1}/{2}", _vault, collection, _identifier); + } + + protected ObjectIdentifier(string collection, string identifier) + { + if (string.IsNullOrEmpty(collection)) + throw new ArgumentNullException("collection"); + + if (string.IsNullOrEmpty(identifier)) + throw new ArgumentNullException("identifier"); + + Uri baseUri = new Uri(identifier, UriKind.Absolute); + + // We expect and identifier with either 3 or 4 segments: host + collection + name [+ version] + if (baseUri.Segments.Length != 3 && baseUri.Segments.Length != 4) + throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, + "Invalid SecretIdentifier URL: {0}. Bad number of segments: {1}", identifier, baseUri.Segments.Length)); + + if (!string.Equals(baseUri.Segments[1], collection + "/")) + throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, + "Invalid SecretIdentifier URL: {0}. segment [1] should be '{1}/', found '{2}'", identifier, collection, baseUri.Segments[1])); + + _name = baseUri.Segments[2].Substring(0, baseUri.Segments[2].Length).TrimEnd('/'); + + if (baseUri.Segments.Length == 4) + _version = baseUri.Segments[3].Substring(0, baseUri.Segments[3].Length).TrimEnd('/'); + + _vault = string.Format(CultureInfo.InvariantCulture, "{0}://{1}", baseUri.Scheme, baseUri.FullAuthority()); + + _baseIdentifier = string.Format(CultureInfo.InvariantCulture, "{0}/{1}/{2}", _vault, collection, _name); + _identifier = string.IsNullOrEmpty(_version) ? _name : string.Format(CultureInfo.InvariantCulture, "{0}/{1}", _name, _version); + _identifier = string.Format(CultureInfo.InvariantCulture, "{0}/{1}/{2}", _vault, collection, _identifier); + } + + /// + /// The base identifier for an object, does not include the object version. + /// + public string BaseIdentifier + { + get { return _baseIdentifier; } + } + + /// + /// The identifier for an object, includes the objects version. + /// + public string Identifier + { + get { return _identifier; } + } + + /// + /// The name of the object. + /// + public string Name + { + get { return _name; } + } + + /// + /// The vault containing the object + /// + public string Vault + { + get { return _vault; } + } + + /// + /// The version of the object. + /// + public string Version + { + get { return _version; } + } + + public override string ToString() + { + return _identifier; + } + } + + public sealed class KeyIdentifier : ObjectIdentifier + { + public KeyIdentifier(string vault, string name, string version = null) + : base(vault, "keys", name, version) + { + } + + public KeyIdentifier(string identifier) + : base("keys", identifier) + { + } + } + + public sealed class SecretIdentifier : ObjectIdentifier + { + public SecretIdentifier(string vault, string name, string version = null) + : base(vault, "secrets", name, version) + { + } + + public SecretIdentifier(string identifier) + : base("secrets", identifier) + { + } + } +} \ No newline at end of file diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Client/Secret.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/Secret.cs new file mode 100644 index 000000000000..8143ddb112e4 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/Secret.cs @@ -0,0 +1,70 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Runtime.Serialization; +using Newtonsoft.Json; +using System.Security; +using System; + +namespace Microsoft.Azure.Commands.KeyVault.Client +{ + /// + /// A Secret consisting of a value and id. + /// + [DataContract()] + public class Secret + { + internal const string Property_Value = "value"; + internal const string Property_Id = "id"; + + /// + /// The secret value + /// + public SecureString SecureValue { get; set; } + + /// + /// The secret value in plain text + /// + [DataMember(Name = Property_Value, IsRequired = false)] + public string Value + { + get + { + return SecureValue.ConvertToString(); + } + set + { + SecureValue = value.ConvertToSecureString(); + } + } + + /// + /// The secret id + /// + [DataMember(Name = Property_Id, IsRequired = false, EmitDefaultValue = false)] + public string Id { get; set; } + + /// + /// Default constructor + /// + public Secret() + { + } + + public override string ToString() + { + return JsonConvert.SerializeObject(this); + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Client/SecretItem.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/SecretItem.cs new file mode 100644 index 000000000000..dc2f0c2febbd --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/SecretItem.cs @@ -0,0 +1,27 @@ +// ---------------------------------------------------------------------------------- +// +// 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.KeyVault.Client.Protocol; +using Newtonsoft.Json; + +namespace Microsoft.Azure.Commands.KeyVault.Client +{ + [JsonObject] + public class SecretItem + { + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = MessagePropertyNames.Id, Required = Required.Always)] + public string Id { get; set; } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Client/SecureStringConverter.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/SecureStringConverter.cs new file mode 100644 index 000000000000..3b5acad9f4a0 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/SecureStringConverter.cs @@ -0,0 +1,50 @@ +// ---------------------------------------------------------------------------------- +// +// 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 Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Security; + +namespace Microsoft.Azure.Commands.KeyVault.Client +{ + class SecureStringConverter : JsonConverter + { + + public override bool CanConvert(Type objectType) + { + if (objectType == typeof(SecureString)) + return true; + + return false; + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + var value = serializer.Deserialize(reader); + + if (value != null) + { + return value.ConvertToSecureString(); + } + + return null; + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + JToken.FromObject(((SecureString)value).ConvertToString()).WriteTo(writer); + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Client/SecureStringExtensions.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/SecureStringExtensions.cs new file mode 100644 index 000000000000..9125c2a4ac33 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/SecureStringExtensions.cs @@ -0,0 +1,76 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Runtime.InteropServices; +using System.Security; +using System.Text; + +namespace Microsoft.Azure.Commands.KeyVault.Client +{ + + /// + /// Extends SecureString and string to convert from one to the other + /// + public static class SecureStringExtensions + { + + /// + /// Converts a string into a secure string. + /// + /// the string to be converted. + /// The secure string converted from the input string + public static SecureString ConvertToSecureString(this string value) + { + if (value == null) + { + throw new ArgumentNullException("value"); + } + + unsafe + { + fixed (char* chars = value) + { + SecureString secureString = new SecureString(chars, value.Length); + secureString.MakeReadOnly(); + return secureString; + } + } + } + + /// + /// Converts the secure string to a string. + /// + /// the secure string to be converted. + /// The string converted from a secure string + public static string ConvertToString(this SecureString secureString) + { + if (secureString == null) + { + throw new ArgumentNullException("secureString"); + } + + IntPtr stringPointer = IntPtr.Zero; + try + { + stringPointer = Marshal.SecureStringToBSTR(secureString); + return Marshal.PtrToStringBSTR(stringPointer); + } + finally + { + Marshal.ZeroFreeBSTR(stringPointer); + } + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Client/UnixEpoch.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/UnixEpoch.cs new file mode 100644 index 000000000000..09fbffeb3be3 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/UnixEpoch.cs @@ -0,0 +1,56 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Text; +using System.Threading.Tasks; + +namespace Microsoft.Azure.Commands.KeyVault.Client +{ + public static class UnixEpoch + { + public static readonly DateTime EpochDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + + /// + /// Convert the number of seconds since midnight (UTC) on 1st January 1970 to date + /// + /// The number of seconds since midnight (UTC) on 1st January 1970 + /// The date in UTC form + public static DateTime FromUnixTime(int seconds) + { + return EpochDate.AddSeconds(seconds); + } + + /// + /// Gets the current time as the number of seconds since midnight (UTC) on 1st January 1970 + /// + /// The number of seconds since midnight (UTC) on 1st January 1970 + public static int Now() + { + return DateTime.UtcNow.ToUnixTime(); + } + + /// + /// Returns the number of seconds after Unix Epoch (January 1 1970 00:00:00 GMT, until the given time). + /// + /// The date, in UTC form. + /// Number of seconds from January 1 1970. + public static int ToUnixTime(this DateTime dateTime) + { + return (int)dateTime.Subtract(EpochDate).TotalSeconds; + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Client/UriExtensions.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/UriExtensions.cs new file mode 100644 index 000000000000..51b00494ef70 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Client/UriExtensions.cs @@ -0,0 +1,72 @@ +// ---------------------------------------------------------------------------------- +// +// 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; + +namespace Microsoft.Azure.Commands.KeyVault.Client +{ + internal static class UriExtensions + { + /// + /// Returns an authority string for URI that is guaranteed to contain + /// a port number. + /// + /// The Uri from which to compute the authority + /// The complete authority for the Uri + public static string FullAuthority(this Uri uri) + { + string authority = uri.Authority; + + if (!authority.Contains(":")) + { + // Append port for complete authority + authority = string.Format("{0}:{1}", uri.Authority, uri.Port.ToString()); + } + + return authority; + } + + /// + /// x-www-form-urlencoded a string without the requirement for System.Web + /// + /// + /// + // [Obsolete("Use System.Uri.EscapeDataString instead")] + public static string UrlFormEncode(string text) + { + // Sytem.Uri provides reliable parsing + if (string.IsNullOrEmpty(text)) + return string.Empty; + + return System.Uri.EscapeDataString(text).Replace("%20", "+"); + } + + /// + /// UrlDecodes a string without requiring System.Web + /// + /// String to decode. + /// decoded string + public static string UrlFormDecode(string text) + { + if (string.IsNullOrEmpty(text)) + return string.Empty; + + // pre-process for + sign space formatting since System.Uri doesn't handle it + // plus literals are encoded as %2b normally so this should be safe + text = text.Replace("+", " "); + + return System.Uri.UnescapeDataString(text); + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Commands.KeyVault.csproj b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands.KeyVault.csproj new file mode 100644 index 000000000000..f96838b049d0 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands.KeyVault.csproj @@ -0,0 +1,188 @@ + + + + + Debug + AnyCPU + {9FFC40CC-A341-4D0C-A25D-DC6B78EF6C94} + Library + Properties + Microsoft.Azure.Commands.KeyVault + Microsoft.Azure.Commands.KeyVault + v4.5 + 512 + + ..\..\..\ + true + + + true + full + false + ..\..\..\Package\Debug\ResourceManager\AzureResourceManager\KeyVault + DEBUG;TRACE + prompt + 4 + true + false + + + true + MSSharedLibKey.snk + true + ..\..\..\Package\Release\ResourceManager\AzureResourceManager\KeyVault + TRACE;SIGN + true + pdbonly + AnyCPU + bin\Release\Microsoft.Azure.Commands.KeyVault.dll.CodeAnalysisLog.xml + true + GlobalSuppressions.cs + prompt + MinimumRecommendedRules.ruleset + ;$(ProgramFiles)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\Rule Sets + ;$(ProgramFiles)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\FxCop\Rules + true + false + + + true + + + + + + + + + + + PreserveNewest + + + + Designer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + True + Resources.resx + + + + + False + ..\..\..\packages\Microsoft.Azure.Management.Resources.2.7.0-preview\lib\net40\Microsoft.Azure.ResourceManager.dll + + + ..\..\..\packages\Microsoft.Data.Edm.5.6.0\lib\net40\Microsoft.Data.Edm.dll + + + ..\..\..\packages\Microsoft.Data.OData.5.6.0\lib\net40\Microsoft.Data.OData.dll + + + ..\..\..\packages\Microsoft.Data.Services.Client.5.6.0\lib\net40\Microsoft.Data.Services.Client.dll + + + False + ..\..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll + + + False + ..\..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll + + + False + ..\..\..\packages\Microsoft.WindowsAzure.Common.1.4.0\lib\net45\Microsoft.WindowsAzure.Common.dll + + + False + ..\..\..\packages\Microsoft.WindowsAzure.Common.1.4.0\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll + + + False + ..\..\..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll + + + + + + ..\..\..\packages\Microsoft.Net.Http.2.2.28\lib\net45\System.Net.Http.Extensions.dll + + + ..\..\..\packages\Microsoft.Net.Http.2.2.28\lib\net45\System.Net.Http.Primitives.dll + + + + + + + + + + {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89} + Common.Extensions + + + {5ee72c53-1720-4309-b54b-5fb79703195f} + Commands.Common + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + Always + + + + + + + + + + + \ No newline at end of file diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/AddAzureKeyVaultKey.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/AddAzureKeyVaultKey.cs new file mode 100644 index 000000000000..5eaef08ffa3e --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/AddAzureKeyVaultKey.cs @@ -0,0 +1,235 @@ +// ---------------------------------------------------------------------------------- +// +// 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.IO; +using System.Security; +using System.Management.Automation; +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.Azure.Commands.KeyVault.WebKey; + + +namespace Microsoft.Azure.Commands.KeyVault +{ + /// + /// Create a new key in key vault. This cmdlet supports the following types of + /// key creation. + /// 1. Create a new HSM or software key with default key attributes + /// 2. Create a new HSM or software key with given key attributes + /// 3. Create a HSM or software key by importing key material with default key + /// attributes + /// 4 .Create a HSM or software key by importing key material with given key + /// attributes + /// + [Cmdlet(VerbsCommon.Add, "AzureKeyVaultKey", + DefaultParameterSetName = CreateParameterSet)] + [OutputType(typeof(KeyBundle))] + public class AddAzureKeyVaultKey : KeyVaultCmdletBase + { + + #region Parameter Set Names + + private const string CreateParameterSet = "Create"; + private const string ImportParameterSet = "Import"; + + #endregion + + #region Input Parameter Definitions + + /// + /// Vault name + /// + [Parameter(Mandatory = true, + ParameterSetName = CreateParameterSet, + Position = 0, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Vault name. Cmdlet constructs the FQDN of a vault based on the name and currently selected environment.")] + [Parameter(Mandatory = true, + ParameterSetName = ImportParameterSet, + Position = 0, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Vault name. Cmdlet constructs the FQDN of a vault based on the name and currently selected environment.")] + [ValidateNotNullOrEmpty] + public string VaultName { get; set; } + + /// + /// key name + /// + [Parameter(Mandatory = true, + ParameterSetName = CreateParameterSet, + Position = 1, + HelpMessage = "key name. Cmdlet constructs the FQDN of a key from vault name, currently selected environment and key name.")] + [Parameter(Mandatory = true, + ParameterSetName = ImportParameterSet, + Position = 1, + HelpMessage = "key name. Cmdlet constructs the FQDN of a key from vault name, currently selected environment and key name.")] + [ValidateNotNullOrEmpty] + [Alias("KeyName")] + public string Name { get; set; } + + /// + /// Path to the local file containing to-be-imported key material. + /// The supported suffix are: + /// 1. byok + /// 2. pfx + /// + [Parameter(Mandatory = true, + ParameterSetName = ImportParameterSet, + HelpMessage = "Path to the local file containing to-be-imported key material")] + [ValidateNotNullOrEmpty] + public string KeyFilePath { get; set; } + + /// + /// Password of the imported file. + /// Required for pfx file + /// + [Parameter(Mandatory = false, + ParameterSetName = ImportParameterSet, + HelpMessage = "Password of the imported key file")] + [ValidateNotNullOrEmpty] + public SecureString KeyFilePassword { get; set; } + + /// + /// Destination of the key + /// + [Parameter(Mandatory = true, + ParameterSetName = CreateParameterSet, + HelpMessage = "Destination of the key")] + [Parameter(Mandatory = false, + ParameterSetName = ImportParameterSet, + HelpMessage = "Destination of the key")] + [ValidateSetAttribute(new string[] { HsmDestination, SoftwareDestination })] + public string Destination { get; set; } + + /// + /// Set key in disabled state if present + /// + [Parameter(Mandatory = false, + ParameterSetName = CreateParameterSet, + HelpMessage = "Set key in disabled state if present. If not present, key is enabled.")] + [Parameter(Mandatory = false, + ParameterSetName = ImportParameterSet, + HelpMessage = "Set key in disabled state if present. If not present, key is enabled.")] + public SwitchParameter Disable { get; set; } + + /// + /// Key operations + /// + [Parameter(Mandatory = false, + ParameterSetName = CreateParameterSet, + ValueFromPipelineByPropertyName = true, + HelpMessage = "The operations that can be performed with the key. If not present, all operations can be performed.")] + [Parameter(Mandatory = false, + ParameterSetName = ImportParameterSet, + ValueFromPipelineByPropertyName = true, + HelpMessage = "The operations that can be performed with the key. If not present, all operations can be performed.")] + public string[] KeyOps { get; set; } + + /// + /// Key expires time in UTC time + /// + [Parameter(Mandatory = false, + ParameterSetName = CreateParameterSet, + ValueFromPipelineByPropertyName = true, + HelpMessage = "The expiration time of a key in UTC time. If not present, key will not expire.")] + [Parameter(Mandatory = false, + ParameterSetName = ImportParameterSet, + ValueFromPipelineByPropertyName = true, + HelpMessage = "The expiration time of a key in UTC time. If not present, key will not expire.")] + public DateTime? Expires { get; set; } + + /// + /// The UTC time before which key can't be used + /// + [Parameter(Mandatory = false, + ParameterSetName = CreateParameterSet, + ValueFromPipelineByPropertyName = true, + HelpMessage = "The UTC time before which key can't be used. If not present, no limitation.")] + [Parameter(Mandatory = false, + ParameterSetName = ImportParameterSet, + ValueFromPipelineByPropertyName = true, + HelpMessage = "The UTC time before which key can't be used. If not present, no limitation.")] + public DateTime? NotBefore { get; set; } + + #endregion + + public override void ExecuteCmdlet() + { + try + { + KeyBundle keyBundle; + switch (ParameterSetName) + { + case CreateParameterSet: + keyBundle = this.DataServiceClient.CreateKey( + VaultName, + Name, + CreateKeyAttributes()); + break; + + case ImportParameterSet: + bool? importToHsm = null; + keyBundle = this.DataServiceClient.ImportKey( + VaultName, Name, + CreateKeyAttributes(), + CreateWebKeyFromFile(), + string.IsNullOrEmpty(Destination) ? importToHsm : HsmDestination.Equals(Destination, StringComparison.OrdinalIgnoreCase)); + break; + + default: + throw new ArgumentException(Resources.BadParameterSetName); + } + + this.WriteObject(keyBundle); + } + catch (Exception ex) + { + this.WriteErrorDetails(ex); + } + } + + internal KeyAttributes CreateKeyAttributes() + { + string keyType = string.Empty; + + if (!string.IsNullOrEmpty(Destination)) + { + keyType = (HsmDestination.Equals(Destination, StringComparison.OrdinalIgnoreCase)) ? JsonWebKeyType.RsaHsm : JsonWebKeyType.Rsa; + } + + return new KeyAttributes( + !Disable.IsPresent, + Expires, + NotBefore, + keyType, + KeyOps); + } + + internal JsonWebKey CreateWebKeyFromFile() + { + FileInfo keyFile = new FileInfo(this.GetUnresolvedProviderPathFromPSPath(this.KeyFilePath)); + if (!keyFile.Exists) + { + throw new FileNotFoundException(string.Format(Resources.KeyFileNotFound, this.KeyFilePath)); + } + + var converterChain = WebKeyConverterFactory.CreateConverterChain(); + return converterChain.ConvertKeyFromFile(keyFile, KeyFilePassword); + } + + private const string HsmDestination = "HSM"; + private const string SoftwareDestination = "Software"; + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/BackupAzureKeyVaultKey.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/BackupAzureKeyVaultKey.cs new file mode 100644 index 000000000000..5dade65625f1 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/BackupAzureKeyVaultKey.cs @@ -0,0 +1,95 @@ +// ---------------------------------------------------------------------------------- +// +// 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.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; +using System; +using System.IO; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.Cmdlets +{ + /// + /// Requests that a backup of the specified key be downloaded and stored to a file + /// + [Cmdlet(VerbsData.Backup, "AzureKeyVaultKey")] + [OutputType(typeof(String))] + public class BackupAzureKeyVaultKey : KeyVaultCmdletBase + { + #region Input Parameter Definitions + + /// + /// Vault name + /// + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Vault name. Cmdlet constructs the FQDN of a vault based on the name and currently selected environment.")] + [ValidateNotNullOrEmpty] + public string VaultName { get; set; } + + /// + /// Key name + /// + [Parameter(Mandatory = true, + Position = 1, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from vault name, currently selected environment and key name.")] + [ValidateNotNullOrEmpty] + [Alias("KeyName")] + public string Name { get; set; } + + /// + /// The output file in which the backup blob is to be stored + /// + [Parameter(Mandatory = false, + Position = 2, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Output file. The output file to store the backed up key blob in. If not present, a default filename is chosen.")] + [ValidateNotNullOrEmpty] + public string OutputFile { get; set; } + + #endregion Input Parameter Definition + + public override void ExecuteCmdlet() + { + try + { + if (string.IsNullOrEmpty(OutputFile)) + { + OutputFile = GetDefaultFile(); + } + + var filePath = ResolvePath(OutputFile, Resources.BackupKeyFileNotFound); + + var backupBlobPath = this.DataServiceClient.BackupKey(VaultName, Name, filePath); + + this.WriteObject(backupBlobPath); + } + catch (Exception ex) + { + this.WriteErrorDetails(ex); + } + } + + private string GetDefaultFile() + { + var currentPath = CurrentPath(); + var filename = string.Format("{0}\\backup-{1}-{2}-{3}", currentPath, VaultName, Name, Microsoft.Azure.Commands.KeyVault.Client.UnixEpoch.Now()); + File.Create(filename).Dispose(); + return filename; + } + + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/GetAzureKeyVaultKey.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/GetAzureKeyVaultKey.cs new file mode 100644 index 000000000000..7c99ea5286e3 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/GetAzureKeyVaultKey.cs @@ -0,0 +1,109 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Linq; +using System.Collections.Generic; +using System.Management.Automation; +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; + +namespace Microsoft.Azure.Commands.KeyVault.Cmdlets +{ + [Cmdlet(VerbsCommon.Get, "AzureKeyVaultKey", + DefaultParameterSetName = ByVaultNameParameterSet)] + [OutputType(typeof(List), typeof(KeyBundle))] + public class GetAzureKeyVaultKey : KeyVaultCmdletBase + { + + #region Parameter Set Names + + private const string ByKeyNameParameterSet = "ByKeyName"; + private const string ByVaultNameParameterSet = "ByVaultName"; + + #endregion + + #region Input Parameter Definitions + + /// + /// Vault name + /// + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipelineByPropertyName = true, + ParameterSetName = ByKeyNameParameterSet, + HelpMessage = "Vault name. Cmdlet constructs the FQDN of a vault based on the name and currently selected environment.")] + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipelineByPropertyName = true, + ParameterSetName = ByVaultNameParameterSet, + HelpMessage = "Vault name. Cmdlet constructs the FQDN of a vault based on the name and currently selected environment.")] + + [ValidateNotNullOrEmpty] + public string VaultName { get; set; } + + /// + /// Key name. + /// + [Parameter(Mandatory = true, + ParameterSetName = ByKeyNameParameterSet, + Position = 1, + ValueFromPipelineByPropertyName = true, + HelpMessage = "key name. Cmdlet constructs the FQDN of a key from vault name, currently selected environment and key name.")] + [ValidateNotNullOrEmpty] + [Alias("KeyName")] + public string Name { get; set; } + + /// + /// Key version. + /// + [Parameter(Mandatory = false, + ParameterSetName = ByKeyNameParameterSet, + Position = 2, + ValueFromPipelineByPropertyName = true, + HelpMessage = "key version. Cmdlet constructs the FQDN of a key from vault name, currently selected environment, key name and key version.")] + [ValidateNotNullOrEmpty] + [Alias("KeyVersion")] + public string Version { get; set; } + + #endregion + + public override void ExecuteCmdlet() + { + try + { + switch (ParameterSetName) + { + case ByKeyNameParameterSet: + var keyBundle = DataServiceClient.GetKey(VaultName, Name, Version); + WriteObject(keyBundle); + break; + + case ByVaultNameParameterSet: + IEnumerable keyBundles = DataServiceClient.GetKeys(VaultName); + WriteObject(keyBundles, true); + break; + + default: + throw new ArgumentException(Resources.BadParameterSetName); + } + } + catch (Exception ex) + { + this.WriteErrorDetails(ex); + } + } + + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/GetAzureKeyVaultSecret.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/GetAzureKeyVaultSecret.cs new file mode 100644 index 000000000000..11d9e6bd3d69 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/GetAzureKeyVaultSecret.cs @@ -0,0 +1,106 @@ +// ---------------------------------------------------------------------------------- +// +// 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.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.Cmdlets +{ + [Cmdlet(VerbsCommon.Get, "AzureKeyVaultSecret", + DefaultParameterSetName = ByVaultNameParameterSet)] + [OutputType(typeof(List), typeof(Secret))] + public class GetAzureKeyVaultSecret : KeyVaultCmdletBase + { + #region Parameter Set Names + + private const string BySecretNameParameterSet = "BySecretName"; + private const string ByVaultNameParameterSet = "ByVaultName"; + + #endregion + + #region Input Parameter Definitions + + /// + /// Vault name + /// + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipelineByPropertyName = true, + ParameterSetName = BySecretNameParameterSet, + HelpMessage = "Vault name. Cmdlet constructs the FQDN of a vault based on the name and currently selected environment.")] + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipelineByPropertyName = true, + ParameterSetName = ByVaultNameParameterSet, + HelpMessage = "Vault name. Cmdlet constructs the FQDN of a vault based on the name and currently selected environment.")] + [ValidateNotNullOrEmpty] + public string VaultName { get; set; } + + /// + /// Secret name + /// + [Parameter(Mandatory = true, + Position = 1, + ValueFromPipelineByPropertyName = true, + ParameterSetName = BySecretNameParameterSet, + HelpMessage = "Secret name. Cmdlet constructs the FQDN of a secret from vault name, currently selected environment and secret name.")] + [ValidateNotNullOrEmpty] + [Alias("SecretName")] + public string Name { get; set; } + + /// + /// Secret version + /// + [Parameter(Mandatory = false, + Position = 2, + ValueFromPipelineByPropertyName = true, + ParameterSetName = BySecretNameParameterSet, + HelpMessage = "Secret version. Cmdlet constructs the FQDN of a secret from vault name, currently selected environment, secret name and secret version.")] + [ValidateNotNullOrEmpty] + [Alias("SecretVersion")] + public string Version { get; set; } + + #endregion + + public override void ExecuteCmdlet() + { + try + { + switch (ParameterSetName) + { + case BySecretNameParameterSet: + var secret = DataServiceClient.GetSecret(VaultName, Name, Version); + WriteObject(secret); + break; + + case ByVaultNameParameterSet: + var secrets = DataServiceClient.GetSecrets(VaultName); + WriteObject(secrets, true); + break; + + default: + throw new ArgumentException(Resources.BadParameterSetName); + } + } + catch (Exception ex) + { + this.WriteErrorDetails(ex); + } + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/RemoveAzureKeyVaultKey.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/RemoveAzureKeyVaultKey.cs new file mode 100644 index 000000000000..33a68f6072bc --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/RemoveAzureKeyVaultKey.cs @@ -0,0 +1,94 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Management.Automation; +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; +using System.Globalization; + +namespace Microsoft.Azure.Commands.KeyVault.Cmdlets +{ + [Cmdlet(VerbsCommon.Remove, "AzureKeyVaultKey", + SupportsShouldProcess = true, + ConfirmImpact = ConfirmImpact.High)] + [OutputType(typeof(KeyBundle))] + public class RemoveAzureKeyVaultKey : KeyVaultCmdletBase + { + #region Input Parameter Definitions + + /// + /// Vault name + /// + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Vault name. Cmdlet constructs the FQDN of a vault based on the name and currently selected environment.")] + [ValidateNotNullOrEmpty] + public string VaultName { get; set; } + + /// + /// key name + /// + [Parameter(Mandatory = true, + Position = 1, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from vault name, currently selected environment and key name.")] + [ValidateNotNullOrEmpty] + [Alias("KeyName")] + public string Name { get; set; } + + /// + /// If present, do not ask for confirmation + /// + [Parameter(Mandatory = false, + HelpMessage = "Do not ask for confirmation.")] + public SwitchParameter Force { get; set; } + + [Parameter(Mandatory = false, + HelpMessage = "Cmdlet does not return object by default. If this switch is specified, return a bool to enable pipeline.")] + public SwitchParameter PassThru { get; set; } + + #endregion + public override void ExecuteCmdlet() + { + try + { + KeyBundle keyBundle = null; + ConfirmAction( + Force.IsPresent, + string.Format( + CultureInfo.InvariantCulture, + Resources.RemoveKeyWarning, + Name), + string.Format( + CultureInfo.InvariantCulture, + Resources.RemoveKeyWhatIfMessage, + Name), + Name, + () => { keyBundle = DataServiceClient.DeleteKey(VaultName, Name); }); + + if (PassThru.IsPresent) + { + WriteObject(keyBundle); + } + } + catch (Exception ex) + { + this.WriteErrorDetails(ex); + } + } + + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/RemoveAzureKeyVaultSecret.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/RemoveAzureKeyVaultSecret.cs new file mode 100644 index 000000000000..cd624e3bc07a --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/RemoveAzureKeyVaultSecret.cs @@ -0,0 +1,94 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Management.Automation; +using Microsoft.Azure.Commands.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; +using System.Globalization; + +namespace Microsoft.Azure.Commands.KeyVault.Cmdlets +{ + [Cmdlet(VerbsCommon.Remove, "AzureKeyVaultSecret", + SupportsShouldProcess = true, + ConfirmImpact = ConfirmImpact.High)] + [OutputType(typeof(Secret))] + public class RemoveAzureKeyVaultSecret : KeyVaultCmdletBase + { + #region Input Parameter Definitions + + /// + /// Vault name + /// + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Vault name. Cmdlet constructs the FQDN of a vault based on the name and currently selected environment.")] + [ValidateNotNullOrEmpty] + public string VaultName { get; set; } + + /// + /// Secret name + /// + [Parameter(Mandatory = true, + Position = 1, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Secret name. Cmdlet constructs the FQDN of a secret from vault name, currently selected environment and secret name.")] + [ValidateNotNullOrEmpty] + [Alias("SecretName")] + public string Name { get; set; } + + /// + /// If present, do not ask for confirmation + /// + [Parameter(Mandatory = false, + HelpMessage = "Do not ask for confirmation.")] + public SwitchParameter Force { get; set; } + + [Parameter(Mandatory = false, + HelpMessage = "Cmdlet does not return object by default. If this switch is specified, return a bool to enable pipeline.")] + public SwitchParameter PassThru { get; set; } + + #endregion + + public override void ExecuteCmdlet() + { + try + { + Secret secret = null; + ConfirmAction( + Force.IsPresent, + string.Format( + CultureInfo.InvariantCulture, + Resources.RemoveSecretWarning, + Name), + string.Format( + CultureInfo.InvariantCulture, + Resources.RemoveSecretWhatIfMessage, + Name), + Name, + () => { secret = DataServiceClient.DeleteSecret(VaultName, Name); }); + + if (PassThru.IsPresent) + { + WriteObject(secret); + } + } + catch (Exception ex) + { + this.WriteErrorDetails(ex); + } + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/RestoreAzureKeyVaultKey.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/RestoreAzureKeyVaultKey.cs new file mode 100644 index 000000000000..aa99113bc598 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/RestoreAzureKeyVaultKey.cs @@ -0,0 +1,69 @@ +// ---------------------------------------------------------------------------------- +// +// 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.KeyVault.Models; +using Microsoft.Azure.Commands.KeyVault.Properties; +using System; +using System.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.Cmdlets +{ + /// + /// Restores the backup key into a vault + /// + [Cmdlet(VerbsData.Restore, "AzureKeyVaultKey")] + [OutputType(typeof(KeyBundle))] + public class RestoreAzureKeyVaultKey : KeyVaultCmdletBase + { + #region Input Parameter Definitions + + /// + /// Vault name + /// + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Vault name. Cmdlet constructs the FQDN of a vault based on the name and currently selected environment.")] + [ValidateNotNullOrEmpty] + public string VaultName { get; set; } + + /// + /// The input file in which the backup blob is stored + /// + [Parameter(Mandatory = true, + Position = 1, + HelpMessage = "Input file. The input file containing the backed up blob")] + [ValidateNotNullOrEmpty] + public string InputFile { get; set; } + + #endregion Input Parameter Definitions + + public override void ExecuteCmdlet() + { + try + { + var filePath = ResolvePath(InputFile, Resources.BackupKeyFileNotFound); + + var restoredKeyBundle = this.DataServiceClient.RestoreKey(VaultName, filePath); + + this.WriteObject(restoredKeyBundle); + } + catch (Exception ex) + { + this.WriteErrorDetails(ex); + } + } + + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/SetAzureKeyVaultKey.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/SetAzureKeyVaultKey.cs new file mode 100644 index 000000000000..523c7955394c --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/SetAzureKeyVaultKey.cs @@ -0,0 +1,106 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Management.Automation; +using Microsoft.Azure.Commands.KeyVault.Models; + +namespace Microsoft.Azure.Commands.KeyVault.Cmdlets +{ + /// + /// Update attribute of a key vault key. + /// + [Cmdlet(VerbsCommon.Set, "AzureKeyVaultKey")] + [OutputType(typeof(KeyBundle))] + public class SetAzureKeyVaultKey : KeyVaultCmdletBase + { + #region Input Parameter Definitions + + /// + /// Vault name + /// + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Vault name. Cmdlet constructs the FQDN of a vault based on the name and currently selected environment.")] + [ValidateNotNullOrEmpty] + public string VaultName { get; set; } + + /// + /// key name + /// + [Parameter(Mandatory = true, + Position = 1, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Key name. Cmdlet constructs the FQDN of a key from vault name, currently selected environment and key name.")] + [ValidateNotNullOrEmpty] + [Alias("KeyName")] + public string Name { get; set; } + + /// + /// If present, enable a key if value is true. + /// Disable a key if value is false. + /// If not present, no change on current key enabled/disabled state. + /// + [Parameter(Mandatory = false, + HelpMessage = "If present, enable a key if value is true. Disable a key if value is false. If not present, no change on current key enabled/disabled state.")] + public bool? Enable { get; set; } + + /// + /// Key expires time in UTC time + /// + [Parameter(Mandatory = false, + ValueFromPipelineByPropertyName = true, + HelpMessage = "The expiration time of a key in UTC time. If not present, no change on current key expiration time.")] + public DateTime? Expires { get; set; } + + /// + /// The UTC time before which key can't be used + /// + [Parameter(Mandatory = false, + ValueFromPipelineByPropertyName = true, + HelpMessage = "The UTC time before which key can't be used. If not present, no change on current key NotBefore attribute")] + public DateTime? NotBefore { get; set; } + + /// + /// Key operations + /// + [Parameter(Mandatory = false, + ValueFromPipelineByPropertyName = true, + HelpMessage = "The operations that can be performed with the key. If not present, no change on current key permitted operations.")] + public string[] KeyOps { get; set; } + + #endregion + + public override void ExecuteCmdlet() + { + try + { + KeyAttributes attributes = new KeyAttributes + { + Enabled = this.Enable, + Expires = this.Expires, + NotBefore = this.NotBefore, + KeyOps = this.KeyOps + }; + + WriteObject(DataServiceClient.SetKey(VaultName, Name, attributes)); + } + catch (Exception ex) + { + this.WriteErrorDetails(ex); + } + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/SetAzureKeyVaultSecret.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/SetAzureKeyVaultSecret.cs new file mode 100644 index 000000000000..fa3f3d59f953 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Commands/SetAzureKeyVaultSecret.cs @@ -0,0 +1,72 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Security; +using System.Management.Automation; +using Microsoft.Azure.Commands.KeyVault.Models; + +namespace Microsoft.Azure.Commands.KeyVault.Cmdlets +{ + [Cmdlet(VerbsCommon.Set, "AzureKeyVaultSecret")] + [OutputType(typeof(Secret))] + public class SetAzureKeyVaultSecret : KeyVaultCmdletBase + { + #region Input Parameter Definitions + + /// + /// Vault name + /// + [Parameter(Mandatory = true, + Position = 0, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Vault name. Cmdlet constructs the FQDN of a vault based on the name and currently selected environment.")] + [ValidateNotNullOrEmpty] + public string VaultName { get; set; } + + /// + /// Secret name + /// + [Parameter(Mandatory = true, + Position = 1, + ValueFromPipelineByPropertyName = true, + HelpMessage = "Secret name. Cmdlet constructs the FQDN of a secret from vault name, currently selected environment and secret name.")] + [ValidateNotNullOrEmpty] + [Alias("SecretName")] + public string Name { get; set; } + + /// + /// Secret value + /// + [Parameter(Mandatory = true, + Position = 2, + HelpMessage = "Secret value")] + public SecureString SecretValue { get; set; } + + #endregion + + public override void ExecuteCmdlet() + { + try + { + var secret = DataServiceClient.SetSecret(VaultName, Name, SecretValue); + WriteObject(secret); + } + catch (Exception ex) + { + this.WriteErrorDetails(ex); + } + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/MSSharedLibKey.snk b/src/ResourceManager/KeyVault/Commands.KeyVault/MSSharedLibKey.snk new file mode 100644 index 000000000000..695f1b38774e Binary files /dev/null and b/src/ResourceManager/KeyVault/Commands.KeyVault/MSSharedLibKey.snk differ diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Microsoft.Azure.Commands.KeyVault.dll-Help.xml b/src/ResourceManager/KeyVault/Commands.KeyVault/Microsoft.Azure.Commands.KeyVault.dll-Help.xml new file mode 100644 index 000000000000..e96c49f92303 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Microsoft.Azure.Commands.KeyVault.dll-Help.xml @@ -0,0 +1,110 @@ + + + +Add-AzureKeyVaultKeyCreates a key in a vault or imports a key into a vault. AddAzureKeyVaultKeyThe Add-AzureKeyVaultKey cmdlet creates a key in an Azure Key Vault, or imports a key into a vault. Use this cmdlet to add keys by using any of the following methods: + +-- Create a key in a hardware security module (HSM) in the Azure Key Vault service. +-- Create a key in software in the Azure Key Vault service. +-- Import a key from your own hardware security module (HSM) to HSMs in the Azure Key Vault service. +-- Import a key from a .pfx file on your computer. +-- Import a key from a .pfx file on your computer to hardware security modules (HSMs) in the Azure Key Vault service. + +For any of these operations, you can provide key attributes or accept default settings. + +If you create or import a key that has the same name as an existing key in your key vault, the original key is updated with the values that you specify for the new key. You can access the previous values by using the version-specific URI for that version of the key. To learn about key versions and the URI structure, see “About Keys and Secrets” in the Key Vault REST API documentation (http://go.microsoft.com/fwlink/?linkid=518560). + +Note: To import a key from your own hardware security module, you must first generate a BYOK package (a file with a .byok file name extension) by using the Azure Key Vault BYOK toolset. For more information, see How to Generate and Transfer HSM-Protected Keys for Azure Key Vault (http://go.microsoft.com/fwlink/?LinkId=522252).Add-AzureKeyVaultKeyVaultNameSpecifies the name of the vault to which this cmdlet adds the key. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your current environment.StringNameSpecifies the name of the key to add to the vault. This cmdlet constructs the fully qualified domain name (FQDN) of a key based on the name that this parameter specifies, the name of the vault, and your current environment. The name must be a string of 1 through 63 characters in length that contains only 0-9, a-z, A-Z, and – (the dash symbol).StringDestinationSpecifies whether to add the key as a software-protected key or an HSM-protected key in the Key Vault service. Valid values are: HSM and Software. Note: To use HSM as your destination, you must have a key vault that supports HSMs. For more information about the service tiers and capabilities for Azure Key Vault, see the Azure Key Vault Pricing website (http://go.microsoft.com/fwlink/?linkid=512521).This parameter is required when you create a new key. If you import a key by using the KeyFilePath parameter, this parameter is optional: + +-- If you do not specify this parameter, and this cmdlet imports a key that has .byok file name extension, it imports that key as an HSM-protected key. The cmdlet cannot import that key as software-protected key. + +-- If you do not specify this parameter, and this cmdlet imports a key that has a .pfx file name extension, it imports the key as a software-protected key.HSMSoftwareDisableIndicates that the key you are adding is set to an initial state of disabled. Any attempt to use the key will fail. Use this parameter if you are preloading keys that you intend to enable later.ExpiresSpecifies the expiration time, as a DateTime object, for the key that this cmdlet adds. This parameter uses Coordinated Universal Time (UTC). To obtain a DateTime object, use the Get-Date cmdlet. For more information, type Get-Help Get-Date. If you do not specify this parameter, the key does not expire.Nullable [DateTime]KeyFilePasswordSpecifies a password for the imported file as a SecureString object. To obtain a SecureString object, use the ConvertTo-SecureString cmdlet. For more information, type Get-Help ConvertTo-SecureString. You must specify this password to import a file with a .pfx file name extension. SecureStringKeyOpsSpecifies an array of operations that can be performed by using the key that this cmdlet adds. If you do not specify this parameter, all operations can be performed.The acceptable values for this parameter are a comma-separated list of key operations as defined by the JSON Web Key specification. These values are: + +-- Encrypt +-- Decrypt +-- Wrap +-- Unwrap +-- Sign +-- Verify +-- Backup +-- RestoreString[]NotBeforeSpecifies the time, as a DateTime object, before which the key cannot be used. This parameter uses UTC. To obtain a DateTime object, use the Get-Date cmdlet. If you do not specify this parameter, the key can be used immediately. Nullable [DateTime]KeyFilePathSpecifies the path of a local file that contains key material that this cmdlet imports. The valid file name extensions are .byok and .pfx. + +-- If the file is a .byok file, the key is automatically protected by HSMs after the import and you cannot override this default. + +-- If the file is a .pfx file, the key is automatically protected by software after the import. To override this default, set the Destination parameter to HSM so that the key is HSM-protected.When you specify this parameter, the Destination parameter is optional. + +StringAdd-AzureKeyVaultKeyVaultNameSpecifies the name of the vault to which this cmdlet adds the key. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your current environment.StringNameSpecifies the name of the key to add to the vault. This cmdlet constructs the fully qualified domain name (FQDN) of a key based on the name that this parameter specifies, the name of the vault, and your current environment. The name must be a string of 1 through 63 characters in length that contains only 0-9, a-z, A-Z, and – (the dash symbol).StringDisableIndicates that the key you are adding is set to an initial state of disabled. Any attempt to use the key will fail. Use this parameter if you are preloading keys that you intend to enable later.ExpiresSpecifies the expiration time, as a DateTime object, for the key that this cmdlet adds. This parameter uses Coordinated Universal Time (UTC). To obtain a DateTime object, use the Get-Date cmdlet. For more information, type Get-Help Get-Date. If you do not specify this parameter, the key does not expire.Nullable [DateTime]KeyOpsSpecifies an array of operations that can be performed by using the key that this cmdlet adds. If you do not specify this parameter, all operations can be performed.The acceptable values for this parameter are a comma-separated list of key operations as defined by the JSON Web Key specification. These values are: + +-- Encrypt +-- Decrypt +-- Wrap +-- Unwrap +-- Sign +-- Verify +-- Backup +-- RestoreString[]NotBeforeSpecifies the time, as a DateTime object, before which the key cannot be used. This parameter uses UTC. To obtain a DateTime object, use the Get-Date cmdlet. If you do not specify this parameter, the key can be used immediately. Nullable [DateTime]DestinationSpecifies whether to add the key as a software-protected key or an HSM-protected key in the Key Vault service. Valid values are: HSM and Software. Note: To use HSM as your destination, you must have a key vault that supports HSMs. For more information about the service tiers and capabilities for Azure Key Vault, see the Azure Key Vault Pricing website (http://go.microsoft.com/fwlink/?linkid=512521).This parameter is required when you create a new key. If you import a key by using the KeyFilePath parameter, this parameter is optional: + +-- If you do not specify this parameter, and this cmdlet imports a key that has .byok file name extension, it imports that key as an HSM-protected key. The cmdlet cannot import that key as software-protected key. + +-- If you do not specify this parameter, and this cmdlet imports a key that has a .pfx file name extension, it imports the key as a software-protected key.HSMSoftwareDestinationSpecifies whether to add the key as a software-protected key or an HSM-protected key in the Key Vault service. Valid values are: HSM and Software. Note: To use HSM as your destination, you must have a key vault that supports HSMs. For more information about the service tiers and capabilities for Azure Key Vault, see the Azure Key Vault Pricing website (http://go.microsoft.com/fwlink/?linkid=512521).This parameter is required when you create a new key. If you import a key by using the KeyFilePath parameter, this parameter is optional: + +-- If you do not specify this parameter, and this cmdlet imports a key that has .byok file name extension, it imports that key as an HSM-protected key. The cmdlet cannot import that key as software-protected key. + +-- If you do not specify this parameter, and this cmdlet imports a key that has a .pfx file name extension, it imports the key as a software-protected key.StringStringnoneDisableIndicates that the key you are adding is set to an initial state of disabled. Any attempt to use the key will fail. Use this parameter if you are preloading keys that you intend to enable later.SwitchParameterSwitchParameternoneExpiresSpecifies the expiration time, as a DateTime object, for the key that this cmdlet adds. This parameter uses Coordinated Universal Time (UTC). To obtain a DateTime object, use the Get-Date cmdlet. For more information, type Get-Help Get-Date. If you do not specify this parameter, the key does not expire.Nullable [DateTime]Nullable [DateTime]noneKeyFilePasswordSpecifies a password for the imported file as a SecureString object. To obtain a SecureString object, use the ConvertTo-SecureString cmdlet. For more information, type Get-Help ConvertTo-SecureString. You must specify this password to import a file with a .pfx file name extension. SecureStringSecureStringnoneKeyFilePathSpecifies the path of a local file that contains key material that this cmdlet imports. The valid file name extensions are .byok and .pfx. + +-- If the file is a .byok file, the key is automatically protected by HSMs after the import and you cannot override this default. + +-- If the file is a .pfx file, the key is automatically protected by software after the import. To override this default, set the Destination parameter to HSM so that the key is HSM-protected.When you specify this parameter, the Destination parameter is optional. + +StringStringnoneKeyOpsSpecifies an array of operations that can be performed by using the key that this cmdlet adds. If you do not specify this parameter, all operations can be performed.The acceptable values for this parameter are a comma-separated list of key operations as defined by the JSON Web Key specification. These values are: + +-- Encrypt +-- Decrypt +-- Wrap +-- Unwrap +-- Sign +-- Verify +-- Backup +-- RestoreString[]String[]noneNameSpecifies the name of the key to add to the vault. This cmdlet constructs the fully qualified domain name (FQDN) of a key based on the name that this parameter specifies, the name of the vault, and your current environment. The name must be a string of 1 through 63 characters in length that contains only 0-9, a-z, A-Z, and – (the dash symbol).StringStringnoneNotBeforeSpecifies the time, as a DateTime object, before which the key cannot be used. This parameter uses UTC. To obtain a DateTime object, use the Get-Date cmdlet. If you do not specify this parameter, the key can be used immediately. Nullable [DateTime]Nullable [DateTime]noneVaultNameSpecifies the name of the vault to which this cmdlet adds the key. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your current environment.StringStringnoneString, String[], DateTimeMicrosoft.Azure.Commands.KeyVault.Models.KeyBundleExample 1: Create a keyPS C:\>Add-AzureKeyVaultKey -VaultName 'Contoso' -Name 'ITSoftware' -Destination 'Software' +This command creates a software-protected key named ITSoftware in the vault named Contoso.Example 2: Create an HSM keyPS C:\>Add-AzureKeyVaultKey -VaultName 'Contoso' -Name 'ITHsm' -Destination 'HSM' +This command creates an HSM-protected key in the key vault named Contoso.Example 3: Create a key with non-default valuesPS C:\>$KeyOperations = 'decrypt', 'verify' +PS C:\> $Expires = (Get-Date).AddYears(2).ToUniversalTime() +PS C:\> $NotBefore=(Get-Date).ToUniversalTime() +PS C:\> Add-AzureKeyVaultKey -VaultName "Contoso" -Name 'ITHsmNonDefault' -Destination 'HSM' -Expires $Expires -NotBefore $NotBefore -KeyOps $KeyOperations -Disable +The first command stores the values decrypt and verify in the $KeyOperations variable.The second command creates a DateTime object, defined in UTC, by using the Get-Date cmdlet. That object specifies a time two years in the future. The command stores that date in the $Expires variable. For more information, type Get-Help Get-Date.The third command creates a DateTime object by using the Get-Date cmdlet. That object specifies current UTC time. The command stores that date in the $NotBefore variable. The final command creates a key named ITHsmNonDefault that is an HSM-protected key. The command specifies values for allowed key operations stored $KeyOperations. The command specifies times for the Expires and NotBefore parameters created in the previous commands. The new key is disabled. You can enable it by using the Set-AzureKeyVaultKey cmdlet.Example 4: Import an HSM keyPS C:\>Add-AzureKeyVaultKey -VaultName 'Contoso' -Name 'ITByok' -KeyFilePath 'C:\Contoso\ITByok.byok' -Destination 'HSM' +This command imports the key named ITByok from the location that the KeyFilePath parameter specifies. The imported key is an HSM-protected key.Example 5: Import a software-protected keyPS C:\>$Password = ConvertTo-SecureString -String 'password' -AsPlainText -Force +PS C:\> Add-AzureKeyVaultKey -VaultName 'Contoso' -Name 'ITPfx' -KeyFilePath 'C:\Contoso\ITPfx.pfx' -KeyFilePassword $Password +The first command converts a string into a secure string by using the ConvertTo-SecureString cmdlet, and then stores that string in the $Password variable. For more information, type Get-Help ConvertTo-SecureString.The second command creates a software password in the Contoso vault. The command specifies the location for the key and the password stored in $Password.Example 6: Import a key and assign attributesPS C:\>$Password = ConvertTo-SecureString -String 'password' -AsPlainText -Force +PS C:\> $Expires = (Get-Date).AddYears(2).ToUniversalTime() +PS C:\> Add-AzureKeyVaultKey -VaultName 'Contoso' -Name 'ITPfxToHSM' -Destination 'HSM' -KeyFilePath 'C:\Contoso\ITPfx.pfx' -KeyFilePassword $Password -Expires $Expires +The first command converts a string into a secure string by using the ConvertTo-SecureString cmdlet, and then stores that string in the $Password variable. The second command creates a DateTime object by using the Get-Date cmdlet, and then stores that object in the $Expires variable. The final command imports a key as an HSM key from the specified location. The command specifies the expiration time stored in $Expires and password stored in $Password.Online Version:http://go.microsoft.com/fwlink/?LinkId=520396Get-AzureKeyVaultKeyRemove-AzureKeyVaultKeySet-AzureKeyVaultKeyGet-AzureKeyVaultKeyGets the keys in a vault. GetAzureKeyVaultKeyThe Get-AzureKeyVaultKey cmdlet gets the keys in an Azure Key Vault. This cmdlet gets a specific Microsoft.Azure.Commands.KeyVault.Models.KeyBundle or a list of all KeyBundle objects in a vault. Get-AzureKeyVaultKeyVaultNameSpecifies the name of the vault from which this cmdlet gets keys. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your selected environment.StringVersionSpecifies the key version. This cmdlet constructs the FQDN of a key based on the vault name, your currently selected environment, the key name, and the key version.StringNameSpecifies the name of the key to get. This cmdlet constructs the fully qualified domain name (FQDN) of a key based on the name that this parameter specifies, the name of the vault, and your current environment.StringGet-AzureKeyVaultKeyNameSpecifies the name of the key to get. This cmdlet constructs the fully qualified domain name (FQDN) of a key based on the name that this parameter specifies, the name of the vault, and your current environment.StringVaultNameSpecifies the name of the vault from which this cmdlet gets keys. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your selected environment.StringNameSpecifies the name of the key to get. This cmdlet constructs the fully qualified domain name (FQDN) of a key based on the name that this parameter specifies, the name of the vault, and your current environment.StringStringnoneVaultNameSpecifies the name of the vault from which this cmdlet gets keys. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your selected environment.StringStringnoneVersionSpecifies the key version. This cmdlet constructs the FQDN of a key based on the vault name, your currently selected environment, the key name, and the key version.StringStringnoneStringList<Microsoft.Azure.Commands.KeyVault.Models.KeyBundle>, Microsoft.Azure.Commands.KeyVault.Models.KeyBundleExample 1: Get all the keys in a vaultPS C:\>Get-AzureKeyVaultKey -VaultName 'Contoso' +This command gets all the keys in the vault named Contoso. Example 2: Get a specific key PS C:\>$key = Get-AzureKeyVaultKey -VaultName 'Contoso' -KeyName 'ITPfx' +This command gets the key named ITPfx in the vault named Contoso. After running this command, you can inspect various properties of the key by navigating the $key object.Online Version:http://go.microsoft.com/fwlink/?LinkId=521395Add-AzureKeyVaultKeyRemove-AzureKeyVaultKeySet-AzureKeyVaultKeyGet-AzureKeyVaultSecretGets the secrets in a vault. GetAzureKeyVaultSecretThe Get-AzureKeyVaultSecret cmdlet gets secrets in an Azure Key Vault. This cmdlet gets a specific secret or all the secrets in a vault. Get-AzureKeyVaultSecretVaultNameSpecifies the name of the vault to which the secret belongs. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your current environment.StringVersionSpecifies the secret version. This cmdlet constructs the FQDN of a secret based on the vault name, your currently selected environment, the secret name, and the secret version.StringNameSpecifies the name of a secret to get. This cmdlet constructs the fully qualified domain name (FQDN) of a secret based on the name that this parameter specifies, the name of the vault, and your current environment.StringGet-AzureKeyVaultSecretNameSpecifies the name of a secret to get. This cmdlet constructs the fully qualified domain name (FQDN) of a secret based on the name that this parameter specifies, the name of the vault, and your current environment.StringVaultNameSpecifies the name of the vault to which the secret belongs. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your current environment.StringNameSpecifies the name of a secret to get. This cmdlet constructs the fully qualified domain name (FQDN) of a secret based on the name that this parameter specifies, the name of the vault, and your current environment.StringStringnoneVaultNameSpecifies the name of the vault to which the secret belongs. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your current environment.StringStringnoneVersionSpecifies the secret version. This cmdlet constructs the FQDN of a secret based on the vault name, your currently selected environment, the secret name, and the secret version.StringStringnoneStringList<Microsoft.Azure.Commands.KeyVault.Models.Secret>, Microsoft.Azure.Commands.KeyVault.Models.SecretExample 1: Get all the secrets in a vaultPS C:\>Get-AzureKeyVaultSecret -VaultName 'Contoso' +This command gets all the secrets in the vault named Contoso. Example 2: Get a specific secret PS C:\>Get-AzureKeyVaultSecret -VaultName 'Contoso' -KeyName 'ITSecret' +This command gets the secret named ITSecret in the vault named Contoso. Online Version:http://go.microsoft.com/fwlink/?LinkId=521396Remove-AzureKeyVaultSecretSet-AzureKeyVaultSecretRemove-AzureKeyVaultKeyDeletes a key in a vault. RemoveAzureKeyVaultKeyThe Remove-AzureKeyVaultKey cmdlet deletes a key in an Azure Key Vault. This cmdlet has a value of high for the ConfirmImpact property.Remove-AzureKeyVaultKeyVaultNameSpecifies the name of the vault from which to remove the key. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your current environment. StringNameSpecifies the name of the key to remove. This cmdlet constructs the fully qualified domain name (FQDN) of a key based on the name that this parameter specifies, the name of the vault, and your current environment.StringForceIndicates that this cmdlet does not prompt you for confirmation.PassThruIndicates that this cmdlet returns a Microsoft.Azure.Commands.KeyVault.Models.KeyBundle object. By default, this cmdlet does not return a value. ForceIndicates that this cmdlet does not prompt you for confirmation.SwitchParameterSwitchParameternoneNameSpecifies the name of the key to remove. This cmdlet constructs the fully qualified domain name (FQDN) of a key based on the name that this parameter specifies, the name of the vault, and your current environment.StringStringnonePassThruIndicates that this cmdlet returns a Microsoft.Azure.Commands.KeyVault.Models.KeyBundle object. By default, this cmdlet does not return a value. SwitchParameterSwitchParameternoneVaultNameSpecifies the name of the vault from which to remove the key. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your current environment. StringStringnoneStringMicrosoft.Azure.Commands.KeyVault.Models.KeyBundleThis cmdlet returns a value only if you specify the PassThru parameter. Example 1: Remove a key from a vaultPS C:\>Remove-AzureKeyVaultKey -VaultName 'Contoso' -Name 'ITSoftware' +This command removes the key named ITSoftware from the vault named Contoso. Example 2: Remove a key without user confirmationPS C:\>Remove-AzureKeyVaultKey -VaultName 'Contoso' -Name 'ITSoftware' -Force -Confirm:$False +This command removes the key named ITSoftware from the vault named Contoso. The command specifies the Force and Confirm parameters, and, therefore, the cmdlet does not prompt you for confirmation.Example 3: Remove keys by using the pipeline operatorPS C:\>Get-AzureKeyVaultKey -VaultName Contoso | Where-Object {$_.Attributes.Enabled -eq $False} | Remove-AzureKeyVaultKey +This command gets all the keys in the vault named Contoso, and passes them to the Where-Object cmdlet by using the pipeline operator. That cmdlet passes the keys that have a value of $False for the Enabled attribute to the current cmdlet. That cmdlet removes those keys. Online Version:http://go.microsoft.com/fwlink/?LinkId=521397Add-AzureKeyVaultKeyGet-AzureKeyVaultKeySet-AzureKeyVaultKeyRemove-AzureKeyVaultSecretDeletes a secret in a vault. RemoveAzureKeyVaultSecretThe Remove-AzureKeyVaultSecret cmdlet deletes a secret in an Azure Key Vault. This cmdlet has a value of high for the ConfirmImpact property.Remove-AzureKeyVaultSecretVaultNameSpecifies the name of the vault to which the secret belongs. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your current environment.StringNameSpecifies the name of a secret. This cmdlet constructs the fully qualified domain name (FQDN) of a secret based on the name that this parameter specifies, the name of the vault, and your current environment.StringForceIndicates that this cmdlet does not prompt you for confirmation.PassThruIndicates that this cmdlet returns a Microsoft.Azure.Commands.KeyVault.Models.Secret object. By default, this cmdlet does not return a value. ForceIndicates that this cmdlet does not prompt you for confirmation.SwitchParameterSwitchParameternoneNameSpecifies the name of a secret. This cmdlet constructs the fully qualified domain name (FQDN) of a secret based on the name that this parameter specifies, the name of the vault, and your current environment.StringStringnonePassThruIndicates that this cmdlet returns a Microsoft.Azure.Commands.KeyVault.Models.Secret object. By default, this cmdlet does not return a value. SwitchParameterSwitchParameternoneVaultNameSpecifies the name of the vault to which the secret belongs. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your current environment.StringStringnoneStringMicrosoft.Azure.Commands.KeyVault.Models.SecretThis cmdlet returns a value only if you specify the PassThru parameter.Example 1: Remove a secret from a vaultPS C:\>Remove-AzureKeyVaultSecret -VaultName 'Contoso' -Name 'FinanceSecret' +This command removes the secret named FinanceSecret from the vault named Contoso.Example 2: Remove a secret from a vault without user confirmationPS C:\>Remove-AzureKeyVaultSecret -VaultName 'Contoso' -Name 'FinanceSecret' -Force -Confirm:$False +This command removes the secret named FinanceSecret from the vault named Contoso. The command specifies the Force and Confirm parameters, and, therefore, the cmdlet does not prompt you for confirmation.Online Version:http://go.microsoft.com/fwlink/?LinkId=521398Get-AzureKeyVaultSecretSet-AzureKeyVaultSecretSet-AzureKeyVaultKeyUpdate the attributes of a key in a vault. SetAzureKeyVaultKeyThe Set-AzureKeyVaultKey cmdlet updates the editable attributes of a key in an Azure Key Vault.Set-AzureKeyVaultKeyVaultNameSpecifies the name of the vault in which this cmdlet modifies the key. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your current environment.StringNameSpecifies the name of the key to update. This cmdlet constructs the fully qualified domain name (FQDN) of a key based on the name that this parameter specifies, the name of the vault, and your current environment.StringEnableSpecifies whether to enable or disable a key. A value of $True enables the key. A value of $False disables the key. If you do not specify this parameter, this cmdlet does not modify the status of the key.Nullable [Boolean]ExpiresSpecifies the expiration time, as a DateTime object, for the key that this cmdlet updates. This parameter uses Coordinated Universal Time (UTC). To obtain a DateTime object, use the Get-Date cmdlet. For more information, type Get-Help Get-Date. Nullable [DateTime]KeyOpsSpecifies an array of operations that can be performed by using the key that this cmdlet adds. If you do not specify this parameter, all operations can be performed.The acceptable values for this parameter are a comma-separated list of key operations as defined by the JSON Web Key specification. These values are: + +-- Encrypt +-- Decrypt +-- Wrap +-- Unwrap +-- Sign +-- Verify +-- Backup +-- RestoreString[]NotBeforeSpecifies the time, as a DateTime object, before which the key cannot be used. This parameter uses UTC. To obtain a DateTime object, use the Get-Date cmdlet. Nullable [DateTime]EnableSpecifies whether to enable or disable a key. A value of $True enables the key. A value of $False disables the key. If you do not specify this parameter, this cmdlet does not modify the status of the key.Nullable [Boolean]Nullable [Boolean]noneExpiresSpecifies the expiration time, as a DateTime object, for the key that this cmdlet updates. This parameter uses Coordinated Universal Time (UTC). To obtain a DateTime object, use the Get-Date cmdlet. For more information, type Get-Help Get-Date. Nullable [DateTime]Nullable [DateTime]noneKeyOpsSpecifies an array of operations that can be performed by using the key that this cmdlet adds. If you do not specify this parameter, all operations can be performed.The acceptable values for this parameter are a comma-separated list of key operations as defined by the JSON Web Key specification. These values are: + +-- Encrypt +-- Decrypt +-- Wrap +-- Unwrap +-- Sign +-- Verify +-- Backup +-- RestoreString[]String[]noneNameSpecifies the name of the key to update. This cmdlet constructs the fully qualified domain name (FQDN) of a key based on the name that this parameter specifies, the name of the vault, and your current environment.StringStringnoneNotBeforeSpecifies the time, as a DateTime object, before which the key cannot be used. This parameter uses UTC. To obtain a DateTime object, use the Get-Date cmdlet. Nullable [DateTime]Nullable [DateTime]noneVaultNameSpecifies the name of the vault in which this cmdlet modifies the key. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your current environment.StringStringnoneString, Boolean, DateTimeMicrosoft.Azure.Commands.KeyVault.Models.KeyBundleExample 1: Modify a keyPS C:\>$Expires= (Get-Date).AddYears(2).ToUniversalTime() +PS C:\> Set-AzureKeyVaultKey -VaultName 'Contoso' -Name 'ITSoftware' -Expires $Expires -Enable $True +The first command creates a DateTime object by using the Get-Date cmdlet. That object specifies a time two years in the future. The command stores that date in the $Expires variable. For more information, type Get-Help Get-Date.The second command modifies a key named ITSoftware. The command enables the key and sets its expiration time to the time stored in $Expires. Online Version:http://go.microsoft.com/fwlink/?LinkId=521399Add-AzureKeyVaultKeyGet-AzureKeyVaultKeyRemove-AzureKeyVaultKeySet-AzureKeyVaultSecretCreates or updates a secret in a vault. SetAzureKeyVaultSecretThe Set-AzureKeyVaultSecret cmdlet creates or updates a secret in an Azure Key Vault. If the secret does not exist, this cmdlet creates it. If the secret already exists, this cmdlet replaces it with the value that you specify.Set-AzureKeyVaultSecretVaultNameSpecifies the name of the vault to which this secret belongs. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your current environment. StringNameSpecifies the name of a secret to modify. This cmdlet constructs the fully qualified domain name (FQDN) of a secret based on the name that this parameter specifies, the name of the vault, and your current environment.StringSecretValueSpecifies the value for the secret.SecureStringNameSpecifies the name of a secret to modify. This cmdlet constructs the fully qualified domain name (FQDN) of a secret based on the name that this parameter specifies, the name of the vault, and your current environment.StringStringnoneSecretValueSpecifies the value for the secret.SecureStringSecureStringnoneVaultNameSpecifies the name of the vault to which this secret belongs. This cmdlet constructs the FQDN of a vault based on the name that this parameter specifies and your current environment. StringStringnoneString, SecureStringMicrosoft.Azure.Commands.KeyVault.Models.SecretExample 1: Modify the value of a secretPS C:\>$Secret = ConvertTo-SecureString -String 'password' -AsPlainText -Force +PS C:\> Set-AzureKeyVaultSecret -VaultName 'Contoso' -Name 'ITSecret' -SecretValue $Secret +The first command converts a string into a secure string by using the ConvertTo-SecureString cmdlet, and then stores that string in the $Secret variable. For more information, type Get-Help ConvertTo-SecureString.The second command modifies value of the secret named ITSecret in the vault named Contoso. The secret value becomes the value stored in $Secret. Online Version:http://go.microsoft.com/fwlink/?LinkId=521400Get-AzureKeyVaultSecretRemove-AzureKeyVaultSecret diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Microsoft.Azure.Commands.KeyVault.format.ps1xml b/src/ResourceManager/KeyVault/Commands.KeyVault/Microsoft.Azure.Commands.KeyVault.format.ps1xml new file mode 100644 index 000000000000..f1331af3d05a --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Microsoft.Azure.Commands.KeyVault.format.ps1xml @@ -0,0 +1,114 @@ + + + + + Microsoft.Azure.Commands.KeyVault.Models.KeyIdentityItem + + Microsoft.Azure.Commands.KeyVault.Models.KeyIdentityItem + + + + + + Left + + + + Left + + + + Left + + + + Left + + + + Left + + + + Left + + + + Left + + + + + + + VaultName + + + Name + + + Version + + + Id + + + Enabled + + + Expires + + + NotBefore + + + + + + + + Microsoft.Azure.Commands.KeyVault.Models.SecretIdentityItem + + Microsoft.Azure.Commands.KeyVault.Models.SecretIdentityItem + + + + + + Left + + + + Left + + + + Left + + + + Left + + + + + + + VaultName + + + Name + + + Version + + + Id + + + + + + + + diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/ByokWebKeyConverter.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/ByokWebKeyConverter.cs new file mode 100644 index 000000000000..f374912bf681 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/ByokWebKeyConverter.cs @@ -0,0 +1,79 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Security; +using System.IO; +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.Azure.Commands.KeyVault.WebKey; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + /// + /// Utility class that creates web key from a BYOK file + /// + internal class ByokWebKeyConverter : IWebKeyConverter + { + public ByokWebKeyConverter(IWebKeyConverter next=null) + { + this.next = next; + } + + public JsonWebKey ConvertKeyFromFile(FileInfo fileInfo, SecureString password) + { + if (CanProcess(fileInfo)) + { + return Convert(fileInfo.FullName); + } + else if (next != null) + { + return next.ConvertKeyFromFile(fileInfo, password); + } + else + { + throw new ArgumentException(string.Format(Resources.UnsupportedFileFormat, fileInfo.Name)); + } + } + + private bool CanProcess(FileInfo fileInfo) + { + if (fileInfo == null || string.IsNullOrEmpty(fileInfo.Extension)) + { + return false; + } + + return ByokFileExtension.Equals(fileInfo.Extension, StringComparison.OrdinalIgnoreCase); + } + + private JsonWebKey Convert(string byokFileName) + { + byte[] byokBlob = File.ReadAllBytes(byokFileName); + + if (byokBlob == null || byokBlob.Length == 0) + { + throw new ArgumentException(string.Format(Resources.InvalidKeyBlob, "BYOK")); + } + + return new JsonWebKey() + { + Kty = JsonWebKeyType.RsaHsm, + T = byokBlob, + }; + } + + private IWebKeyConverter next; + private const string ByokFileExtension = ".byok"; + + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/DataServiceCredential.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/DataServiceCredential.cs new file mode 100644 index 000000000000..b7da41363c81 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/DataServiceCredential.cs @@ -0,0 +1,102 @@ +// ---------------------------------------------------------------------------------- +// +// 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.KeyVault.Properties; +using Microsoft.Azure.Common.Extensions; +using Microsoft.Azure.Common.Extensions.Authentication; +using Microsoft.Azure.Common.Extensions.Models; +using System; +using System.Linq; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + internal class DataServiceCredential + { + public DataServiceCredential(IAuthenticationFactory authFactory, AzureContext context) + { + if (authFactory == null) + { + throw new ArgumentNullException("authFactory"); + } + if (context == null) + { + throw new ArgumentNullException("context"); + } + + var bundle = GetToken(authFactory, context); + this.token = bundle.Item1; + this.resourceId = bundle.Item2; + } + + /// + /// Authentication callback method required by KeyVaultClient + /// + /// + /// + /// + /// + public string OnAuthentication(string authority, string resource, string scope) + { + // TODO: Add trace to log tokenType, resource, authority, scope etc + string tokenStr = string.Empty; + this.token.AuthorizeRequest((tokenType, tokenValue) => + { + tokenStr = tokenValue; + }); + + return tokenStr; + } + + private Tuple GetToken(IAuthenticationFactory authFactory, AzureContext context) + { + if (context.Subscription == null) + { + throw new ArgumentException(Resources.InvalidCurrentSubscription); + } + if (context.Account == null) + { + throw new ArgumentException(Resources.InvalidSubscriptionState); + } + if (context.Account.Type != AzureAccount.AccountType.User) + { + throw new ArgumentException(string.Format(Resources.UnsupportedAccountType, context.Account.Type)); + } + + var tenant = context.Subscription.GetPropertyAsArray(AzureSubscription.Property.Tenants) + .Intersect(context.Account.GetPropertyAsArray(AzureAccount.Property.Tenants)) + .FirstOrDefault(); + if (tenant == null) + { + throw new ArgumentException(Resources.InvalidSubscriptionState); + } + + try + { + var accesstoken = authFactory.Authenticate(context.Account, context.Environment, tenant, null, ShowDialog.Auto, + ResourceIdEndpoint); + + return Tuple.Create(accesstoken, context.Environment.Endpoints[ResourceIdEndpoint]); + } + catch (Exception ex) + { + throw new ArgumentException(Resources.InvalidSubscriptionState, ex); + } + } + + private IAccessToken token; + private string resourceId; + + private const AzureEnvironment.Endpoint ResourceIdEndpoint = AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId; + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/IKeyVaultDataServiceClient.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/IKeyVaultDataServiceClient.cs new file mode 100644 index 000000000000..1c5692161bde --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/IKeyVaultDataServiceClient.cs @@ -0,0 +1,47 @@ +// ---------------------------------------------------------------------------------- +// +// 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.KeyVault.WebKey; +using System.Collections.Generic; +using System.Security; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + public interface IKeyVaultDataServiceClient + { + KeyBundle CreateKey(string vaultName, string keyName, KeyAttributes keyAttributes); + + KeyBundle ImportKey(string vaultName, string keyName, KeyAttributes keyAttributes, JsonWebKey webKey, bool? importToHsm); + + KeyBundle SetKey(string vaultName, string keyName, KeyAttributes keyAttributes); + + KeyBundle GetKey(string vaultName, string keyName, string keyVersion); + + IEnumerable GetKeys(string vaultName); + + KeyBundle DeleteKey(string vaultName, string keyName); + + Secret SetSecret(string vaultName, string secretName, SecureString secretValue); + + Secret GetSecret(string vaultName, string secretName, string secretVersion); + + IEnumerable GetSecrets(string vaultName); + + Secret DeleteSecret(string vaultName, string secretName); + + string BackupKey(string vaultName, string keyName, string outputBlobPath); + + KeyBundle RestoreKey(string vaultName, string inputBlobPath); + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/IWebKeyConverter.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/IWebKeyConverter.cs new file mode 100644 index 000000000000..1664f7fa9090 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/IWebKeyConverter.cs @@ -0,0 +1,26 @@ +// ---------------------------------------------------------------------------------- +// +// 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.IO; +using System.Security; +using Microsoft.Azure.Commands.KeyVault.WebKey; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + internal interface IWebKeyConverter + { + JsonWebKey ConvertKeyFromFile(FileInfo fileInfo, SecureString password); + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyAttributes.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyAttributes.cs new file mode 100644 index 000000000000..5e6bae52e476 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyAttributes.cs @@ -0,0 +1,93 @@ +// ---------------------------------------------------------------------------------- +// +// 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.ObjectModel; +using Client = Microsoft.Azure.Commands.KeyVault.Client; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + public class KeyAttributes + { + public KeyAttributes() + { } + + internal KeyAttributes(bool? enabled, DateTime? expires, DateTime? notBefore, string keyType, string[] keyOps) + { + this.Enabled = enabled; + this.Expires = expires; + this.NotBefore = notBefore; + this.KeyType = keyType; + this.KeyOps = keyOps; + } + + internal KeyAttributes(bool? enabled, int? expires, int? notBefore, string keyType = null, string[] keyOps = null) : + this(enabled, FromUnixTime(expires), FromUnixTime(notBefore), keyType, keyOps) + { } + + public bool? Enabled { get; set; } + + public DateTime? Expires { get; set; } + + public DateTime? NotBefore { get; set; } + + public string KeyType { get; private set; } + + public string[] KeyOps { get; set; } + + public static explicit operator Client.KeyAttributes(KeyAttributes attr) + { + return new Client.KeyAttributes() + { + Enabled = attr.Enabled, + NotBefore = attr.NotBeforeUnixTime, + Expires = attr.ExpiresUnixTime + }; + } + + internal int? ExpiresUnixTime + { + get + { + return ToUnixTime(this.Expires); + } + } + + internal int? NotBeforeUnixTime + { + get + { + return ToUnixTime(this.NotBefore); + } + } + + private static int? ToUnixTime(DateTime? utcTime) + { + if (!utcTime.HasValue) + { + return null; + } + return Client.UnixEpoch.ToUnixTime(utcTime.Value); + } + + private static DateTime? FromUnixTime(int? utcTime) + { + if (!utcTime.HasValue) + { + return null; + } + return Client.UnixEpoch.FromUnixTime(utcTime.Value); + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyBundle.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyBundle.cs new file mode 100644 index 000000000000..16d38063a463 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyBundle.cs @@ -0,0 +1,56 @@ +// ---------------------------------------------------------------------------------- +// +// 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 Microsoft.Azure.Commands.KeyVault.WebKey; +using Client = Microsoft.Azure.Commands.KeyVault.Client; +using Microsoft.Azure.Commands.KeyVault.Properties; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + public class KeyBundle : ObjectIdentifier + { + public KeyBundle() + { } + + internal KeyBundle(Client.KeyBundle clientKeyBundle, VaultUriHelper vaultUriHelper) + { + if (clientKeyBundle == null) + { + throw new ArgumentNullException("clientKeyBundle"); + } + if (clientKeyBundle.Key == null || clientKeyBundle.Attributes == null) + { + throw new ArgumentException(Resources.InvalidKeyBundle); + } + + SetObjectIdentifier(vaultUriHelper, new Client.KeyIdentifier(clientKeyBundle.Key.Kid)); + + Key = clientKeyBundle.Key; + Attributes = new KeyAttributes( + clientKeyBundle.Attributes.Enabled, + clientKeyBundle.Attributes.Expires, + clientKeyBundle.Attributes.NotBefore, + clientKeyBundle.Key.Kty, + clientKeyBundle.Key.KeyOps); + + Id = clientKeyBundle.Key.Kid; + } + + public KeyAttributes Attributes { get; set; } + + public JsonWebKey Key { get; set; } + + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyIdentityItem.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyIdentityItem.cs new file mode 100644 index 000000000000..ecccf391c8fd --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyIdentityItem.cs @@ -0,0 +1,54 @@ +// ---------------------------------------------------------------------------------- +// +// 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 Microsoft.Azure.Commands.KeyVault.WebKey; +using Client = Microsoft.Azure.Commands.KeyVault.Client; +using Microsoft.Azure.Commands.KeyVault.Properties; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + public class KeyIdentityItem : ObjectIdentifier + { + internal KeyIdentityItem(Client.KeyItem clientKeyItem, VaultUriHelper vaultUriHelper) + { + if (clientKeyItem == null) + { + throw new ArgumentNullException("clientKeyItem"); + } + if (String.IsNullOrEmpty(clientKeyItem.Kid) || clientKeyItem.Attributes == null) + { + throw new ArgumentException(Resources.InvalidKeyBundle); + } + + SetObjectIdentifier(vaultUriHelper, new Client.KeyIdentifier(clientKeyItem.Kid)); + + var attribute = new KeyAttributes( + clientKeyItem.Attributes.Enabled, + clientKeyItem.Attributes.Expires, + clientKeyItem.Attributes.NotBefore); + + Enabled = attribute.Enabled; + Expires = attribute.Expires; + NotBefore = attribute.NotBefore; + Id = clientKeyItem.Kid; + } + + public bool? Enabled { get; set; } + + public DateTime? Expires { get; set; } + + public DateTime? NotBefore { get; set; } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyVaultCmdletBase.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyVaultCmdletBase.cs new file mode 100644 index 000000000000..2b6c2865c29f --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyVaultCmdletBase.cs @@ -0,0 +1,65 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Common.Extensions; +using Microsoft.WindowsAzure.Commands.Utilities.Common; +using System; +using System.IO; +using System.Net.Http; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + public class KeyVaultCmdletBase : AzurePSCmdlet + { + public KeyVaultCmdletBase() + { + } + protected void WriteErrorDetails(Exception exception) + { + // Call the handler to parse and get ErrorRecord + WriteError(KeyVaultExceptionHandler.RetrieveExceptionDetails(exception)); + } + internal IKeyVaultDataServiceClient DataServiceClient + { + get + { + if (dataServiceClient == null) + { + this.dataServiceClient = new KeyVaultDataServiceClient( + AzureSession.AuthenticationFactory, + AzureSession.CurrentContext, + new HttpClient()); + } + + return this.dataServiceClient; + } + set + { + this.dataServiceClient = value; + } + } + + internal string ResolvePath(string filePath, string notFoundMessage) + { + FileInfo keyFile = new FileInfo(this.GetUnresolvedProviderPathFromPSPath(filePath)); + if (!keyFile.Exists) + { + throw new FileNotFoundException(string.Format(notFoundMessage, filePath)); + } + return keyFile.FullName; + } + + private IKeyVaultDataServiceClient dataServiceClient; + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyVaultDataServiceClient.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyVaultDataServiceClient.cs new file mode 100644 index 000000000000..a59940bde5d2 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyVaultDataServiceClient.cs @@ -0,0 +1,342 @@ +// ---------------------------------------------------------------------------------- +// +// 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.KeyVault.Properties; +using Microsoft.Azure.Commands.KeyVault.WebKey; +using Microsoft.Azure.Common.Extensions; +using Microsoft.Azure.Common.Extensions.Models; +using Microsoft.WindowsAzure; +using Microsoft.WindowsAzure.Common.Internals; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net.Http; +using System.Security; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + internal class KeyVaultDataServiceClient : IKeyVaultDataServiceClient + { + public KeyVaultDataServiceClient(IAuthenticationFactory authFactory, AzureContext context, HttpClient httpClient) + { + if (authFactory == null) + { + throw new ArgumentNullException("authFactory"); + } + if (context == null) + { + throw new ArgumentNullException("context"); + } + if (context.Environment == null) + { + throw new ArgumentException(Resources.InvalidAzureEnvironment); + } + if (httpClient == null) + { + throw new ArgumentNullException("httpClient"); + } + + var credential = new DataServiceCredential(authFactory, context); + this.keyVaultClient = new Client.KeyVaultClient( + credential.OnAuthentication, + SendRequestCallback, + ReceiveResponseCallback, + httpClient); + + + this.vaultUriHelper = new VaultUriHelper( + context.Environment.Endpoints[AzureEnvironment.Endpoint.AzureKeyVaultDnsSuffix]); + } + + /// + /// Parameterless constructor for Mocking. + /// + public KeyVaultDataServiceClient() + { + } + + public KeyBundle CreateKey(string vaultName, string keyName, KeyAttributes keyAttributes) + { + if (string.IsNullOrEmpty(vaultName)) + { + throw new ArgumentNullException("vaultName"); + } + if (string.IsNullOrEmpty(keyName)) + { + throw new ArgumentNullException("keyName"); + } + if (keyAttributes == null) + { + throw new ArgumentNullException("keyAttributes"); + } + + string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); + Client.KeyAttributes clientAttributes = (Client.KeyAttributes)keyAttributes; + + Client.KeyBundle clientKeyBundle = + this.keyVaultClient.CreateKeyAsync( + vaultAddress, + keyName, + keyAttributes.KeyType, + key_ops: keyAttributes.KeyOps, + keyAttributes: clientAttributes).GetAwaiter().GetResult(); + + return new KeyBundle(clientKeyBundle, this.vaultUriHelper); + } + + public KeyBundle ImportKey(string vaultName, string keyName, KeyAttributes keyAttributes, JsonWebKey webKey, bool? importToHsm) + { + if (string.IsNullOrEmpty(vaultName)) + { + throw new ArgumentNullException("vaultName"); + } + if (string.IsNullOrEmpty(keyName)) + { + throw new ArgumentNullException("keyName"); + } + if (keyAttributes == null) + { + throw new ArgumentNullException("keyAttributes"); + } + if (webKey == null) + { + throw new ArgumentNullException("webKey"); + } + + string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); + + Client.KeyAttributes clientAttributes = (Client.KeyAttributes)keyAttributes; + + webKey.KeyOps = keyAttributes.KeyOps; + Client.KeyBundle clientKeyBundle = new Client.KeyBundle() + { + Attributes = clientAttributes, + Key = webKey + }; + + clientKeyBundle = this.keyVaultClient.ImportKeyAsync(vaultAddress, keyName, clientKeyBundle, importToHsm).GetAwaiter().GetResult(); + + return new KeyBundle(clientKeyBundle, this.vaultUriHelper); + } + + public KeyBundle SetKey(string vaultName, string keyName, KeyAttributes keyAttributes) + { + if (string.IsNullOrEmpty(vaultName)) + { + throw new ArgumentNullException("vaultName"); + } + if (string.IsNullOrEmpty(keyName)) + { + throw new ArgumentNullException("keyName"); + } + if (keyAttributes == null) + { + throw new ArgumentNullException("keyAttributes"); + } + + Client.KeyAttributes clientAttributes = (Client.KeyAttributes)keyAttributes; + + string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); + + var clientKeyBundle = this.keyVaultClient.UpdateKeyAsync(vaultAddress, keyName, keyAttributes.KeyOps, attributes: clientAttributes).GetAwaiter().GetResult(); + + return new KeyBundle(clientKeyBundle, this.vaultUriHelper); + } + + public KeyBundle GetKey(string vaultName, string keyName, string keyVersion) + { + if (string.IsNullOrEmpty(vaultName)) + { + throw new ArgumentNullException("vaultName"); + } + if (string.IsNullOrEmpty(keyName)) + { + throw new ArgumentNullException("keyName"); + } + + string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); + + Client.KeyBundle clientKeyBundle = this.keyVaultClient.GetKeyAsync(vaultAddress, keyName, keyVersion).GetAwaiter().GetResult(); + + return new KeyBundle(clientKeyBundle, this.vaultUriHelper); + } + + public IEnumerable GetKeys(string vaultName) + { + if (string.IsNullOrEmpty(vaultName)) + { + throw new ArgumentNullException("vaultName"); + } + + string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); + + return (this.keyVaultClient.GetKeysAsync(vaultAddress).GetAwaiter().GetResult()). + Select((keyItem) => { return new KeyIdentityItem(keyItem, this.vaultUriHelper); }); + } + + public KeyBundle DeleteKey(string vaultName, string keyName) + { + if (string.IsNullOrEmpty(vaultName)) + { + throw new ArgumentNullException("vaultName"); + } + if (string.IsNullOrEmpty(keyName)) + { + throw new ArgumentNullException("keyName"); + } + + string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); + + Client.KeyBundle clientKeyBundle = this.keyVaultClient.DeleteKeyAsync(vaultAddress, keyName).GetAwaiter().GetResult(); + + return new KeyBundle(clientKeyBundle, this.vaultUriHelper); + } + + public Secret SetSecret(string vaultName, string secretName, SecureString secretValue) + { + if (string.IsNullOrEmpty(vaultName)) + { + throw new ArgumentNullException("vaultName"); + } + if (string.IsNullOrEmpty(secretName)) + { + throw new ArgumentNullException("secretName"); + } + if (secretValue == null) + { + throw new ArgumentNullException("secretValue"); + } + + string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); + + Client.Secret clientSecret = this.keyVaultClient.SetSecretAsync(vaultAddress, secretName, secretValue).GetAwaiter().GetResult(); + + return new Secret(clientSecret, this.vaultUriHelper); + } + + public Secret GetSecret(string vaultName, string secretName, string secretVersion) + { + if (string.IsNullOrEmpty(vaultName)) + { + throw new ArgumentNullException("vaultName"); + } + if (string.IsNullOrEmpty(secretName)) + { + throw new ArgumentNullException("secretName"); + } + + string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); + + var secretIdentifier = new Client.SecretIdentifier(vaultAddress, secretName, secretVersion); + Client.Secret clientSecret = this.keyVaultClient.GetSecretAsync(secretIdentifier.Identifier).GetAwaiter().GetResult(); + + return new Secret(clientSecret, this.vaultUriHelper); + } + + public IEnumerable GetSecrets(string vaultName) + { + if (string.IsNullOrEmpty(vaultName)) + { + throw new ArgumentNullException("vaultName"); + } + + string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); + + return (this.keyVaultClient.GetSecretsAsync(vaultAddress).GetAwaiter().GetResult()). + Select((secretItem) => { return new SecretIdentityItem(secretItem, this.vaultUriHelper); }); + } + + public Secret DeleteSecret(string vaultName, string secretName) + { + if (string.IsNullOrEmpty(vaultName)) + { + throw new ArgumentNullException("vaultName"); + } + if (string.IsNullOrEmpty(secretName)) + { + throw new ArgumentNullException("secretName"); + } + + string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); + + Client.Secret clientSecret = this.keyVaultClient.DeleteSecretAsync(vaultAddress, secretName).GetAwaiter().GetResult(); + + return new Secret(clientSecret, this.vaultUriHelper); + } + + public string BackupKey(string vaultName, string keyName, string outputBlobPath) + { + if (string.IsNullOrEmpty(vaultName)) + { + throw new ArgumentNullException("vaultName"); + } + if (string.IsNullOrEmpty(keyName)) + { + throw new ArgumentNullException("keyName"); + } + if (string.IsNullOrEmpty(outputBlobPath)) + { + throw new ArgumentNullException("outputBlobPath"); + } + + string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); + + var backupBlob = this.keyVaultClient.BackupKeyAsync(vaultAddress, keyName).GetAwaiter().GetResult(); + + File.WriteAllBytes(outputBlobPath, backupBlob); + + return outputBlobPath; + } + + public KeyBundle RestoreKey(string vaultName, string inputBlobPath) + { + if (string.IsNullOrEmpty(vaultName)) + { + throw new ArgumentNullException("vaultName"); + } + if (string.IsNullOrEmpty(inputBlobPath)) + { + throw new ArgumentNullException("inputBlobPath"); + } + + var backupBlob = File.ReadAllBytes(inputBlobPath); + + string vaultAddress = this.vaultUriHelper.CreateVaultAddress(vaultName); + + var clientKeyBundle = this.keyVaultClient.RestoreKeyAsync(vaultAddress, backupBlob).GetAwaiter().GetResult(); + + return new KeyBundle(clientKeyBundle, this.vaultUriHelper); + } + + private void SendRequestCallback(string correlationId, HttpRequestMessage request) + { + if (CloudContext.Configuration.Tracing.IsEnabled) + { + Tracing.SendRequest(correlationId, request); + } + } + + private void ReceiveResponseCallback(string correlationId, HttpResponseMessage response) + { + if (CloudContext.Configuration.Tracing.IsEnabled) + { + Tracing.ReceiveResponse(correlationId, response); + } + } + + private VaultUriHelper vaultUriHelper; + private Client.KeyVaultClient keyVaultClient; + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyVaultExceptionHandler.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyVaultExceptionHandler.cs new file mode 100644 index 000000000000..ecfa8db30bb4 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/KeyVaultExceptionHandler.cs @@ -0,0 +1,46 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Management.Automation; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + internal static class KeyVaultExceptionHandler + { + /// + /// TODO: refine exception + /// + /// exception to be processed + /// + public static ErrorRecord RetrieveExceptionDetails(Exception exception) + { + if (exception == null) + { + throw new ArgumentNullException("exception"); + } + ErrorRecord errorRecord = null; + + Exception innerException = exception.InnerException; + while (innerException != null) + { + exception = innerException; + innerException = innerException.InnerException; + } + + errorRecord = new ErrorRecord(exception, string.Empty, ErrorCategory.NotSpecified, null); + return errorRecord; + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/ObjectIdentifier.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/ObjectIdentifier.cs new file mode 100644 index 000000000000..fb61325b985b --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/ObjectIdentifier.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 System; +using Client = Microsoft.Azure.Commands.KeyVault.Client; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + public class ObjectIdentifier + { + internal void SetObjectIdentifier(VaultUriHelper vaultUriHelper, Client.ObjectIdentifier identifier) + { + if (vaultUriHelper == null) + { + throw new ArgumentNullException("vaultUriHelper"); + } + + VaultName = vaultUriHelper.GetVaultName(identifier.Identifier); + Name = identifier.Name; + Version = identifier.Version; + } + + public string VaultName { get; set; } + + public string Name { get; set; } + + public string Version { get; set; } + + public string Id { get; set; } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/PfxWebKeyConverter.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/PfxWebKeyConverter.cs new file mode 100644 index 000000000000..81f91a5f4b1e --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/PfxWebKeyConverter.cs @@ -0,0 +1,90 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Security; +using System.IO; +using System.Security.Cryptography; +using System.Security.Cryptography.X509Certificates; +using Microsoft.Azure.Commands.KeyVault.Properties; +using Microsoft.Azure.Commands.KeyVault.WebKey; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + internal class PfxWebKeyConverter : IWebKeyConverter + { + public PfxWebKeyConverter(IWebKeyConverter next = null) + { + this.next = next; + } + + public JsonWebKey ConvertKeyFromFile(FileInfo fileInfo, SecureString password) + { + if (CanProcess(fileInfo, password)) + { + return Convert(fileInfo.FullName, password); + } + else if (next != null) + { + return next.ConvertKeyFromFile(fileInfo, password); + } + else + { + throw new ArgumentException(string.Format(Resources.UnsupportedFileFormat, fileInfo.Name)); + } + } + + private bool CanProcess(FileInfo fileInfo, SecureString password) + { + if (fileInfo == null || + string.IsNullOrEmpty(fileInfo.Extension)) + { + return false; + } + + return PfxFileExtension.Equals(fileInfo.Extension, StringComparison.OrdinalIgnoreCase); + } + + private JsonWebKey Convert(string pfxFileName, SecureString pfxPassword) + { + X509Certificate2 certificate; + + if (pfxPassword != null) + { + certificate = new X509Certificate2(pfxFileName, pfxPassword, X509KeyStorageFlags.Exportable); + } + else + { + certificate = new X509Certificate2(pfxFileName); + } + + if (!certificate.HasPrivateKey) + { + throw new ArgumentException(string.Format(Resources.InvalidKeyBlob, "pfx")); + } + + var key = certificate.PrivateKey as RSA; + + if (key == null) + { + throw new ArgumentException(string.Format(Resources.InvalidKeyBlob, "pfx")); + } + + return new JsonWebKey(key, true); + } + + private IWebKeyConverter next; + private const string PfxFileExtension = ".pfx"; + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/Secret.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/Secret.cs new file mode 100644 index 000000000000..615a53ceb387 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/Secret.cs @@ -0,0 +1,54 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Security; +using Microsoft.Azure.Commands.KeyVault.Client; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + public class Secret : ObjectIdentifier + { + public Secret() + { } + + /// + /// Internal constructor used by KeyVaultDataServiceClient + /// + /// secret returned from service + /// helper class + internal Secret(Client.Secret clientSecret, VaultUriHelper vaultUriHelper) + { + if (clientSecret == null) + { + throw new ArgumentNullException("clientSecret"); + } + + SetObjectIdentifier(vaultUriHelper, new Client.SecretIdentifier(clientSecret.Id)); + SecretValue = clientSecret.SecureValue; + + Id = clientSecret.Id; + } + + public SecureString SecretValue { get; set; } + + public string SecretValueText + { + get + { + return SecretValue.ConvertToString(); + } + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/SecretIdentityItem.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/SecretIdentityItem.cs new file mode 100644 index 000000000000..2dafb603f40f --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/SecretIdentityItem.cs @@ -0,0 +1,40 @@ +// ---------------------------------------------------------------------------------- +// +// 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.KeyVault.Properties; +using System; +using System.Security; +using Client = Microsoft.Azure.Commands.KeyVault.Client; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + public class SecretIdentityItem : ObjectIdentifier + { + internal SecretIdentityItem(Client.SecretItem clientSecretItem, VaultUriHelper vaultUriHelper) + { + if (clientSecretItem == null) + { + throw new ArgumentNullException("clientSecretItem"); + } + + if (String.IsNullOrEmpty(clientSecretItem.Id)) + { + throw new ArgumentException(Resources.InvalidSecretUri); + } + + SetObjectIdentifier(vaultUriHelper, new Client.SecretIdentifier(clientSecretItem.Id)); + Id = clientSecretItem.Id; + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/VaultUriHelper.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/VaultUriHelper.cs new file mode 100644 index 000000000000..d61c72797939 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/VaultUriHelper.cs @@ -0,0 +1,79 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Linq; +using Microsoft.Azure.Commands.KeyVault.Properties; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + internal class VaultUriHelper + { + public VaultUriHelper(string keyVaultDnsSuffix) + { + if (string.IsNullOrEmpty(keyVaultDnsSuffix)) + { + throw new ArgumentNullException("keyVaultDnsSuffix"); + } + this.KeyVaultDnsSuffix = keyVaultDnsSuffix; + } + + public string GetVaultName(string vaultAddress) + { + Uri vaultUri = CreateAndValidateVaultUri(vaultAddress); + return vaultUri.Host.Split('.').First(); + } + + public String CreateVaultAddress(string vaultName) + { + return CreateVaultUri(vaultName).ToString(); + } + + public string KeyVaultDnsSuffix { get; private set; } + + private Uri CreateAndValidateVaultUri(string vaultAddress) + { + if (string.IsNullOrEmpty(vaultAddress)) + { + throw new ArgumentNullException("vaultAddress"); + } + + Uri vaultUri; + if (!Uri.TryCreate(vaultAddress, UriKind.Absolute, out vaultUri)) + { + throw new ArgumentException(string.Format(Resources.InvalidVaultUri, vaultAddress, this.KeyVaultDnsSuffix)); + } + + if (vaultUri.HostNameType != UriHostNameType.Dns || + !vaultUri.Host.EndsWith(this.KeyVaultDnsSuffix)) + { + throw new ArgumentException(string.Format(Resources.InvalidVaultUri, vaultAddress, this.KeyVaultDnsSuffix)); + } + + return vaultUri; + } + + private Uri CreateVaultUri(string vaultName) + { + if (string.IsNullOrEmpty(vaultName)) + { + throw new ArgumentNullException("vaultName"); + } + + UriBuilder builder = new UriBuilder("https", vaultName + "." + this.KeyVaultDnsSuffix); + + return builder.Uri; + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Models/WebKeyConverterFactory.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/WebKeyConverterFactory.cs new file mode 100644 index 000000000000..665cb4ce4f5e --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Models/WebKeyConverterFactory.cs @@ -0,0 +1,26 @@ +// ---------------------------------------------------------------------------------- +// +// 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; + +namespace Microsoft.Azure.Commands.KeyVault.Models +{ + internal static class WebKeyConverterFactory + { + public static IWebKeyConverter CreateConverterChain() + { + return new PfxWebKeyConverter(new ByokWebKeyConverter()); + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Properties/AssemblyInfo.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Properties/AssemblyInfo.cs new file mode 100644 index 000000000000..81babef19f02 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Properties/AssemblyInfo.cs @@ -0,0 +1,38 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Reflection; +using System.Runtime.CompilerServices; +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("Microsoft Azure Powershell - Key Vault")] +[assembly: AssemblyCompany(Microsoft.WindowsAzure.Commands.Common.AzurePowerShell.AssemblyCompany)] +[assembly: AssemblyProduct(Microsoft.WindowsAzure.Commands.Common.AzurePowerShell.AssemblyProduct)] +[assembly: AssemblyCopyright(Microsoft.WindowsAzure.Commands.Common.AzurePowerShell.AssemblyCopyright)] + +[assembly: ComVisible(false)] +[assembly: CLSCompliant(false)] + +[assembly: Guid("2994548F-69B9-4DC2-8D19-52CC0C0C85BC")] +[assembly: AssemblyVersion(Microsoft.WindowsAzure.Commands.Common.AzurePowerShell.AssemblyVersion)] +[assembly: AssemblyFileVersion(Microsoft.WindowsAzure.Commands.Common.AzurePowerShell.AssemblyFileVersion)] +#if SIGN +[assembly: InternalsVisibleTo("Microsoft.Azure.Commands.KeyVault.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")] +#else +[assembly: InternalsVisibleTo("Microsoft.Azure.Commands.KeyVault.Test")] +#endif diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Properties/Resources.Designer.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/Properties/Resources.Designer.cs new file mode 100644 index 000000000000..680d1e79ee7f --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Properties/Resources.Designer.cs @@ -0,0 +1,252 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18449 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Microsoft.Azure.Commands.KeyVault.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.Azure.Commands.KeyVault.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Cannot find backup key file '{0}'. + /// + internal static string BackupKeyFileNotFound { + get { + return ResourceManager.GetString("BackupKeyFileNotFound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bad Parameter Set Name. + /// + internal static string BadParameterSetName { + get { + return ResourceManager.GetString("BadParameterSetName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid AzureEnvironment.. + /// + internal static string InvalidAzureEnvironment { + get { + return ResourceManager.GetString("InvalidAzureEnvironment", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No current subscription has been designated. Use Select-AzureSubscription -Current <subscriptionName> to set the current subscription.. + /// + internal static string InvalidCurrentSubscription { + get { + return ResourceManager.GetString("InvalidCurrentSubscription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid '{0}' key blob.. + /// + internal static string InvalidKeyBlob { + get { + return ResourceManager.GetString("InvalidKeyBlob", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid KeyBundle.. + /// + internal static string InvalidKeyBundle { + get { + return ResourceManager.GetString("InvalidKeyBundle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Can not create given key material in specified destination.. + /// + internal static string InvalidKeyDestination { + get { + return ResourceManager.GetString("InvalidKeyDestination", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid key name.. + /// + internal static string InvalidKeyName { + get { + return ResourceManager.GetString("InvalidKeyName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid key uri '{0}'.. + /// + internal static string InvalidKeyUri { + get { + return ResourceManager.GetString("InvalidKeyUri", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid secret name.. + /// + internal static string InvalidSecretName { + get { + return ResourceManager.GetString("InvalidSecretName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid secret uri '{0}'.. + /// + internal static string InvalidSecretUri { + get { + return ResourceManager.GetString("InvalidSecretUri", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Your Azure credentials have not been set up or have expired, please run Add-AzureAccount to set up your Azure credentials.. + /// + internal static string InvalidSubscriptionState { + get { + return ResourceManager.GetString("InvalidSubscriptionState", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid vault name.. + /// + internal static string InvalidVaultName { + get { + return ResourceManager.GetString("InvalidVaultName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid vault uri '{0}'. Vault uri must contain valid dns host name with domain suffix '{1}'.. + /// + internal static string InvalidVaultUri { + get { + return ResourceManager.GetString("InvalidVaultUri", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Can not find key file '{0}'.. + /// + internal static string KeyFileNotFound { + get { + return ResourceManager.GetString("KeyFileNotFound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Are you sure you want to remove key '{0}'.. + /// + internal static string RemoveKeyWarning { + get { + return ResourceManager.GetString("RemoveKeyWarning", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Remove key. + /// + internal static string RemoveKeyWhatIfMessage { + get { + return ResourceManager.GetString("RemoveKeyWhatIfMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Are you sure you want to remove secret '{0}'. + /// + internal static string RemoveSecretWarning { + get { + return ResourceManager.GetString("RemoveSecretWarning", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Remove secret. + /// + internal static string RemoveSecretWhatIfMessage { + get { + return ResourceManager.GetString("RemoveSecretWhatIfMessage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Key vault cmdlet does not support account type '{0}'.. + /// + internal static string UnsupportedAccountType { + get { + return ResourceManager.GetString("UnsupportedAccountType", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The file format of '{0}' is not supported.. + /// + internal static string UnsupportedFileFormat { + get { + return ResourceManager.GetString("UnsupportedFileFormat", resourceCulture); + } + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/Properties/Resources.resx b/src/ResourceManager/KeyVault/Commands.KeyVault/Properties/Resources.resx new file mode 100644 index 000000000000..0d7055afff2c --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/Properties/Resources.resx @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cannot find backup key file '{0}' + + + Bad Parameter Set Name + + + Invalid AzureEnvironment. + + + No current subscription has been designated. Use Select-AzureSubscription -Current <subscriptionName> to set the current subscription. + + + Invalid '{0}' key blob. + + + Invalid KeyBundle. + + + Can not create given key material in specified destination. + + + Invalid key name. + + + Invalid key uri '{0}'. + + + Invalid secret name. + + + Invalid secret uri '{0}'. + + + Your Azure credentials have not been set up or have expired, please run Add-AzureAccount to set up your Azure credentials. + + + Invalid vault name. + + + Invalid vault uri '{0}'. Vault uri must contain valid dns host name with domain suffix '{1}'. + + + Can not find key file '{0}'. + + + Are you sure you want to remove key '{0}'. + + + Remove key + + + Are you sure you want to remove secret '{0}' + + + Remove secret + + + Key vault cmdlet does not support account type '{0}'. + + + The file format of '{0}' is not supported. + + \ No newline at end of file diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/WebKey/Base64UrlConverter.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/WebKey/Base64UrlConverter.cs new file mode 100644 index 000000000000..f99d866f17f7 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/WebKey/Base64UrlConverter.cs @@ -0,0 +1,106 @@ +// ---------------------------------------------------------------------------------- +// +// 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 Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Azure.Commands.KeyVault.WebKey.Json +{ + public class Base64UrlConverter : JsonConverter + { + + /// + /// Converts a byte array to a Base64Url encoded string + /// + /// The byte array to convert + /// The Base64Url encoded form of the input + private static string ToBase64UrlString( byte[] input ) + { + if ( input == null ) + throw new ArgumentNullException( "input" ); + + return Convert.ToBase64String( input ).TrimEnd( '=' ).Replace( '+', '-' ).Replace( '/', '_' ); + } + + /// + /// Converts a Base64Url encoded string to a byte array + /// + /// The Base64Url encoded string + /// The byte array represented by the enconded string + private static byte[] FromBase64UrlString( string input ) + { + if ( string.IsNullOrEmpty( input ) ) + throw new ArgumentNullException( "input" ); + + return Convert.FromBase64String( Pad( input.Replace( '-', '+' ).Replace( '_', '/' ) ) ); + } + + /// + /// Adds padding to the input + /// + /// the input string + /// the padded string + private static string Pad( string input ) + { + var count = 3 - ( ( input.Length + 3 ) % 4 ); + + if ( count == 0 ) + { + return input; + } + + return input + new string( '=', count ); + } + + public override bool CanConvert( Type objectType ) + { + if ( objectType == typeof( byte[] ) ) + return true; + + return false; + } + + public override object ReadJson( JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer ) + { + if ( objectType != typeof( byte[] ) ) + { + return serializer.Deserialize( reader, objectType ); + } + else + { + var value = serializer.Deserialize( reader ); + + if ( !string.IsNullOrEmpty( value ) ) + { + return FromBase64UrlString( value ); + } + } + + return null; + } + + public override void WriteJson( JsonWriter writer, object value, JsonSerializer serializer ) + { + if ( value.GetType() != typeof( byte[] ) ) + { + JToken.FromObject( value ).WriteTo( writer ); + } + else + { + JToken.FromObject( ToBase64UrlString( ( byte[] )value ) ).WriteTo( writer ); + } + } + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/WebKey/JsonWebKey.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/WebKey/JsonWebKey.cs new file mode 100644 index 000000000000..9c9cead79d0c --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/WebKey/JsonWebKey.cs @@ -0,0 +1,490 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Linq; +using System.Runtime.Serialization; +using System.Security.Cryptography; +using Microsoft.Azure.Commands.KeyVault.WebKey.Json; +using Newtonsoft.Json; + +namespace Microsoft.Azure.Commands.KeyVault.WebKey +{ + // As of http://tools.ietf.org/html/draft-ietf-jose-json-web-key-18 + [JsonObject] + public class JsonWebKey + { + // DataContract property names + internal const string Property_Kid = "kid"; + internal const string Property_Kty = "kty"; + internal const string Property_KeyOps = "key_ops"; + + // RSA Key Property Names + internal const string Property_D = "d"; + internal const string Property_DP = "dp"; + internal const string Property_DQ = "dq"; + internal const string Property_E = "e"; + internal const string Property_IQ = "iq"; + internal const string Property_N = "n"; + internal const string Property_P = "p"; + internal const string Property_Q = "q"; + + // Symmetric Key Property Names + internal const string Property_K = "k"; + + // HSM Token Property Names + internal const string Property_T = "key_hsm"; + + /// + /// Key Identifier + /// + [JsonProperty( DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = Property_Kid, Required = Required.Default )] + public string Kid { get; set; } + + /// + /// Key type, usually RSA + /// + [JsonProperty( DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = Property_Kty, Required = Required.Always )] + public string Kty { get; set; } + + /// + /// Supported Key Operations + /// + [JsonProperty( DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = Property_KeyOps, Required = Required.Default )] + public string[] KeyOps { get; set; } + + #region RSA Public Key Parameters + + // RSA modulus, in Base64. + [JsonProperty( DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = Property_N, Required = Required.Default )] + [JsonConverter( typeof( Base64UrlConverter ) )] + public byte[] N { get; set; } + + // RSA public exponent, in Base64. + [JsonProperty( DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = Property_E, Required = Required.Default )] + [JsonConverter( typeof( Base64UrlConverter ) )] + public byte[] E { get; set; } + + #endregion + + #region RSA Private Key Parameters + + [JsonProperty( DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = Property_D, Required = Required.Default )] + [JsonConverter( typeof( Base64UrlConverter ) )] + public byte[] D { get; set; } + + [JsonProperty( DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = Property_DP, Required = Required.Default )] + [JsonConverter( typeof( Base64UrlConverter ) )] + public byte[] DP { get; set; } + + [JsonProperty( DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = Property_DQ, Required = Required.Default )] + [JsonConverter( typeof( Base64UrlConverter ) )] + public byte[] DQ { get; set; } + + [JsonProperty( DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = Property_IQ, Required = Required.Default )] + [JsonConverter( typeof( Base64UrlConverter ) )] + public byte[] IQ { get; set; } + + [JsonProperty( DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = Property_P, Required = Required.Default )] + [JsonConverter( typeof( Base64UrlConverter ) )] + public byte[] P { get; set; } + + [JsonProperty( DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = Property_Q, Required = Required.Default )] + [JsonConverter( typeof( Base64UrlConverter ) )] + public byte[] Q { get; set; } + + #endregion + + #region Symmetric Key Parameters + + // Symmetric key + [JsonProperty( DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = Property_K, Required = Required.Default )] + [JsonConverter( typeof( Base64UrlConverter ) )] + public byte[] K { get; set; } + + #endregion + + // HSM Token, used with "Bring Your Own Key" + [JsonProperty( DefaultValueHandling = DefaultValueHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, PropertyName = Property_T, Required = Required.Default )] + [JsonConverter( typeof( Base64UrlConverter ) )] + public byte[] T { get; set; } + + [JsonConstructor] + public JsonWebKey() + { + // Intentionally empty + } + + /// + /// Converts an AES object to a WebKey of type Octet + /// + /// + /// + public JsonWebKey( Aes aesProvider ) + { + if ( aesProvider == null ) + throw new ArgumentNullException( "aesProvider" ); + + Kty = JsonWebKeyType.Octet; + K = aesProvider.Key; + } + + /// + /// Converts a RSA object to a WebKey of type RSA. + /// + /// The RSA object to convert + /// True to include the RSA private key parameters + /// A WebKey representing the RSA object + public JsonWebKey( RSA rsaProvider, bool includePrivateParameters = false ) + : this( rsaProvider.ExportParameters( includePrivateParameters ) ) + { + } + + /// + /// Converts a RSAParameters object to a WebKey of type RSA. + /// + /// The RSA object to convert + /// A WebKey representing the RSA object + public JsonWebKey( RSAParameters rsaParameters ) + { + Kty = JsonWebKeyType.Rsa; + + E = rsaParameters.Exponent; + N = rsaParameters.Modulus; + + D = rsaParameters.D; + DP = rsaParameters.DP; + DQ = rsaParameters.DQ; + IQ = rsaParameters.InverseQ; + P = rsaParameters.P; + Q = rsaParameters.Q; + } + + public override bool Equals( object obj ) + { + if ( obj == null ) + return false; + + JsonWebKey other = obj as JsonWebKey; + + if ( other == null ) + return false; + + return this.Equals( other ); + } + + public bool Equals( JsonWebKey other ) + { + if ( other == null ) + return false; + + if ( string.Equals( Kty, other.Kty ) ) + { + switch ( Kty ) + { + case JsonWebKeyType.EllipticCurve: + break; + + case JsonWebKeyType.Octet: + return IsEqualOctet( other ); + + case JsonWebKeyType.Rsa: + return IsEqualRsa( other ); + + case JsonWebKeyType.RsaHsm: + return IsEqualRsaHsm( other ); + } + } + + return false; + } + + public override int GetHashCode() + { + switch ( Kty ) + { + case JsonWebKeyType.EllipticCurve: + return base.GetHashCode(); + + case JsonWebKeyType.Octet: + return GetHashCode( K ); + + case JsonWebKeyType.Rsa: + return GetHashCode( N ); + + case JsonWebKeyType.RsaHsm: + return GetHashCode( T ); + + default: + return base.GetHashCode(); + } + } + + + private int GetHashCode( byte[] obj ) + { + if ( obj == null || obj.Length == 0 ) + return 0; + + var hashCode = 0; + + // Rotate by 3 bits and XOR the new value. + for ( var i = 0; i < obj.Length; i++ ) + hashCode = ( hashCode << 3 ) | ( hashCode >> ( 29 ) ) ^ obj[i]; + + return hashCode; + } + + public virtual bool HasPrivateKey() + { + switch ( Kty ) + { + case JsonWebKeyType.EllipticCurve: + return false; + + case JsonWebKeyType.Octet: + return K != null; + + case JsonWebKeyType.Rsa: + case JsonWebKeyType.RsaHsm: + // MAY have private key parameters, but only ALL or NONE + var privateParameters = new bool[] { D != null, DP != null, DQ != null, IQ != null, P != null, Q != null }; + + return privateParameters.All( ( value ) => value ); + + default: + return false; + } + } + + private bool IsEqualOctet( JsonWebKey other ) + { + return K.SequenceEqual( other.K ); + } + + private bool IsEqualRsa( JsonWebKey other ) + { + // Public parameters + if ( !N.SequenceEqual( other.N ) ) + return false; + + if ( !E.SequenceEqual( other.E ) ) + return false; + + // Private parameters + var privateKey = HasPrivateKey(); + + if ( privateKey && privateKey == other.HasPrivateKey() ) + { + if ( !D.SequenceEqual( other.D ) ) + return false; + + if ( !DP.SequenceEqual( other.DP ) ) + return false; + + if ( !DQ.SequenceEqual( other.DQ ) ) + return false; + + if ( !IQ.SequenceEqual( other.IQ ) ) + return false; + + if ( !P.SequenceEqual( other.P ) ) + return false; + + if ( !Q.SequenceEqual( other.Q ) ) + return false; + } + + return true; + } + + private bool IsEqualRsaHsm( JsonWebKey other ) + { + if ( ( T != null && other.T == null ) || ( T == null && other.T != null ) ) + return false; + + if ( T != null && !T.SequenceEqual( other.T ) ) + return false; + + return IsEqualRsa( other ); + } + + /// + /// Determines if the WebKey object is valid according to the rules for + /// each of the possible WebKeyTypes + /// + /// true if the WebKey is valid + public virtual bool IsValid() + { + // MUST have kty + if ( string.IsNullOrEmpty( Kty ) ) + return false; + + // Validate Key Operations + if ( KeyOps != null && KeyOps.Length != 0 ) + { + if ( !KeyOps.All( ( op ) => { return JsonWebKeyOperation.AllOperations.Contains( op ); } ) ) + return false; + } + + // Per-kty validation + switch ( Kty ) + { + case JsonWebKeyType.EllipticCurve: + break; + + case JsonWebKeyType.Octet: + return IsValidOctet(); + + case JsonWebKeyType.Rsa: + return IsValidRsa(); + + case JsonWebKeyType.RsaHsm: + return IsValidRsaHsm(); + } + + return false; + } + + private bool IsValidOctet() + { + if ( K != null ) + return true; + + return false; + } + + private bool IsValidRsa() + { + // MUST have public key parameters + if ( N == null || E == null ) + return false; + + // MAY have private key parameters, but only ALL or NONE + var privateParameters = new bool[] { D != null, DP != null, DQ != null, IQ != null, P != null, Q != null }; + + if ( privateParameters.All( ( value ) => value ) || privateParameters.All( ( value ) => !value ) ) + return true; + + return false; + } + + private bool IsValidRsaHsm() + { + // MAY have public key parameters + if ( ( N == null && E != null ) || ( N != null && E == null ) ) + return false; + + // MUST NOT have private key parameters, but only ALL or NONE + var privateParameters = new bool[] { D != null, DP != null, DQ != null, IQ != null, P != null, Q != null }; + + if ( privateParameters.Any( ( value ) => value ) ) + return false; + + // MUST have ( T || ( N && E ) ) + var tokenParameters = T != null; + var publicParameters = ( N != null && E != null ); + + if ( tokenParameters && publicParameters ) + return false; + + return ( tokenParameters || publicParameters ); + } + + [OnDeserialized] + internal void OnDeserialized( StreamingContext context ) + { + if ( !IsValid() ) + throw new JsonSerializationException( "JsonWebKey is not valid" ); + } + + /// + /// Converts a WebKey of type Octet to an AES object. + /// + /// The WebKey to convert + /// An AES object + public Aes ToAes() + { + if ( !Kty.Equals( JsonWebKeyType.Octet ) ) + throw new InvalidOperationException( "key is not an octet key" ); + + if ( K == null ) + throw new InvalidOperationException( "key does not contain a value" ); + + Aes aesProvider = Aes.Create(); + + if ( aesProvider != null ) + aesProvider.Key = K; + + return aesProvider; + } + + /// + /// Converts a WebKey of type RSA or RSAHSM to a RSA object + /// + /// Determines whether private key material, if available, is included + /// An initialized RSACryptoServiceProvider instance + public RSACryptoServiceProvider ToRSA( bool includePrivateParameters = false ) + { + var rsaParameters = ToRSAParameters( includePrivateParameters ); + var rsaProvider = new RSACryptoServiceProvider(); + + rsaProvider.ImportParameters( rsaParameters ); + + return rsaProvider; + } + + public RSAParameters ToRSAParameters( bool includePrivateParameters = false ) + { + if ( !string.Equals( JsonWebKeyType.Rsa, Kty ) && !string.Equals( JsonWebKeyType.RsaHsm, Kty ) ) + throw new ArgumentException( "webKey is not a RSA key" ); + + var result = new RSAParameters() + { + Modulus = N, + Exponent = E, + }; + + if ( includePrivateParameters ) + { + result.D = D; + result.DP = DP; + result.DQ = DQ; + result.InverseQ = IQ; + result.P = P; + result.Q = Q; + }; + + return result; + } + + public override string ToString() + { + return JsonConvert.SerializeObject( this ); + } + } + } diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/WebKey/JsonWebKeyOperations.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/WebKey/JsonWebKeyOperations.cs new file mode 100644 index 000000000000..ca8dc05f84a8 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/WebKey/JsonWebKeyOperations.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. +// ---------------------------------------------------------------------------------- + + +namespace Microsoft.Azure.Commands.KeyVault.WebKey +{ + + /// + /// Supported JsonWebKey operations + /// + public static class JsonWebKeyOperation + { + public const string Encrypt = "encrypt"; + public const string Decrypt = "decrypt"; + public const string Sign = "sign"; + public const string Verify = "verify"; + public const string Wrap = "wrapKey"; + public const string Unwrap = "unwrapKey"; + + /// + /// All operations names. Use clone to avoid FxCop violation + /// + public static string[] AllOperations + { + get { return (string[])_allOperations.Clone(); } + } + + private static readonly string[] _allOperations = + new string[] { Encrypt, Decrypt, Sign, Verify, Wrap, Unwrap }; + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/WebKey/JsonWebKeyTypes.cs b/src/ResourceManager/KeyVault/Commands.KeyVault/WebKey/JsonWebKeyTypes.cs new file mode 100644 index 000000000000..508af43765c7 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/WebKey/JsonWebKeyTypes.cs @@ -0,0 +1,37 @@ +// ---------------------------------------------------------------------------------- +// +// 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.KeyVault.WebKey +{ + /// + /// Supported JsonWebKey key types (kty) + /// + public static class JsonWebKeyType + { + public const string EllipticCurve = "EC"; + public const string Rsa = "RSA"; + public const string RsaHsm = "RSA-HSM"; + public const string Octet = "oct"; + + /// + /// All types names. Use clone to avoid FxCop violation + /// + public static string[] AllTypes + { + get { return (string[])_allTypes.Clone(); } + } + + private static readonly string[] _allTypes = { EllipticCurve, Rsa, RsaHsm, Octet }; + } +} diff --git a/src/ResourceManager/KeyVault/Commands.KeyVault/packages.config b/src/ResourceManager/KeyVault/Commands.KeyVault/packages.config new file mode 100644 index 000000000000..219ecbb28323 --- /dev/null +++ b/src/ResourceManager/KeyVault/Commands.KeyVault/packages.config @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ResourceGroupTests/TestAzureTagsEndToEnd.json b/src/ResourceManager/Resources/Commands.Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ResourceGroupTests/TestAzureTagsEndToEnd.json index 16683de50e6b..77ea97136271 100644 --- a/src/ResourceManager/Resources/Commands.Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ResourceGroupTests/TestAzureTagsEndToEnd.json +++ b/src/ResourceManager/Resources/Commands.Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ResourceGroupTests/TestAzureTagsEndToEnd.json @@ -7,7 +7,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/ogail/\",\r\n \"tagName\": \"ogail\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": []\r\n }\r\n ]\r\n}", @@ -43,7 +43,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/ogail/\",\r\n \"tagName\": \"ogail\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": []\r\n }\r\n ]\r\n}", @@ -79,7 +79,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/\",\r\n \"tagName\": \"onesdk5995\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": []\r\n }\r\n ]\r\n}", @@ -115,7 +115,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/\",\r\n \"tagName\": \"onesdk5995\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": []\r\n }\r\n ]\r\n}", @@ -151,7 +151,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/\",\r\n \"tagName\": \"onesdk5995\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n}", @@ -187,7 +187,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/\",\r\n \"tagName\": \"onesdk5995\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n}", @@ -223,7 +223,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/\",\r\n \"tagName\": \"onesdk5995\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n}", @@ -259,7 +259,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/\",\r\n \"tagName\": \"onesdk5995\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n}", @@ -295,7 +295,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/\",\r\n \"tagName\": \"onesdk4847\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/\",\r\n \"tagName\": \"onesdk5995\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n}", @@ -331,7 +331,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/\",\r\n \"tagName\": \"onesdk4847\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/\",\r\n \"tagName\": \"onesdk5995\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n}", @@ -367,7 +367,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/\",\r\n \"tagName\": \"onesdk4847\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value3\",\r\n \"tagValue\": \"value3\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/\",\r\n \"tagName\": \"onesdk5995\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n}", @@ -403,7 +403,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/\",\r\n \"tagName\": \"onesdk4847\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value3\",\r\n \"tagValue\": \"value3\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/\",\r\n \"tagName\": \"onesdk5995\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n}", @@ -439,7 +439,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/\",\r\n \"tagName\": \"onesdk4847\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value3\",\r\n \"tagValue\": \"value3\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/\",\r\n \"tagName\": \"onesdk5995\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n}", @@ -475,7 +475,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/\",\r\n \"tagName\": \"onesdk4847\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value3\",\r\n \"tagValue\": \"value3\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n}", @@ -511,7 +511,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/\",\r\n \"tagName\": \"onesdk4847\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value3\",\r\n \"tagValue\": \"value3\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n}", @@ -547,7 +547,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/\",\r\n \"tagName\": \"onesdk4847\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value3\",\r\n \"tagValue\": \"value3\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n}", @@ -583,7 +583,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/\",\r\n \"tagName\": \"onesdk4847\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value3\",\r\n \"tagValue\": \"value3\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n}", @@ -619,7 +619,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/\",\r\n \"tagName\": \"onesdk4847\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value3\",\r\n \"tagValue\": \"value3\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n}", @@ -655,7 +655,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/\",\r\n \"tagName\": \"hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/hidden-related:/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/resourcegroups/xDeploymentTestGroup6557/providers/Microsoft.Web/serverfarms/xDeploymentTestHost1/tagValues/Resource\",\r\n \"tagValue\": \"Resource\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 1\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/\",\r\n \"tagName\": \"onesdk4847\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": [\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n },\r\n {\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value3\",\r\n \"tagValue\": \"value3\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n}", @@ -691,7 +691,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "", @@ -727,7 +727,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/\",\r\n \"tagName\": \"onesdk5995\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": []\r\n}", @@ -763,7 +763,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/\",\r\n \"tagName\": \"onesdk5995\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": []\r\n}", @@ -799,7 +799,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/\",\r\n \"tagName\": \"onesdk5995\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": []\r\n}", @@ -835,7 +835,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/\",\r\n \"tagName\": \"onesdk5995\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": []\r\n}", @@ -871,7 +871,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n}", @@ -907,7 +907,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n}", @@ -943,7 +943,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk5995/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n}", @@ -979,7 +979,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/\",\r\n \"tagName\": \"onesdk4847\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": []\r\n}", @@ -1015,7 +1015,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/\",\r\n \"tagName\": \"onesdk4847\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": []\r\n}", @@ -1051,7 +1051,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/\",\r\n \"tagName\": \"onesdk4847\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n },\r\n \"values\": []\r\n}", @@ -1087,7 +1087,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value1\",\r\n \"tagValue\": \"value1\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n}", @@ -1123,7 +1123,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value2\",\r\n \"tagValue\": \"value2\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n}", @@ -1159,7 +1159,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "{\r\n \"id\": \"/subscriptions/2c224e7e-3ef5-431d-a57b-e71f4662e3a6/tagNames/onesdk4847/tagValues/value3\",\r\n \"tagValue\": \"value3\",\r\n \"count\": {\r\n \"type\": \"Total\",\r\n \"value\": 0\r\n }\r\n}", @@ -1195,7 +1195,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "", @@ -1231,7 +1231,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "", @@ -1267,7 +1267,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "", @@ -1303,7 +1303,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "", @@ -1339,7 +1339,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "", @@ -1375,7 +1375,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "", @@ -1411,7 +1411,7 @@ "RequestHeaders": { "User-Agent": [ "Microsoft.Azure.Management.Resources.ResourceManagementClient/2.0.0.0", - "AzurePowershell/v0.8.12" + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "", diff --git a/src/ResourceManager/Resources/Commands.Resources/AzureResourceManager.psd1 b/src/ResourceManager/Resources/Commands.Resources/AzureResourceManager.psd1 index e91db530e81d..1f4b4a66bb35 100644 --- a/src/ResourceManager/Resources/Commands.Resources/AzureResourceManager.psd1 +++ b/src/ResourceManager/Resources/Commands.Resources/AzureResourceManager.psd1 @@ -9,7 +9,7 @@ @{ # Version number of this module. -ModuleVersion = '0.8.12' +ModuleVersion = '0.8.13' # ID used to uniquely identify this module GUID = '81d522a4-6e5d-4105-8f58-376204c47458' @@ -64,6 +64,7 @@ FormatsToProcess = @( '.\DataFactories\Microsoft.Azure.Commands.DataFactories.format.ps1xml', '.\RedisCache\Microsoft.Azure.Commands.RedisCache.format.ps1xml', '.\Batch\Microsoft.Azure.Commands.Batch.format.ps1xml', + '.\KeyVault\Microsoft.Azure.Commands.KeyVault.format.ps1xml' '.\StreamAnalytics\Microsoft.Azure.Commands.StreamAnalytics.format.ps1xml' ) @@ -76,6 +77,7 @@ NestedModules = @( '.\DataFactories\Microsoft.Azure.Commands.DataFactories.dll', '.\RedisCache\Microsoft.Azure.Commands.RedisCache.dll', '.\Batch\Microsoft.Azure.Commands.Batch.dll', + '.\KeyVault\Microsoft.Azure.Commands.KeyVault.dll' '.\StreamAnalytics\Microsoft.Azure.Commands.StreamAnalytics.dll' ) diff --git a/src/ResourceManager/Resources/Commands.Resources/Commands.Resources.csproj b/src/ResourceManager/Resources/Commands.Resources/Commands.Resources.csproj index 74d0be3be1b1..fa7b88269758 100644 --- a/src/ResourceManager/Resources/Commands.Resources/Commands.Resources.csproj +++ b/src/ResourceManager/Resources/Commands.Resources/Commands.Resources.csproj @@ -226,6 +226,10 @@ {d470e50a-9607-48d6-a924-4f9f86502704} Commands.Batch + + {9ffc40cc-a341-4d0c-a25d-dc6b78ef6c94} + Commands.KeyVault + {c972e3ef-4461-4758-ba31-93e0947b1253} Commands.RedisCache diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement.PlatformImageRepository/PIR.psd1 b/src/ServiceManagement/Compute/Commands.ServiceManagement.PlatformImageRepository/PIR.psd1 index 0cc98f0727b4..a4b6a707ca19 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement.PlatformImageRepository/PIR.psd1 +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement.PlatformImageRepository/PIR.psd1 @@ -12,7 +12,7 @@ ModuleToProcess = '.\Microsoft.WindowsAzure.Commands.ServiceManagement.PlatformImageRepository.dll' # Version number of this module. -ModuleVersion = '0.8.12' +ModuleVersion = '0.8.13' # ID used to uniquely identify this module GUID = 'a9343cbd-175c-4f72-90c7-2abe9b300644' diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement.Preview/AzurePreview.psd1 b/src/ServiceManagement/Compute/Commands.ServiceManagement.Preview/AzurePreview.psd1 index 1b74ce905875..6b81499baf35 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement.Preview/AzurePreview.psd1 +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement.Preview/AzurePreview.psd1 @@ -12,7 +12,7 @@ ModuleToProcess = '.\Microsoft.WindowsAzure.Commands.ServiceManagement.Preview.dll' # Version number of this module. -ModuleVersion = '0.8.12' +ModuleVersion = '0.8.13' # ID used to uniquely identify this module GUID = '1C72E555-E83F-45E4-AED2-AF3278828DCD' diff --git a/src/ServiceManagement/ExpressRoute/Commands.ExpressRoute/ExpressRoute.psd1 b/src/ServiceManagement/ExpressRoute/Commands.ExpressRoute/ExpressRoute.psd1 index b32ffa779388..55aa48f7ab23 100644 --- a/src/ServiceManagement/ExpressRoute/Commands.ExpressRoute/ExpressRoute.psd1 +++ b/src/ServiceManagement/ExpressRoute/Commands.ExpressRoute/ExpressRoute.psd1 @@ -12,7 +12,7 @@ ModuleToProcess = '.\Microsoft.WindowsAzure.Commands.ExpressRoute.dll' # Version number of this module. -ModuleVersion = '0.8.12' +ModuleVersion = '0.8.13' # ID used to uniquely identify this module GUID = 'e5b10573-30da-456a-9319-4c0a5f8bed4a' diff --git a/src/ServiceManagement/ManagedCache/Commands.ManagedCache.Test/SessionRecords/Microsoft.Azure.Commands.ManagedCache.Test.ScenarioTests.ManagedCacheTests/ManagedCacheEndToEndTest.json b/src/ServiceManagement/ManagedCache/Commands.ManagedCache.Test/SessionRecords/Microsoft.Azure.Commands.ManagedCache.Test.ScenarioTests.ManagedCacheTests/ManagedCacheEndToEndTest.json index ca77a395ed58..1f958130fa3d 100644 --- a/src/ServiceManagement/ManagedCache/Commands.ManagedCache.Test/SessionRecords/Microsoft.Azure.Commands.ManagedCache.Test.ScenarioTests.ManagedCacheTests/ManagedCacheEndToEndTest.json +++ b/src/ServiceManagement/ManagedCache/Commands.ManagedCache.Test/SessionRecords/Microsoft.Azure.Commands.ManagedCache.Test.ScenarioTests.ManagedCacheTests/ManagedCacheEndToEndTest.json @@ -9,8 +9,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n", @@ -47,8 +47,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n 9b0c4024-716c-42c5-bd03-fa0e56c2eca0\r\n Started\r\n Creating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 5:51:01 PM +00:00\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -85,8 +85,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n 9b0c4024-716c-42c5-bd03-fa0e56c2eca0\r\n Started\r\n Creating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 5:51:01 PM +00:00\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -123,8 +123,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n 9b0c4024-716c-42c5-bd03-fa0e56c2eca0\r\n Started\r\n Creating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 5:51:01 PM +00:00\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -161,8 +161,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n 9b0c4024-716c-42c5-bd03-fa0e56c2eca0\r\n Started\r\n Creating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 5:51:01 PM +00:00\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -199,8 +199,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n 9b0c4024-716c-42c5-bd03-fa0e56c2eca0\r\n Started\r\n Creating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 5:51:01 PM +00:00\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -237,8 +237,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n 9b0c4024-716c-42c5-bd03-fa0e56c2eca0\r\n Started\r\n Creating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 5:51:01 PM +00:00\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -275,8 +275,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n 9b0c4024-716c-42c5-bd03-fa0e56c2eca0\r\n Started\r\n Creating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 5:51:01 PM +00:00\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -313,8 +313,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n 9b0c4024-716c-42c5-bd03-fa0e56c2eca0\r\n Started\r\n Creating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 5:51:01 PM +00:00\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -351,8 +351,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n 9b0c4024-716c-42c5-bd03-fa0e56c2eca0\r\n Started\r\n Creating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 5:51:01 PM +00:00\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -389,8 +389,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n 9b0c4024-716c-42c5-bd03-fa0e56c2eca0\r\n Started\r\n Creating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 5:51:01 PM +00:00\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -427,8 +427,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n 9b0c4024-716c-42c5-bd03-fa0e56c2eca0\r\n Started\r\n Active\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 5:51:01 PM +00:00\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -465,8 +465,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n de579dfd-1347-4f05-9110-cde88b579297\r\n Started\r\n Updating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 6:01:16 PM +00:00\r\n \r\n \r\n \r\n Update\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -503,8 +503,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n de579dfd-1347-4f05-9110-cde88b579297\r\n Started\r\n Updating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 6:01:16 PM +00:00\r\n \r\n \r\n \r\n Update\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -541,8 +541,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n de579dfd-1347-4f05-9110-cde88b579297\r\n Started\r\n Updating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 6:01:16 PM +00:00\r\n \r\n \r\n \r\n Update\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -579,8 +579,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n de579dfd-1347-4f05-9110-cde88b579297\r\n Started\r\n Updating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 6:01:16 PM +00:00\r\n \r\n \r\n \r\n Update\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -617,8 +617,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n de579dfd-1347-4f05-9110-cde88b579297\r\n Started\r\n Updating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 6:01:16 PM +00:00\r\n \r\n \r\n \r\n Update\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -655,8 +655,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n de579dfd-1347-4f05-9110-cde88b579297\r\n Started\r\n Updating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 6:01:16 PM +00:00\r\n \r\n \r\n \r\n Update\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -693,8 +693,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n de579dfd-1347-4f05-9110-cde88b579297\r\n Started\r\n Updating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 6:01:16 PM +00:00\r\n \r\n \r\n \r\n Update\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -731,8 +731,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n de579dfd-1347-4f05-9110-cde88b579297\r\n Started\r\n Updating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 6:01:16 PM +00:00\r\n \r\n \r\n \r\n Update\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -769,8 +769,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n de579dfd-1347-4f05-9110-cde88b579297\r\n Started\r\n Updating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 6:01:16 PM +00:00\r\n \r\n \r\n \r\n Update\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -807,8 +807,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n de579dfd-1347-4f05-9110-cde88b579297\r\n Started\r\n Updating\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 6:01:16 PM +00:00\r\n \r\n \r\n \r\n Update\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -845,8 +845,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n de579dfd-1347-4f05-9110-cde88b579297\r\n Started\r\n Active\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 2\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 6:01:16 PM +00:00\r\n \r\n \r\n \r\n Update\r\n Succeeded\r\n \r\n \r\n \r\n", @@ -883,8 +883,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "true", @@ -918,8 +918,8 @@ "RequestBody": "\r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.0.0\r\n 1024\r\n \r\n \r\n \r\n", "RequestHeaders": { "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ], "x-ms-version": [ "2012-08-01" @@ -965,8 +965,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ], "client-tracking-id": [ "20" @@ -1006,8 +1006,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ], "client-tracking-id": [ "3" @@ -1044,8 +1044,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ], "client-tracking-id": [ "3" @@ -1082,8 +1082,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n \r\n aztstjcjobclsabrzy\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsadcuu\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsanbmb\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsaqjwu\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsaskes\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsatabp\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsavrzs\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbfllr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbgnqk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbrhbj\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbsefr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbvuae\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclscdclk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclscdjdp\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclscrwsz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsczxzk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdblyf\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdezvt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdjfrl\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdtvmd\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsduhom\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclselofj\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclseshfx\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclseuzny\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsexies\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsexnyf\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsfyvee\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsfywzg\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n scheduler\r\n JobCollections\r\n aztstjcjobcllnkvbcv\r\n 1.1\r\n 29d5806a-c1ae-417e-ba20-63953ec823d0\r\n Started\r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n \r\n \r\n \r\n aztstjcjobclsgjxwz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsguzix\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclshgdva\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclshhltr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsidgrg\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsilaic\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsixcht\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjmafh\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjvzbw\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjxxrm\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjyslm\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclskebaj\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclslfwil\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclslhnch\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsltxec\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsluoay\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsmcgiy\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsmpvtc\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsmwyjx\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsndfra\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsnedcm\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsnffyk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsnodpd\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsntawk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsoazst\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsotqhy\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspdklh\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspobdn\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspsziv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspupar\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqasdr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqbsjt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqemag\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqfyva\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqitok\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqlkph\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqpsxk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqtewe\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqvecg\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqwgeh\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqzptb\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrhlub\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrjtnr\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrjxsq\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrredc\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstblsn\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstcbjj\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstfpqz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstglen\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstkacb\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstsrkv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstxeua\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsugcpk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsuwnbq\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsuzvkn\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsvkbrv\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsvorjd\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsvwiiv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclswefsv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclswnewk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclswxpjf\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxgagp\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxhzwt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxoyhe\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxzazs\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxzgco\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsyalqw\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsycujm\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsyibac\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsynyam\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsypule\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsyvkyd\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszbtxw\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszelvz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszfowt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszjkzl\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszmbfw\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszncpv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszoeih\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszqnox\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n 9b0c4024-716c-42c5-bd03-fa0e56c2eca0\r\n Started\r\n Active\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 5:51:01 PM +00:00\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n \r\n \r\n cloudserv\r\n \r\n hi there\r\n West US\r\n \r\n \r\n \r\n CS-NorthCentralUS-scheduler\r\n \r\n CS-NorthCentralUS-scheduler\r\n North Central US\r\n \r\n \r\n \r\n CS-SouthCentralUS-scheduler\r\n \r\n CS-SouthCentralUS-scheduler\r\n South Central US\r\n \r\n \r\n \r\n CS-WebJobs-WestEurope-scheduler\r\n \r\n CS-WebJobs-WestEurope-scheduler\r\n West Europe\r\n \r\n \r\n \r\n CS-WebJobs-WestUS-scheduler\r\n \r\n CS-WebJobs-WestUS-scheduler\r\n West US\r\n \r\n \r\n \r\n devSaopDS-cs1\r\n \r\n devSaopDS-cs1\r\n north europe\r\n \r\n \r\n \r\n name\r\n \r\n couves\r\n West US\r\n \r\n \r\n \r\n RecoveryServices-P2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-east-asia\r\n \r\n 04301767-ecac-4e60-a412-d289bf890e93\r\n east asia\r\n \r\n \r\n WABackup\r\n BackupVault\r\n Test\r\n \r\n 1.1\r\n e25454eb-a351-4199-a6e5-1208207bf9cf\r\n Started\r\n Ok\r\n \r\n \r\n StampId\r\n 64437628-f3e5-4d8a-928b-44b2c9889117\r\n \r\n \r\n ResourceId\r\n 3888925532610829152\r\n \r\n \r\n BackendStampId\r\n 64437628-f3e5-4d8a-928b-44b2c9889117\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n \r\n", @@ -1117,8 +1117,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n \r\n aztstjcjobclsabrzy\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsadcuu\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsanbmb\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsaqjwu\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsaskes\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsatabp\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsavrzs\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbfllr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbgnqk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbrhbj\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbsefr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbvuae\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclscdclk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclscdjdp\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclscrwsz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsczxzk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdblyf\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdezvt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdjfrl\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdtvmd\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsduhom\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclselofj\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclseshfx\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclseuzny\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsexies\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsexnyf\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsfyvee\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsfywzg\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n scheduler\r\n JobCollections\r\n aztstjcjobcllnkvbcv\r\n 1.1\r\n 29d5806a-c1ae-417e-ba20-63953ec823d0\r\n Started\r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n \r\n \r\n \r\n aztstjcjobclsgjxwz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsguzix\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclshgdva\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclshhltr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsidgrg\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsilaic\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsixcht\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjmafh\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjvzbw\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjxxrm\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjyslm\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclskebaj\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclslfwil\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclslhnch\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsltxec\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsluoay\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsmcgiy\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsmpvtc\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsmwyjx\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsndfra\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsnedcm\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsnffyk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsnodpd\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsntawk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsoazst\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsotqhy\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspdklh\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspobdn\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspsziv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspupar\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqasdr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqbsjt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqemag\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqfyva\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqitok\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqlkph\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqpsxk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqtewe\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqvecg\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqwgeh\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqzptb\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrhlub\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrjtnr\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrjxsq\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrredc\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstblsn\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstcbjj\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstfpqz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstglen\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstkacb\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstsrkv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstxeua\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsugcpk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsuwnbq\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsuzvkn\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsvkbrv\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsvorjd\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsvwiiv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclswefsv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclswnewk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclswxpjf\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxgagp\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxhzwt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxoyhe\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxzazs\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxzgco\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsyalqw\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsycujm\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsyibac\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsynyam\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsypule\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsyvkyd\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszbtxw\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszelvz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszfowt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszjkzl\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszmbfw\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszncpv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszoeih\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszqnox\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n 9b0c4024-716c-42c5-bd03-fa0e56c2eca0\r\n Started\r\n Active\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 1\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n 10\r\n Absolute\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 5:51:01 PM +00:00\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n \r\n \r\n cloudserv\r\n \r\n hi there\r\n West US\r\n \r\n \r\n \r\n CS-NorthCentralUS-scheduler\r\n \r\n CS-NorthCentralUS-scheduler\r\n North Central US\r\n \r\n \r\n \r\n CS-SouthCentralUS-scheduler\r\n \r\n CS-SouthCentralUS-scheduler\r\n South Central US\r\n \r\n \r\n \r\n CS-WebJobs-WestEurope-scheduler\r\n \r\n CS-WebJobs-WestEurope-scheduler\r\n West Europe\r\n \r\n \r\n \r\n CS-WebJobs-WestUS-scheduler\r\n \r\n CS-WebJobs-WestUS-scheduler\r\n West US\r\n \r\n \r\n \r\n devSaopDS-cs1\r\n \r\n devSaopDS-cs1\r\n north europe\r\n \r\n \r\n \r\n name\r\n \r\n couves\r\n West US\r\n \r\n \r\n \r\n RecoveryServices-P2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-east-asia\r\n \r\n 04301767-ecac-4e60-a412-d289bf890e93\r\n east asia\r\n \r\n \r\n WABackup\r\n BackupVault\r\n Test\r\n \r\n 1.1\r\n e25454eb-a351-4199-a6e5-1208207bf9cf\r\n Started\r\n Ok\r\n \r\n \r\n StampId\r\n 64437628-f3e5-4d8a-928b-44b2c9889117\r\n \r\n \r\n ResourceId\r\n 3888925532610829152\r\n \r\n \r\n BackendStampId\r\n 64437628-f3e5-4d8a-928b-44b2c9889117\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n \r\n", @@ -1152,8 +1152,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n \r\n aztstjcjobclsabrzy\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsadcuu\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsanbmb\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsaqjwu\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsaskes\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsatabp\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsavrzs\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbfllr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbgnqk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbrhbj\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbsefr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbvuae\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclscdclk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclscdjdp\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclscrwsz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsczxzk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdblyf\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdezvt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdjfrl\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdtvmd\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsduhom\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclselofj\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclseshfx\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclseuzny\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsexies\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsexnyf\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsfyvee\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsfywzg\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n scheduler\r\n JobCollections\r\n aztstjcjobcllnkvbcv\r\n 1.1\r\n 29d5806a-c1ae-417e-ba20-63953ec823d0\r\n Started\r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n \r\n \r\n \r\n aztstjcjobclsgjxwz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsguzix\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclshgdva\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclshhltr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsidgrg\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsilaic\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsixcht\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjmafh\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjvzbw\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjxxrm\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjyslm\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclskebaj\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclslfwil\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclslhnch\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsltxec\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsluoay\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsmcgiy\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsmpvtc\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsmwyjx\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsndfra\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsnedcm\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsnffyk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsnodpd\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsntawk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsoazst\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsotqhy\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspdklh\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspobdn\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspsziv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspupar\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqasdr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqbsjt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqemag\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqfyva\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqitok\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqlkph\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqpsxk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqtewe\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqvecg\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqwgeh\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqzptb\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrhlub\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrjtnr\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrjxsq\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrredc\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstblsn\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstcbjj\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstfpqz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstglen\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstkacb\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstsrkv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstxeua\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsugcpk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsuwnbq\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsuzvkn\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsvkbrv\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsvorjd\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsvwiiv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclswefsv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclswnewk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclswxpjf\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxgagp\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxhzwt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxoyhe\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxzazs\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxzgco\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsyalqw\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsycujm\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsyibac\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsynyam\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsypule\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsyvkyd\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszbtxw\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszelvz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszfowt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszjkzl\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszmbfw\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszncpv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszoeih\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszqnox\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n de579dfd-1347-4f05-9110-cde88b579297\r\n Started\r\n Active\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 2\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 6:01:16 PM +00:00\r\n \r\n \r\n \r\n Update\r\n Succeeded\r\n \r\n \r\n \r\n \r\n \r\n cloudserv\r\n \r\n hi there\r\n West US\r\n \r\n \r\n \r\n CS-NorthCentralUS-scheduler\r\n \r\n CS-NorthCentralUS-scheduler\r\n North Central US\r\n \r\n \r\n \r\n CS-SouthCentralUS-scheduler\r\n \r\n CS-SouthCentralUS-scheduler\r\n South Central US\r\n \r\n \r\n \r\n CS-WebJobs-WestEurope-scheduler\r\n \r\n CS-WebJobs-WestEurope-scheduler\r\n West Europe\r\n \r\n \r\n \r\n CS-WebJobs-WestUS-scheduler\r\n \r\n CS-WebJobs-WestUS-scheduler\r\n West US\r\n \r\n \r\n \r\n devSaopDS-cs1\r\n \r\n devSaopDS-cs1\r\n north europe\r\n \r\n \r\n \r\n name\r\n \r\n couves\r\n West US\r\n \r\n \r\n \r\n RecoveryServices-P2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-east-asia\r\n \r\n 04301767-ecac-4e60-a412-d289bf890e93\r\n east asia\r\n \r\n \r\n WABackup\r\n BackupVault\r\n Test\r\n \r\n 1.1\r\n e25454eb-a351-4199-a6e5-1208207bf9cf\r\n Started\r\n Ok\r\n \r\n \r\n StampId\r\n 64437628-f3e5-4d8a-928b-44b2c9889117\r\n \r\n \r\n ResourceId\r\n 3888925532610829152\r\n \r\n \r\n BackendStampId\r\n 64437628-f3e5-4d8a-928b-44b2c9889117\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n \r\n", @@ -1187,8 +1187,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n \r\n aztstjcjobclsabrzy\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsadcuu\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsanbmb\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsaqjwu\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsaskes\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsatabp\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsavrzs\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbfllr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbgnqk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbrhbj\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbsefr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbvuae\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclscdclk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclscdjdp\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclscrwsz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsczxzk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdblyf\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdezvt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdjfrl\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdtvmd\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsduhom\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclselofj\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclseshfx\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclseuzny\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsexies\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsexnyf\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsfyvee\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsfywzg\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n scheduler\r\n JobCollections\r\n aztstjcjobcllnkvbcv\r\n 1.1\r\n 29d5806a-c1ae-417e-ba20-63953ec823d0\r\n Started\r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n \r\n \r\n \r\n aztstjcjobclsgjxwz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsguzix\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclshgdva\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclshhltr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsidgrg\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsilaic\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsixcht\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjmafh\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjvzbw\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjxxrm\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjyslm\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclskebaj\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclslfwil\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclslhnch\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsltxec\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsluoay\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsmcgiy\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsmpvtc\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsmwyjx\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsndfra\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsnedcm\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsnffyk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsnodpd\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsntawk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsoazst\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsotqhy\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspdklh\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspobdn\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspsziv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspupar\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqasdr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqbsjt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqemag\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqfyva\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqitok\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqlkph\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqpsxk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqtewe\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqvecg\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqwgeh\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqzptb\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrhlub\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrjtnr\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrjxsq\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrredc\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstblsn\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstcbjj\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstfpqz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstglen\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstkacb\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstsrkv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstxeua\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsugcpk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsuwnbq\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsuzvkn\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsvkbrv\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsvorjd\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsvwiiv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclswefsv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclswnewk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclswxpjf\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxgagp\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxhzwt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxoyhe\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxzazs\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxzgco\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsyalqw\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsycujm\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsyibac\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsynyam\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsypule\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsyvkyd\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszbtxw\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszelvz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszfowt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszjkzl\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszmbfw\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszncpv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszoeih\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszqnox\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n de579dfd-1347-4f05-9110-cde88b579297\r\n Started\r\n Active\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 2\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 6:01:16 PM +00:00\r\n \r\n \r\n \r\n Update\r\n Succeeded\r\n \r\n \r\n \r\n \r\n \r\n cloudserv\r\n \r\n hi there\r\n West US\r\n \r\n \r\n \r\n CS-NorthCentralUS-scheduler\r\n \r\n CS-NorthCentralUS-scheduler\r\n North Central US\r\n \r\n \r\n \r\n CS-SouthCentralUS-scheduler\r\n \r\n CS-SouthCentralUS-scheduler\r\n South Central US\r\n \r\n \r\n \r\n CS-WebJobs-WestEurope-scheduler\r\n \r\n CS-WebJobs-WestEurope-scheduler\r\n West Europe\r\n \r\n \r\n \r\n CS-WebJobs-WestUS-scheduler\r\n \r\n CS-WebJobs-WestUS-scheduler\r\n West US\r\n \r\n \r\n \r\n devSaopDS-cs1\r\n \r\n devSaopDS-cs1\r\n north europe\r\n \r\n \r\n \r\n name\r\n \r\n couves\r\n West US\r\n \r\n \r\n \r\n RecoveryServices-P2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-east-asia\r\n \r\n 04301767-ecac-4e60-a412-d289bf890e93\r\n east asia\r\n \r\n \r\n WABackup\r\n BackupVault\r\n Test\r\n \r\n 1.1\r\n e25454eb-a351-4199-a6e5-1208207bf9cf\r\n Started\r\n Ok\r\n \r\n \r\n StampId\r\n 64437628-f3e5-4d8a-928b-44b2c9889117\r\n \r\n \r\n ResourceId\r\n 3888925532610829152\r\n \r\n \r\n BackendStampId\r\n 64437628-f3e5-4d8a-928b-44b2c9889117\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n \r\n", @@ -1222,8 +1222,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n \r\n aztstjcjobclsabrzy\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsadcuu\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsanbmb\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsaqjwu\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsaskes\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsatabp\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsavrzs\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbfllr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbgnqk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbrhbj\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbsefr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsbvuae\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclscdclk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclscdjdp\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclscrwsz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsczxzk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdblyf\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdezvt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdjfrl\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsdtvmd\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsduhom\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclselofj\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclseshfx\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclseuzny\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsexies\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsexnyf\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsfyvee\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsfywzg\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n scheduler\r\n JobCollections\r\n aztstjcjobcllnkvbcv\r\n 1.1\r\n 29d5806a-c1ae-417e-ba20-63953ec823d0\r\n Started\r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n \r\n \r\n \r\n aztstjcjobclsgjxwz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsguzix\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclshgdva\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclshhltr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsidgrg\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsilaic\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsixcht\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjmafh\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjvzbw\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjxxrm\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsjyslm\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclskebaj\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclslfwil\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclslhnch\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsltxec\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsluoay\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsmcgiy\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsmpvtc\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsmwyjx\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsndfra\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsnedcm\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsnffyk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsnodpd\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsntawk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsoazst\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsotqhy\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspdklh\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspobdn\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspsziv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclspupar\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqasdr\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqbsjt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqemag\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqfyva\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqitok\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqlkph\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqpsxk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqtewe\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqvecg\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqwgeh\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsqzptb\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrhlub\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrjtnr\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrjxsq\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsrredc\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstblsn\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstcbjj\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstfpqz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstglen\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstkacb\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstsrkv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclstxeua\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsugcpk\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsuwnbq\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsuzvkn\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsvkbrv\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsvorjd\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsvwiiv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclswefsv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclswnewk\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclswxpjf\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxgagp\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxhzwt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxoyhe\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxzazs\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsxzgco\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsyalqw\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsycujm\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsyibac\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsynyam\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsypule\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclsyvkyd\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszbtxw\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszelvz\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszfowt\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszjkzl\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszmbfw\r\n \r\n aztstjcDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszncpv\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszoeih\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n aztstjcjobclszqnox\r\n \r\n aztstschDesc1\r\n West US\r\n \r\n \r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n \r\n CachingP2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-West-US\r\n West US\r\n \r\n \r\n cacheservice\r\n Caching\r\n onesdk2608\r\n 1.0\r\n de579dfd-1347-4f05-9110-cde88b579297\r\n Started\r\n Active\r\n \r\n \r\n \r\n Basic\r\n West US\r\n 2\r\n 1.2.0\r\n 1024\r\n \r\n \r\n default\r\n false\r\n false\r\n LeastRecentlyUsed\r\n \r\n \r\n \r\n \r\n \r\n \r\n CreationDate\r\n 7/6/2014 6:01:16 PM +00:00\r\n \r\n \r\n \r\n Update\r\n Succeeded\r\n \r\n \r\n \r\n \r\n \r\n cloudserv\r\n \r\n hi there\r\n West US\r\n \r\n \r\n \r\n CS-NorthCentralUS-scheduler\r\n \r\n CS-NorthCentralUS-scheduler\r\n North Central US\r\n \r\n \r\n \r\n CS-SouthCentralUS-scheduler\r\n \r\n CS-SouthCentralUS-scheduler\r\n South Central US\r\n \r\n \r\n \r\n CS-WebJobs-WestEurope-scheduler\r\n \r\n CS-WebJobs-WestEurope-scheduler\r\n West Europe\r\n \r\n \r\n \r\n CS-WebJobs-WestUS-scheduler\r\n \r\n CS-WebJobs-WestUS-scheduler\r\n West US\r\n \r\n \r\n \r\n devSaopDS-cs1\r\n \r\n devSaopDS-cs1\r\n north europe\r\n \r\n \r\n \r\n name\r\n \r\n couves\r\n West US\r\n \r\n \r\n \r\n RecoveryServices-P2VBRNX3ZH3GXC5MWKW5VS3K5J4T7XSMRHBCI2OMUCUGDVAVQXXA-east-asia\r\n \r\n 04301767-ecac-4e60-a412-d289bf890e93\r\n east asia\r\n \r\n \r\n WABackup\r\n BackupVault\r\n Test\r\n \r\n 1.1\r\n e25454eb-a351-4199-a6e5-1208207bf9cf\r\n Started\r\n Ok\r\n \r\n \r\n StampId\r\n 64437628-f3e5-4d8a-928b-44b2c9889117\r\n \r\n \r\n ResourceId\r\n 3888925532610829152\r\n \r\n \r\n BackendStampId\r\n 64437628-f3e5-4d8a-928b-44b2c9889117\r\n \r\n \r\n \r\n Create\r\n Succeeded\r\n \r\n \r\n \r\n \r\n", @@ -1257,8 +1257,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ], "client-tracking-id": [ "20" @@ -1295,8 +1295,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ], "client-tracking-id": [ "20" @@ -1333,8 +1333,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n YWNzOmh0dHBzOi8vb25lc2RrMjYwODQ1ODEtY2FjaGUuYWNjZXNzY29udHJvbC53aW5kb3dzLm5ldC8vV1JBUHYwLjkvJm93bmVyJmk5cUEvcVp1eUpCRzZvT1gxY1k4NTAwWW4yUGNjVGROZFNianpMT29sY289Jmh0dHA6Ly9vbmVzZGsyNjA4LmNhY2hlLndpbmRvd3MubmV0Lw==\r\n YWNzOmh0dHBzOi8vb25lc2RrMjYwODQ1ODEtY2FjaGUuYWNjZXNzY29udHJvbC53aW5kb3dzLm5ldC8vV1JBUHYwLjkvJm93bmVyJkpmdHpnYS9pVjJjMzF4V0tiUWlBRi9qb043SHoybVBCaUczMlhjQmUwcDA9Jmh0dHA6Ly9vbmVzZGsyNjA4LmNhY2hlLndpbmRvd3MubmV0Lw==\r\n", @@ -1371,8 +1371,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ] }, "ResponseBody": "\r\n YWNzOmh0dHBzOi8vb25lc2RrMjYwODQ1ODEtY2FjaGUuYWNjZXNzY29udHJvbC53aW5kb3dzLm5ldC8vV1JBUHYwLjkvJm93bmVyJllLSmJFeTVvSEZvZkRmdmt6VTRqMTViWnlkNlEwbG1pUmFmZ2ZtQ2phVTQ9Jmh0dHA6Ly9vbmVzZGsyNjA4LmNhY2hlLndpbmRvd3MubmV0Lw==\r\n YWNzOmh0dHBzOi8vb25lc2RrMjYwODQ1ODEtY2FjaGUuYWNjZXNzY29udHJvbC53aW5kb3dzLm5ldC8vV1JBUHYwLjkvJm93bmVyJkpmdHpnYS9pVjJjMzF4V0tiUWlBRi9qb043SHoybVBCaUczMlhjQmUwcDA9Jmh0dHA6Ly9vbmVzZGsyNjA4LmNhY2hlLndpbmRvd3MubmV0Lw==\r\n", @@ -1409,8 +1409,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ], "client-tracking-id": [ "40" @@ -1447,8 +1447,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ], "client-tracking-id": [ "40" @@ -1485,8 +1485,8 @@ "2012-08-01" ], "User-Agent": [ - "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.12", - "AzurePowershell/v0.8.12" + "Microsoft.Azure.Management.ManagedCache.ManagedCacheClient/0.8.13", + "AzurePowershell/v0.8.13" ], "client-tracking-id": [ "40" diff --git a/src/ServiceManagement/Network/Commands.Network/Commands.Network.csproj b/src/ServiceManagement/Network/Commands.Network/Commands.Network.csproj index 06be7dfcd0cd..a06050bc51f5 100644 --- a/src/ServiceManagement/Network/Commands.Network/Commands.Network.csproj +++ b/src/ServiceManagement/Network/Commands.Network/Commands.Network.csproj @@ -68,9 +68,9 @@ False ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.4.3.0\lib\net40\Microsoft.WindowsAzure.Management.Network.dll - + False - ..\..\..\packages\WindowsAzure.Storage.4.0.0\lib\net40\Microsoft.WindowsAzure.Storage.dll + ..\..\..\packages\WindowsAzure.Storage.4.2.1\lib\net40\Microsoft.WindowsAzure.Storage.dll False diff --git a/src/ServiceManagement/Network/Commands.Network/packages.config b/src/ServiceManagement/Network/Commands.Network/packages.config index 6838a3f5db63..58914c942665 100644 --- a/src/ServiceManagement/Network/Commands.Network/packages.config +++ b/src/ServiceManagement/Network/Commands.Network/packages.config @@ -15,5 +15,5 @@ - + \ No newline at end of file diff --git a/src/ServiceManagement/Services/Commands.Utilities/Azure.psd1 b/src/ServiceManagement/Services/Commands.Utilities/Azure.psd1 index 413200049b78..b8625368486e 100644 --- a/src/ServiceManagement/Services/Commands.Utilities/Azure.psd1 +++ b/src/ServiceManagement/Services/Commands.Utilities/Azure.psd1 @@ -9,7 +9,7 @@ @{ # Version number of this module. -ModuleVersion = '0.8.12' +ModuleVersion = '0.8.13' # ID used to uniquely identify this module GUID = 'D48CF693-4125-4D2D-8790-1514F44CE325' diff --git a/src/ServiceManagement/Sql/Commands.SqlDatabase.Test/Resources/MockSessions.xml b/src/ServiceManagement/Sql/Commands.SqlDatabase.Test/Resources/MockSessions.xml index a38c2bc2cc57..d23d367a792b 100644 --- a/src/ServiceManagement/Sql/Commands.SqlDatabase.Test/Resources/MockSessions.xml +++ b/src/ServiceManagement/Sql/Commands.SqlDatabase.Test/Resources/MockSessions.xml @@ -424,7 +424,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -507,7 +507,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(1)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -590,7 +590,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -673,7 +673,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -756,7 +756,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(6)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -839,7 +839,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -922,7 +922,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -1005,7 +1005,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb2'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -1088,7 +1088,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -1171,7 +1171,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb3'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -1254,7 +1254,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(6)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -1342,7 +1342,7 @@ http://localhost:12345/v1/ManagementService.svc/GetAccessToken GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
sqlauthorization @@ -1401,7 +1401,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Servers()?$top=1 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -1484,7 +1484,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/$metadata GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
AccessToken @@ -1560,7 +1560,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases POST - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -1691,7 +1691,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4) GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -1774,7 +1774,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -1857,7 +1857,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases POST - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -1988,7 +1988,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5) GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -2071,7 +2071,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -2154,7 +2154,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases POST - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -2285,7 +2285,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(6) GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -2368,7 +2368,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(6)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -2456,7 +2456,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -2539,7 +2539,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -2622,7 +2622,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4) MERGE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -2746,7 +2746,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -2829,7 +2829,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -2912,7 +2912,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb2'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -2995,7 +2995,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -3078,7 +3078,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5) MERGE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -3202,7 +3202,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb2'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -3285,7 +3285,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -3373,7 +3373,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -3456,7 +3456,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -3539,7 +3539,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4) MERGE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -3661,7 +3661,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'new_testdb1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -3744,7 +3744,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -3827,7 +3827,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'new_testdb1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -3910,7 +3910,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -3993,7 +3993,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4) MERGE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -4115,7 +4115,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -4198,7 +4198,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -4286,7 +4286,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -4369,7 +4369,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -4452,7 +4452,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4) DELETE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -4531,7 +4531,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb2'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -4614,7 +4614,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -4697,7 +4697,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5) DELETE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -4776,7 +4776,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -4859,7 +4859,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(1)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -4947,7 +4947,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases POST - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -5077,7 +5077,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb3'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -5165,7 +5165,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -5248,7 +5248,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives(guid'7203483a-c4fb-4304-9e9f-17c71c904f5d')/DimensionSettings GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -5331,7 +5331,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives(guid'a7d1b92d-c987-4375-b54d-2b1d0e0f5bb0')/DimensionSettings GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -5414,7 +5414,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives(guid'e210706e-cd95-4f72-b5e5-885f8a1406e8')/DimensionSettings GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -5497,7 +5497,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives(guid'a7c4c615-cfb1-464b-b252-925be0a19446')/DimensionSettings GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -5580,7 +5580,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives(guid'a45fea0c-e63c-4bf0-9f81-9964c86b7d2a')/DimensionSettings GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -5663,7 +5663,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives(guid'910b4fcb-8a29-4c3e-958f-f7ba794388b2')/DimensionSettings GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -5746,7 +5746,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives()?$filter=Name%20eq%20'P1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -5829,7 +5829,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives(guid'7203483a-c4fb-4304-9e9f-17c71c904f5d')/DimensionSettings GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -5917,7 +5917,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives()?$filter=Name%20eq%20'P1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -6000,7 +6000,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives(guid'7203483a-c4fb-4304-9e9f-17c71c904f5d')/DimensionSettings GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -6083,7 +6083,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases POST - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -6214,7 +6214,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(6) GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -6297,7 +6297,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(6)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -6380,7 +6380,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'SetAzureSqlPremiumDatabaseTests_P1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -6463,7 +6463,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(6)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -6546,7 +6546,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(6) MERGE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -6670,7 +6670,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'SetAzureSqlPremiumDatabaseTests_P1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -6753,7 +6753,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(6)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -6836,7 +6836,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'SetAzureSqlPremiumDatabaseTests_P1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -6919,7 +6919,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(6)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -7002,7 +7002,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(6) DELETE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -7086,7 +7086,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5) DELETE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -7165,7 +7165,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -7248,7 +7248,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -7331,7 +7331,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4) DELETE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -7410,7 +7410,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb2'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -7493,7 +7493,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -7576,7 +7576,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5) DELETE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -7655,7 +7655,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb3'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -7738,7 +7738,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(6)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -7821,7 +7821,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(6) DELETE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -7905,7 +7905,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -7988,7 +7988,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(1)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -8071,7 +8071,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -8154,7 +8154,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -8237,7 +8237,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -8320,7 +8320,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -8403,7 +8403,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb2'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -8486,7 +8486,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -8569,7 +8569,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -8652,7 +8652,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -8735,7 +8735,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb2'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -8818,7 +8818,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -8906,7 +8906,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServerQuotas GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -8989,7 +8989,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServerQuotas('Premium_Databases') GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -9694,7 +9694,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/firewallrules POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -9757,7 +9757,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/firewallrules POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -9820,7 +9820,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/firewallrules GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -9877,7 +9877,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/firewallrules/Rule1 PUT - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -9940,7 +9940,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/firewallrules GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -9997,7 +9997,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/firewallrules/Rule1 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -10050,7 +10050,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/firewallrules/Rule2 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -10103,7 +10103,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/firewallrules GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -10165,7 +10165,7 @@ http://localhost:12345/v1/ManagementService.svc/GetAccessToken GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
sqlauthorization @@ -10224,7 +10224,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Servers()?$top=1 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -10307,7 +10307,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/$metadata GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
AccessToken @@ -10378,7 +10378,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/DacOperations/Export POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -10448,7 +10448,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/DacOperations/Status POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -10512,7 +10512,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/DacOperations/Import POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -10584,7 +10584,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/DacOperations/Status POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -10653,7 +10653,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcertPremiumDBP2 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -10706,7 +10706,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -10763,7 +10763,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/26e021db-f1f9-4c98-84c6-92af8ef433d7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -10820,7 +10820,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -10882,7 +10882,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -10939,7 +10939,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databaseoperations?databaseName=testdbcertGetOperationDbName_f1abaa48-a85a-4141-9a40-6acb3ea65771 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -10996,7 +10996,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databaseoperations?databaseName=testdbcertGetOperationDbName_f1abaa48-a85a-4141-9a40-6acb3ea65771 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11053,7 +11053,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databaseoperations/abd31d7f-19ca-4f29-a89a-7b38910f7ca9 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11110,7 +11110,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcertGetOperationDbName_f1abaa48-a85a-4141-9a40-6acb3ea65771 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11163,7 +11163,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11220,7 +11220,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/26e021db-f1f9-4c98-84c6-92af8ef433d7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11277,7 +11277,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11391,7 +11391,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11451,7 +11451,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11508,7 +11508,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databaseoperations?databaseName=testdbcertGetOperationDbName_76974d03-d70b-4f9b-88d0-76df0cb68f2c GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11565,7 +11565,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databaseoperations?databaseName=testdbcertGetOperationDbName_76974d03-d70b-4f9b-88d0-76df0cb68f2c GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11622,7 +11622,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databaseoperations/33623226-1f44-4ea5-a18f-b4460664f9b0 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11679,7 +11679,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert3 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11732,7 +11732,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert2 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11785,7 +11785,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert4 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11838,7 +11838,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcertPremiumDBP1 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11891,7 +11891,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcertPremiumDBP2 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11944,7 +11944,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcertGetOperationDbName_76974d03-d70b-4f9b-88d0-76df0cb68f2c DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -11997,7 +11997,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12054,7 +12054,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/26e021db-f1f9-4c98-84c6-92af8ef433d7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12111,7 +12111,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12171,7 +12171,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12228,7 +12228,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12290,7 +12290,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12347,7 +12347,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12408,7 +12408,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12465,7 +12465,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12522,7 +12522,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/26e021db-f1f9-4c98-84c6-92af8ef433d7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12579,7 +12579,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12636,7 +12636,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12693,7 +12693,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12750,7 +12750,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert1 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12807,7 +12807,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12864,7 +12864,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert4 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12921,7 +12921,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -12978,7 +12978,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert1 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13035,7 +13035,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert1 PUT - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13096,7 +13096,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13153,7 +13153,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert3 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13210,7 +13210,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert3 PUT - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13272,7 +13272,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13329,7 +13329,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert4 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13386,7 +13386,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert4 PUT - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13448,7 +13448,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13505,7 +13505,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13562,7 +13562,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13619,7 +13619,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/a7d1b92d-c987-4375-b54d-2b1d0e0f5bb0 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13676,7 +13676,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert4 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13733,7 +13733,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert4 PUT - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13795,7 +13795,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13852,7 +13852,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13914,7 +13914,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/7203483a-c4fb-4304-9e9f-17c71c904f5d GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -13971,7 +13971,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcertPremiumDBP1 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14028,7 +14028,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/7203483a-c4fb-4304-9e9f-17c71c904f5d GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14085,7 +14085,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcertPremiumDBP1 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14142,7 +14142,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/7203483a-c4fb-4304-9e9f-17c71c904f5d GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14199,7 +14199,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcertPremiumDBP1 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14256,7 +14256,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/7203483a-c4fb-4304-9e9f-17c71c904f5d GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14313,7 +14313,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14375,7 +14375,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/a7d1b92d-c987-4375-b54d-2b1d0e0f5bb0 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14432,7 +14432,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcertPremiumDBP2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14489,7 +14489,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/a7d1b92d-c987-4375-b54d-2b1d0e0f5bb0 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14546,7 +14546,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcertPremiumDBP2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14603,7 +14603,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/a7d1b92d-c987-4375-b54d-2b1d0e0f5bb0 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14660,7 +14660,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14720,7 +14720,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14777,7 +14777,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databaseoperations?databaseName=testdbcertGetOperationDbName_f1abaa48-a85a-4141-9a40-6acb3ea65771 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14834,7 +14834,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databaseoperations?databaseName=testdbcertGetOperationDbName_f1abaa48-a85a-4141-9a40-6acb3ea65771 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14891,7 +14891,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databaseoperations/2459d7eb-ffc2-45ee-b421-f645739aa5a0 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -14948,7 +14948,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert3 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -15001,7 +15001,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert2 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -15054,7 +15054,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcert4 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -15107,7 +15107,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcertPremiumDBP1 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -15160,7 +15160,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcertPremiumDBP2 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -15213,7 +15213,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbcertGetOperationDbName_f1abaa48-a85a-4141-9a40-6acb3ea65771 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -15266,7 +15266,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -15323,7 +15323,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/26e021db-f1f9-4c98-84c6-92af8ef433d7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -15385,7 +15385,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives()?$filter=Name%20eq%20'P1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -15468,7 +15468,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives(guid'7203483a-c4fb-4304-9e9f-17c71c904f5d')/DimensionSettings GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -15551,7 +15551,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives()?$filter=Name%20eq%20'P2'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -15634,7 +15634,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives(guid'a7d1b92d-c987-4375-b54d-2b1d0e0f5bb0')/DimensionSettings GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -15717,7 +15717,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases POST - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -15804,7 +15804,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4) GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -15887,7 +15887,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -15970,7 +15970,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'NewAzureSqlPremiumDatabaseTests_P1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -16053,7 +16053,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -16136,7 +16136,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases POST - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -16223,7 +16223,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5) GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -16306,7 +16306,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -16389,7 +16389,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'NewAzureSqlPremiumDatabaseTests_P2'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -16472,7 +16472,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -16555,7 +16555,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'NewAzureSqlPremiumDatabaseTests_P2'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -16638,7 +16638,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -16726,7 +16726,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases POST - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -16857,7 +16857,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4) GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -16940,7 +16940,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -17023,7 +17023,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'getAzureSqlDatabaseOperationTestsDB_08ebd7c9-bfb7-426a-9e2f-9921999567e1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -17106,7 +17106,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -17189,7 +17189,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4) DELETE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -17268,7 +17268,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/DatabaseOperations()?$filter=DatabaseName%20eq%20'getAzureSqlDatabaseOperationTestsDB_08ebd7c9-bfb7-426a-9e2f-9921999567e1' GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -17351,7 +17351,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/DatabaseOperations()?$filter=DatabaseName%20eq%20'getAzureSqlDatabaseOperationTestsDB_08ebd7c9-bfb7-426a-9e2f-9921999567e1' GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -17434,7 +17434,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/DatabaseOperations(guid'6c3afd55-7ce5-45cd-8e4c-f5ae8f8e1659') GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -17522,7 +17522,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -17605,7 +17605,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(1)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -17688,7 +17688,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -17771,7 +17771,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -17854,7 +17854,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'NewAzureSqlPremiumDatabaseTests_P1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -17937,7 +17937,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -18020,7 +18020,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4) DELETE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -18099,7 +18099,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'NewAzureSqlPremiumDatabaseTests_P2'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -18182,7 +18182,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -18265,7 +18265,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5) DELETE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -18428,7 +18428,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives()?$filter=Name%20eq%20'P1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -18511,7 +18511,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/ServiceObjectives(guid'7203483a-c4fb-4304-9e9f-17c71c904f5d')/DimensionSettings GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -18594,7 +18594,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb2'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -18677,7 +18677,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -18760,7 +18760,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5) MERGE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -18882,7 +18882,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb2'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -18965,7 +18965,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -19053,7 +19053,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb1'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -19136,7 +19136,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -19219,7 +19219,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(4) DELETE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -19298,7 +19298,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases()?$filter=Name%20eq%20'testdb2'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -19381,7 +19381,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5)/ServiceObjective GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -19464,7 +19464,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/Databases(5) DELETE - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -21648,7 +21648,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -21708,7 +21708,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -21765,7 +21765,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -21826,7 +21826,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/1b1ebd4d-d903-4baa-97f9-4ea675f5e928 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -21883,7 +21883,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -21940,7 +21940,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/1b1ebd4d-d903-4baa-97f9-4ea675f5e928 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -21997,7 +21997,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22054,7 +22054,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/1b1ebd4d-d903-4baa-97f9-4ea675f5e928 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22111,7 +22111,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22168,7 +22168,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/1b1ebd4d-d903-4baa-97f9-4ea675f5e928 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22225,7 +22225,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22286,7 +22286,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/dd6d99bb-f193-4ec1-86f2-43d3bccbc49c GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22343,7 +22343,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22404,7 +22404,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/7203483a-c4fb-4304-9e9f-17c71c904f5d GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22461,7 +22461,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions4 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22518,7 +22518,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/7203483a-c4fb-4304-9e9f-17c71c904f5d GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22575,7 +22575,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions4 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22632,7 +22632,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/7203483a-c4fb-4304-9e9f-17c71c904f5d GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22689,7 +22689,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22746,7 +22746,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22808,7 +22808,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/455330e1-00cd-488b-b5fa-177c226f28b7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22865,7 +22865,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions5 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22922,7 +22922,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/455330e1-00cd-488b-b5fa-177c226f28b7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -22979,7 +22979,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions5 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23036,7 +23036,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/455330e1-00cd-488b-b5fa-177c226f28b7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23093,7 +23093,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions1 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23150,7 +23150,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23207,7 +23207,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions1 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23264,7 +23264,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23321,7 +23321,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23378,7 +23378,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions2 PUT - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23439,7 +23439,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/1b1ebd4d-d903-4baa-97f9-4ea675f5e928 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23496,7 +23496,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions3 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23553,7 +23553,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions3 PUT - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23615,7 +23615,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/dd6d99bb-f193-4ec1-86f2-43d3bccbc49c GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23672,7 +23672,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23729,7 +23729,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/26e021db-f1f9-4c98-84c6-92af8ef433d7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23786,7 +23786,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23843,7 +23843,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/455330e1-00cd-488b-b5fa-177c226f28b7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23900,7 +23900,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/dd6d99bb-f193-4ec1-86f2-43d3bccbc49c GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -23957,7 +23957,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/7203483a-c4fb-4304-9e9f-17c71c904f5d GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -24014,7 +24014,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/455330e1-00cd-488b-b5fa-177c226f28b7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -24071,7 +24071,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions1 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -24124,7 +24124,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions2 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -24177,7 +24177,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions3 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -24230,7 +24230,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions4 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -24283,7 +24283,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdbeditions5 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -24336,7 +24336,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -24393,7 +24393,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/26e021db-f1f9-4c98-84c6-92af8ef433d7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -26182,7 +26182,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -26244,7 +26244,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -26301,7 +26301,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -26363,7 +26363,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -26420,7 +26420,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -26482,7 +26482,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -26539,7 +26539,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -26601,7 +26601,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -26658,7 +26658,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -26718,7 +26718,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -26775,7 +26775,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0/databasecopies POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -26837,7 +26837,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb1/databasecopies POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -26899,7 +26899,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb2/databasecopies POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -26961,7 +26961,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb3/databasecopies POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27023,7 +27023,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb4/databasecopies POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27085,7 +27085,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27142,7 +27142,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27199,7 +27199,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27256,7 +27256,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb1/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27313,7 +27313,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb2/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27370,7 +27370,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb3/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27427,7 +27427,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb3/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27484,7 +27484,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb3/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27541,7 +27541,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb3/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27598,7 +27598,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb3/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27655,7 +27655,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb4/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27712,7 +27712,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0/databasecopies/8df450a0-461f-4d20-975d-6737a3939c61 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27769,7 +27769,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb1/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27826,7 +27826,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb0/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27883,7 +27883,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27940,7 +27940,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/master/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -27997,7 +27997,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28054,7 +28054,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb1/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28111,7 +28111,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb4/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28168,7 +28168,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb2/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28225,7 +28225,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb3/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28282,7 +28282,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28339,7 +28339,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/master/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28396,7 +28396,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28453,7 +28453,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb1/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28510,7 +28510,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb4/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28567,7 +28567,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb2/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28624,7 +28624,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb3/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28681,7 +28681,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0/databasecopies/8df450a0-461f-4d20-975d-6737a3939c61 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28738,7 +28738,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0/databasecopies/8df450a0-461f-4d20-975d-6737a3939c61 PUT - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28799,7 +28799,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0/databasecopies/8df450a0-461f-4d20-975d-6737a3939c61 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28852,7 +28852,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb1/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28909,7 +28909,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb1/databasecopies/bca19806-bf69-4369-a21f-c607d3756d89 PUT - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -28970,7 +28970,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb1/databasecopies/bca19806-bf69-4369-a21f-c607d3756d89 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29023,7 +29023,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb2/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29080,7 +29080,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb2/databasecopies/ae68062d-9a09-4ae3-b7d1-99eee6004d7f PUT - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29141,7 +29141,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb2/databasecopies/ae68062d-9a09-4ae3-b7d1-99eee6004d7f DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29194,7 +29194,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb3/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29251,7 +29251,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb3/databasecopies/47dcf839-2847-4458-9e61-584f3adbc2bc PUT - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29312,7 +29312,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb3/databasecopies/47dcf839-2847-4458-9e61-584f3adbc2bc DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29365,7 +29365,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb4/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29422,7 +29422,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb4/databasecopies/51d22086-2be9-4f4a-a569-3b3372f50d34 PUT - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29481,7 +29481,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb4/databasecopies/51d22086-2be9-4f4a-a569-3b3372f50d34 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29534,7 +29534,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29591,7 +29591,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb1/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29648,7 +29648,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb2/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29705,7 +29705,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb3/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29762,7 +29762,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb4/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29819,7 +29819,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29876,7 +29876,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/master/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29933,7 +29933,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -29990,7 +29990,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb1/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30047,7 +30047,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb4/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30104,7 +30104,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb2/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30161,7 +30161,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb3/databasecopies GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30218,7 +30218,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30275,7 +30275,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/26e021db-f1f9-4c98-84c6-92af8ef433d7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30332,7 +30332,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30389,7 +30389,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30446,7 +30446,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30503,7 +30503,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30560,7 +30560,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30617,7 +30617,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30670,7 +30670,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb1 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30723,7 +30723,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb4 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30776,7 +30776,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb2 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30829,7 +30829,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb3 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30882,7 +30882,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30939,7 +30939,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/serviceobjectives/26e021db-f1f9-4c98-84c6-92af8ef433d7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -30996,7 +30996,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31053,7 +31053,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31110,7 +31110,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31167,7 +31167,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31224,7 +31224,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31281,7 +31281,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb2 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31334,7 +31334,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb3 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31387,7 +31387,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb0 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31440,7 +31440,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb1 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31493,7 +31493,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases/testdb4 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/1.0.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31551,7 +31551,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31613,7 +31613,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31670,7 +31670,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0/databasecopies POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31733,7 +31733,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0/databasecopies POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31796,7 +31796,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31853,7 +31853,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/26e021db-f1f9-4c98-84c6-92af8ef433d7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31910,7 +31910,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -31967,7 +31967,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32024,7 +32024,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32081,7 +32081,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32138,7 +32138,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/26e021db-f1f9-4c98-84c6-92af8ef433d7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32195,7 +32195,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32252,7 +32252,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32309,7 +32309,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32366,7 +32366,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32419,7 +32419,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0copy1 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32472,7 +32472,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/cloud4/databases/testdb0copy2 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32525,7 +32525,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/databases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32582,7 +32582,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/partnersrv/serviceobjectives/26e021db-f1f9-4c98-84c6-92af8ef433d7 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32644,7 +32644,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32706,7 +32706,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32763,7 +32763,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32827,7 +32827,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32884,7 +32884,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -32947,7 +32947,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -33009,7 +33009,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdb1 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -33062,7 +33062,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdb2 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -33115,7 +33115,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdb3 DELETE - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -33173,7 +33173,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/RestorableDroppedDatabases GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -33256,7 +33256,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/RestorableDroppedDatabases()?$filter=Name%20eq%20'testdb1'%20and%20DeletionDate%20eq%20datetime'2014-04-18T02%3A35%3A06.06Z'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -33339,7 +33339,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/RestorableDroppedDatabases()?$filter=Name%20eq%20'testdb2'%20and%20DeletionDate%20eq%20datetime'2014-04-18T02%3A35%3A12.343Z'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -33427,7 +33427,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/RestorableDroppedDatabases GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -33510,7 +33510,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/RestorableDroppedDatabases()?$filter=Name%20eq%20'testdb1'%20and%20DeletionDate%20eq%20datetime'2014-04-18T02%3A35%3A06.06Z'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -33593,7 +33593,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/RestorableDroppedDatabases()?$filter=Name%20eq%20'testdb2'%20and%20DeletionDate%20eq%20datetime'2014-04-18T02%3A35%3A12.343Z'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -33676,7 +33676,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/RestorableDroppedDatabases()?$filter=Name%20eq%20'testdb1'%20and%20DeletionDate%20eq%20datetime'2014-04-18T02%3A35%3A06.06Z'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -33759,7 +33759,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/RestorableDroppedDatabases()?$filter=Name%20eq%20'testdb2'%20and%20DeletionDate%20eq%20datetime'2014-04-18T02%3A35%3A12.343Z'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -33847,7 +33847,7 @@ http://localhost:12345/v1/ManagementService.svc/Server2('myserver01')/RestorableDroppedDatabases()?$filter=Name%20eq%20'testdbnonexistent'%20and%20DeletionDate%20eq%20datetime'2013-10-01T00%3A00%3A00Z'&$top=2 GET - AzurePowershell/v0.8.12 + AzurePowershell/v0.8.13
DataServiceVersion @@ -33935,7 +33935,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/restorabledroppeddatabases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -33992,7 +33992,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/restorabledroppeddatabases/testdb1,2014-04-18T03:08:25.083Z GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34049,7 +34049,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/restorabledroppeddatabases/testdb2,2014-04-18T03:08:28.877Z GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34111,7 +34111,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/restorabledroppeddatabases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34168,7 +34168,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/restorabledroppeddatabases/testdb1,2014-04-18T03:08:25.083Z GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34225,7 +34225,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/restorabledroppeddatabases/testdb2,2014-04-18T03:08:28.877Z GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34282,7 +34282,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/restorabledroppeddatabases/testdb1,2014-04-18T03:08:25.083Z GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34339,7 +34339,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/restorabledroppeddatabases/testdb2,2014-04-18T03:08:28.877Z GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34401,7 +34401,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/restorabledroppeddatabases/testdbnonexistent,2013-10-01T00:00:00.000Z GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34463,7 +34463,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/restoredatabaseoperations POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34530,7 +34530,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/databases/testdb1 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34587,7 +34587,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/serviceobjectives/910b4fcb-8a29-4c3e-958f-f7ba794388b2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34644,7 +34644,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/restoredatabaseoperations POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34711,7 +34711,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/restorabledroppeddatabases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34768,7 +34768,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/restoredatabaseoperations POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34837,7 +34837,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/restorabledroppeddatabases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34894,7 +34894,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/restoredatabaseoperations POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -34962,7 +34962,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/recoverabledatabases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -35019,7 +35019,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/recoverabledatabases/testdb1 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -35076,7 +35076,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/recoverabledatabases/testdb2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -35138,7 +35138,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/recoverabledatabases?contentview=generic GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -35195,7 +35195,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/recoverabledatabases/testdb1 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -35252,7 +35252,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/recoverabledatabases/testdb2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -35309,7 +35309,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/recoverabledatabases/testdb1 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -35366,7 +35366,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/recoverabledatabases/testdb2 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -35428,7 +35428,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/recoverabledatabases/testdbnonexistent GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -35490,7 +35490,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/recoverdatabaseoperations POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -35557,7 +35557,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/recoverabledatabases/testdb1 GET - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version @@ -35614,7 +35614,7 @@ https://localhost:65432/00000000-0000-0000-0001-000000000001/services/sqlservers/servers/myserver01/recoverdatabaseoperations POST - Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.12 + Microsoft.WindowsAzure.Management.Sql.SqlManagementClient/0.9.0.0 AzurePowershell/v0.8.13
x-ms-version diff --git a/src/ServiceManagement/Storage/Commands.Storage.MsTest2/Properties/AssemblyInfo.cs b/src/ServiceManagement/Storage/Commands.Storage.MsTest2/Properties/AssemblyInfo.cs index 229f0c880bda..a8a513f269f2 100644 --- a/src/ServiceManagement/Storage/Commands.Storage.MsTest2/Properties/AssemblyInfo.cs +++ b/src/ServiceManagement/Storage/Commands.Storage.MsTest2/Properties/AssemblyInfo.cs @@ -41,5 +41,5 @@ // 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("0.8.12")] -[assembly: AssemblyFileVersion("0.8.12")] +[assembly: AssemblyVersion("0.8.13")] +[assembly: AssemblyFileVersion("0.8.13")]