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 e69f18ac6a9b..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 @@
+
+
+
+
+
+
+
+
+
@@ -248,6 +331,15 @@
+
+
+
+
+
+
+
+
+
@@ -257,6 +349,9 @@
+
+
+
@@ -275,6 +370,9 @@
+
+
+
@@ -340,6 +438,9 @@
+
+
+
@@ -408,6 +509,9 @@
+
+
+
@@ -485,6 +589,9 @@
+
+
+
@@ -572,6 +679,9 @@
+
+
+
@@ -637,6 +747,12 @@
+
+
+
+
+
+
@@ -658,12 +774,21 @@
+
+
+
+
+
+
+
+
+
@@ -825,6 +950,9 @@
+
+
+
@@ -878,6 +1006,9 @@
+
+
+
@@ -979,6 +1110,12 @@
+
+
+
+
+
+
@@ -1000,12 +1137,21 @@
+
+
+
+
+
+
+
+
+
@@ -1146,6 +1292,9 @@
+
+
+
@@ -1176,6 +1325,9 @@
+
+
+
@@ -1211,6 +1363,9 @@
+
+
+
@@ -1273,6 +1428,12 @@
+
+
+
+
+
+
@@ -1288,12 +1449,21 @@
+
+
+
+
+
+
+
+
+
@@ -1381,9 +1551,6 @@
-
-
-
@@ -1737,6 +1904,12 @@
+
+
+
+
+
+
@@ -1752,12 +1925,21 @@
+
+
+
+
+
+
+
+
+
@@ -1913,6 +2095,9 @@
+
+
+
@@ -1993,6 +2178,9 @@
+
+
+
@@ -2067,6 +2255,7 @@
+
@@ -2084,6 +2273,7 @@
+
@@ -2110,9 +2300,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2134,6 +2346,9 @@
+
+
+
@@ -2142,15 +2357,20 @@
+
+
+
+
+
@@ -2172,6 +2392,7 @@
+
@@ -2194,6 +2415,7 @@
+
@@ -2219,6 +2441,7 @@
+
@@ -2246,6 +2469,7 @@
+
@@ -2267,6 +2491,8 @@
+
+
@@ -2274,8 +2500,11 @@
+
+
+
@@ -2329,6 +2558,7 @@
+
@@ -2346,6 +2576,7 @@
+
@@ -2379,6 +2610,8 @@
+
+
@@ -2386,8 +2619,11 @@
+
+
+
@@ -2434,6 +2670,7 @@
+
@@ -2444,6 +2681,7 @@
+
@@ -2455,6 +2693,7 @@
+
@@ -2475,13 +2714,18 @@
+
+
+
+
+
@@ -2511,7 +2755,6 @@
-
@@ -2615,13 +2858,18 @@
+
+
+
+
+
@@ -2673,6 +2921,7 @@
+
@@ -2699,6 +2948,7 @@
+
diff --git a/src/AzurePowershell.sln b/src/AzurePowershell.sln
index d69164d019de..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}"
@@ -151,6 +155,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.StreamAnalytics",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commands.StreamAnalytics.Test", "ResourceManager\StreamAnalytics\Commands.StreamAnalytics.Test\Commands.StreamAnalytics.Test.csproj", "{7E6683BE-ECFF-4709-89EB-1325E9E70512}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Extensions", "Common\Azure.Common.Extensions\Common.Extensions.csproj", "{B95C489C-8CB7-4DCF-8D5F-B9AEBDBBAF89}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -345,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
@@ -353,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
@@ -361,6 +375,10 @@ Global
{7E6683BE-ECFF-4709-89EB-1325E9E70512}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7E6683BE-ECFF-4709-89EB-1325E9E70512}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7E6683BE-ECFF-4709-89EB-1325E9E70512}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B95C489C-8CB7-4DCF-8D5F-B9AEBDBBAF89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B95C489C-8CB7-4DCF-8D5F-B9AEBDBBAF89}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B95C489C-8CB7-4DCF-8D5F-B9AEBDBBAF89}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B95C489C-8CB7-4DCF-8D5F-B9AEBDBBAF89}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -390,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/Commands.Common/Authentication/AadAuthenticationException.cs b/src/Common/Azure.Common.Extensions/Authentication/AadAuthenticationException.cs
similarity index 97%
rename from src/Common/Commands.Common/Authentication/AadAuthenticationException.cs
rename to src/Common/Azure.Common.Extensions/Authentication/AadAuthenticationException.cs
index dbfaf1abb52f..fa0d2484f439 100644
--- a/src/Common/Commands.Common/Authentication/AadAuthenticationException.cs
+++ b/src/Common/Azure.Common.Extensions/Authentication/AadAuthenticationException.cs
@@ -14,7 +14,7 @@
using System;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication
+namespace Microsoft.Azure.Common.Extensions.Authentication
{
///
/// Base class representing an exception that occurs when
diff --git a/src/Common/Commands.Common/Authentication/AccessTokenCredential.cs b/src/Common/Azure.Common.Extensions/Authentication/AccessTokenCredential.cs
similarity index 95%
rename from src/Common/Commands.Common/Authentication/AccessTokenCredential.cs
rename to src/Common/Azure.Common.Extensions/Authentication/AccessTokenCredential.cs
index 9addc44ee361..270178958487 100644
--- a/src/Common/Commands.Common/Authentication/AccessTokenCredential.cs
+++ b/src/Common/Azure.Common.Extensions/Authentication/AccessTokenCredential.cs
@@ -12,13 +12,14 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.WindowsAzure;
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading;
using System.Threading.Tasks;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication
+namespace Microsoft.Azure.Common.Extensions.Authentication
{
public class AccessTokenCredential : SubscriptionCloudCredentials
{
diff --git a/src/Common/Commands.Common/Authentication/AdalConfiguration.cs b/src/Common/Azure.Common.Extensions/Authentication/AdalConfiguration.cs
similarity index 97%
rename from src/Common/Commands.Common/Authentication/AdalConfiguration.cs
rename to src/Common/Azure.Common.Extensions/Authentication/AdalConfiguration.cs
index 80fc09992933..9ee7fd8909f8 100644
--- a/src/Common/Commands.Common/Authentication/AdalConfiguration.cs
+++ b/src/Common/Azure.Common.Extensions/Authentication/AdalConfiguration.cs
@@ -15,7 +15,7 @@
using System;
using System.Linq;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication
+namespace Microsoft.Azure.Common.Extensions.Authentication
{
///
/// Class storing the configuration information needed
diff --git a/src/Common/Commands.Common/Authentication/AdalTokenProvider.cs b/src/Common/Azure.Common.Extensions/Authentication/AdalTokenProvider.cs
similarity index 92%
rename from src/Common/Commands.Common/Authentication/AdalTokenProvider.cs
rename to src/Common/Azure.Common.Extensions/Authentication/AdalTokenProvider.cs
index 0d52ba5ada44..f0e67eecc122 100644
--- a/src/Common/Commands.Common/Authentication/AdalTokenProvider.cs
+++ b/src/Common/Azure.Common.Extensions/Authentication/AdalTokenProvider.cs
@@ -12,13 +12,13 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.Azure.Common.Extensions.Properties;
using System;
using System.Security;
using System.Windows.Forms;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication
+namespace Microsoft.Azure.Common.Extensions.Authentication
{
///
/// A token provider that uses ADAL to retrieve
diff --git a/src/Common/Commands.Common/Authentication/ConsoleParentWindow.cs b/src/Common/Azure.Common.Extensions/Authentication/ConsoleParentWindow.cs
similarity index 94%
rename from src/Common/Commands.Common/Authentication/ConsoleParentWindow.cs
rename to src/Common/Azure.Common.Extensions/Authentication/ConsoleParentWindow.cs
index d6e227b84b8c..7d33c8569062 100644
--- a/src/Common/Commands.Common/Authentication/ConsoleParentWindow.cs
+++ b/src/Common/Azure.Common.Extensions/Authentication/ConsoleParentWindow.cs
@@ -16,7 +16,7 @@
using System.Runtime.InteropServices;
using System.Windows.Forms;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication
+namespace Microsoft.Azure.Common.Extensions.Authentication
{
///
/// An implementation of that gives the
diff --git a/src/Common/Commands.Common/Authentication/CredStore.cs b/src/Common/Azure.Common.Extensions/Authentication/CredStore.cs
similarity index 98%
rename from src/Common/Commands.Common/Authentication/CredStore.cs
rename to src/Common/Azure.Common.Extensions/Authentication/CredStore.cs
index c5806e67f11f..598019f64f9a 100644
--- a/src/Common/Commands.Common/Authentication/CredStore.cs
+++ b/src/Common/Azure.Common.Extensions/Authentication/CredStore.cs
@@ -16,7 +16,7 @@
using System.Runtime.ConstrainedExecution;
using System.Runtime.InteropServices;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication
+namespace Microsoft.Azure.Common.Extensions.Authentication
{
///
/// Class wrapping PInvoke signatures for Windows Credential store
diff --git a/src/Common/Commands.Common/Authentication/IAccessToken.cs b/src/Common/Azure.Common.Extensions/Authentication/IAccessToken.cs
similarity index 93%
rename from src/Common/Commands.Common/Authentication/IAccessToken.cs
rename to src/Common/Azure.Common.Extensions/Authentication/IAccessToken.cs
index 8db903887322..7952623bbec7 100644
--- a/src/Common/Commands.Common/Authentication/IAccessToken.cs
+++ b/src/Common/Azure.Common.Extensions/Authentication/IAccessToken.cs
@@ -14,7 +14,7 @@
using System;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication
+namespace Microsoft.Azure.Common.Extensions.Authentication
{
public interface IAccessToken
{
diff --git a/src/Common/Commands.Common/Authentication/ITokenProvider.cs b/src/Common/Azure.Common.Extensions/Authentication/ITokenProvider.cs
similarity index 93%
rename from src/Common/Commands.Common/Authentication/ITokenProvider.cs
rename to src/Common/Azure.Common.Extensions/Authentication/ITokenProvider.cs
index 71ea49ec791e..ea2ab77ce749 100644
--- a/src/Common/Commands.Common/Authentication/ITokenProvider.cs
+++ b/src/Common/Azure.Common.Extensions/Authentication/ITokenProvider.cs
@@ -12,10 +12,10 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Models;
using System.Security;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication
+namespace Microsoft.Azure.Common.Extensions.Authentication
{
///
/// This interface represents objects that can be used
diff --git a/src/Common/Commands.Common/Authentication/LoginType.cs b/src/Common/Azure.Common.Extensions/Authentication/LoginType.cs
similarity index 93%
rename from src/Common/Commands.Common/Authentication/LoginType.cs
rename to src/Common/Azure.Common.Extensions/Authentication/LoginType.cs
index f812412acf0f..e8b3a3ebed17 100644
--- a/src/Common/Commands.Common/Authentication/LoginType.cs
+++ b/src/Common/Azure.Common.Extensions/Authentication/LoginType.cs
@@ -12,7 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication
+namespace Microsoft.Azure.Common.Extensions.Authentication
{
public enum LoginType
{
diff --git a/src/Common/Commands.Common/Authentication/ProtectedFileTokenCache.cs b/src/Common/Azure.Common.Extensions/Authentication/ProtectedFileTokenCache.cs
similarity index 96%
rename from src/Common/Commands.Common/Authentication/ProtectedFileTokenCache.cs
rename to src/Common/Azure.Common.Extensions/Authentication/ProtectedFileTokenCache.cs
index f313eed7b143..2ff115cc3501 100644
--- a/src/Common/Commands.Common/Authentication/ProtectedFileTokenCache.cs
+++ b/src/Common/Azure.Common.Extensions/Authentication/ProtectedFileTokenCache.cs
@@ -12,13 +12,12 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System;
using System.IO;
using System.Security.Cryptography;
-using Microsoft.IdentityModel.Clients.ActiveDirectory;
-using Microsoft.WindowsAzure.Commands.Common;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication
+namespace Microsoft.Azure.Common.Extensions.Authentication
{
///
/// An implementation of the Adal token cache that stores the cache items
@@ -26,7 +25,7 @@ namespace Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication
///
public class ProtectedFileTokenCache : TokenCache
{
- private static readonly string CacheFileName = Path.Combine(AzurePowerShell.ProfileDirectory, "TokenCache.dat");
+ private static readonly string CacheFileName = Path.Combine(AzureSession.ProfileDirectory, AzureSession.TokenCacheFile);
private static readonly object fileLock = new object();
diff --git a/src/Common/Commands.Common/Authentication/ServicePrincipalKeyStore.cs b/src/Common/Azure.Common.Extensions/Authentication/ServicePrincipalKeyStore.cs
similarity index 95%
rename from src/Common/Commands.Common/Authentication/ServicePrincipalKeyStore.cs
rename to src/Common/Azure.Common.Extensions/Authentication/ServicePrincipalKeyStore.cs
index 5d21da36a76d..afba969a1ad5 100644
--- a/src/Common/Commands.Common/Authentication/ServicePrincipalKeyStore.cs
+++ b/src/Common/Azure.Common.Extensions/Authentication/ServicePrincipalKeyStore.cs
@@ -15,10 +15,9 @@
using System;
using System.Runtime.InteropServices;
using System.Security;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME;
-namespace Microsoft.WindowsAzure.Commands.Common.Authentication
+namespace Microsoft.Azure.Common.Extensions.Authentication
{
///
/// Helper class to store service principal keys and retrieve them
@@ -27,7 +26,7 @@ namespace Microsoft.WindowsAzure.Commands.Common.Authentication
public static class ServicePrincipalKeyStore
{
private const string keyStoreUserName = "PowerShellServicePrincipalKey";
- private const string targetNamePrefix = "AzurePowershell:target=";
+ private const string targetNamePrefix = "AzureSession:target=";
public static void SaveKey(string appId, string tenantId, SecureString serviceKey)
{
diff --git a/src/Common/Commands.Common/Authentication/ServicePrincipalTokenProvider.cs b/src/Common/Azure.Common.Extensions/Authentication/ServicePrincipalTokenProvider.cs
similarity index 95%
rename from src/Common/Commands.Common/Authentication/ServicePrincipalTokenProvider.cs
rename to src/Common/Azure.Common.Extensions/Authentication/ServicePrincipalTokenProvider.cs
index ccd5b57f20aa..cd959c9a5bde 100644
--- a/src/Common/Commands.Common/Authentication/ServicePrincipalTokenProvider.cs
+++ b/src/Common/Azure.Common.Extensions/Authentication/ServicePrincipalTokenProvider.cs
@@ -12,15 +12,14 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.Azure.Common.Extensions.Properties;
+using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System;
using System.Collections.Generic;
using System.Security;
-using Microsoft.IdentityModel.Clients.ActiveDirectory;
-using Microsoft.WindowsAzure.Commands.Common.Authentication;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication
+namespace Microsoft.Azure.Common.Extensions.Authentication
{
internal class ServicePrincipalTokenProvider : ITokenProvider
{
diff --git a/src/Common/Commands.Common/Authentication/ShowDialog.cs b/src/Common/Azure.Common.Extensions/Authentication/ShowDialog.cs
similarity index 91%
rename from src/Common/Commands.Common/Authentication/ShowDialog.cs
rename to src/Common/Azure.Common.Extensions/Authentication/ShowDialog.cs
index a3669e7c8835..280aa3d804da 100644
--- a/src/Common/Commands.Common/Authentication/ShowDialog.cs
+++ b/src/Common/Azure.Common.Extensions/Authentication/ShowDialog.cs
@@ -12,7 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication
+namespace Microsoft.Azure.Common.Extensions.Authentication
{
public enum ShowDialog
{
diff --git a/src/Common/Commands.Common/Authentication/UserTokenProvider.cs b/src/Common/Azure.Common.Extensions/Authentication/UserTokenProvider.cs
similarity index 98%
rename from src/Common/Commands.Common/Authentication/UserTokenProvider.cs
rename to src/Common/Azure.Common.Extensions/Authentication/UserTokenProvider.cs
index d94ffe98da93..08615e9e96b5 100644
--- a/src/Common/Commands.Common/Authentication/UserTokenProvider.cs
+++ b/src/Common/Azure.Common.Extensions/Authentication/UserTokenProvider.cs
@@ -12,16 +12,16 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.Azure.Common.Extensions.Properties;
+using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System;
using System.Runtime.InteropServices;
using System.Security;
using System.Threading;
using System.Windows.Forms;
-using Microsoft.IdentityModel.Clients.ActiveDirectory;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication
+namespace Microsoft.Azure.Common.Extensions.Authentication
{
///
/// A token provider that uses ADAL to retrieve
diff --git a/src/Common/Commands.Common/AzureSession.cs b/src/Common/Azure.Common.Extensions/AzureSession.cs
similarity index 73%
rename from src/Common/Commands.Common/AzureSession.cs
rename to src/Common/Azure.Common.Extensions/AzureSession.cs
index 3c92b0eed95d..fa1bb66de832 100644
--- a/src/Common/Commands.Common/AzureSession.cs
+++ b/src/Common/Azure.Common.Extensions/AzureSession.cs
@@ -12,28 +12,32 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Factories;
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.Azure.Common.Extensions.Properties;
using System;
-using System.Collections.Generic;
-using Microsoft.WindowsAzure.Commands.Common.Common;
-using Microsoft.WindowsAzure.Commands.Common.Factories;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
-using Microsoft.WindowsAzure.Commands.Utilities.Common;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
-
-namespace Microsoft.WindowsAzure.Commands.Common
+using System.IO;
+
+namespace Microsoft.Azure.Common.Extensions
{
public static class AzureSession
{
static AzureSession()
{
- ClientFactory = new AzurePowerShellClientFactory();
+ ClientFactory = new ClientFactory();
AuthenticationFactory = new AuthenticationFactory();
CurrentContext = new AzureContext();
CurrentContext.Environment = AzureEnvironment.PublicEnvironments[EnvironmentName.AzureCloud];
+ AzureSession.OldProfileFile = "WindowsAzureProfile.xml";
+ AzureSession.OldProfileFileBackup = "WindowsAzureProfile.xml.bak";
+ AzureSession.ProfileDirectory = Path.Combine(
+ Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
+ Resources.AzureDirectoryName); ;
+ AzureSession.ProfileFile = "AzureProfile.json";
+ AzureSession.TokenCacheFile = "TokenCache.dat";
}
- public static AzureContext CurrentContext {get; private set; }
+ public static AzureContext CurrentContext { get; private set; }
public static void SetCurrentContext(AzureSubscription subscription, AzureEnvironment environment, AzureAccount account)
{
@@ -89,5 +93,15 @@ public static void SetCurrentContext(AzureSubscription subscription, AzureEnviro
public static IClientFactory ClientFactory { get; set; }
public static IAuthenticationFactory AuthenticationFactory { get; set; }
+
+ public static string ProfileDirectory { get; set; }
+
+ public static string TokenCacheFile { get; set; }
+
+ public static string ProfileFile { get; set; }
+
+ public static string OldProfileFileBackup { get; set; }
+
+ public static string OldProfileFile { get; set; }
}
}
diff --git a/src/Common/Azure.Common.Extensions/Common.Extensions.csproj b/src/Common/Azure.Common.Extensions/Common.Extensions.csproj
new file mode 100644
index 000000000000..b3bb3472a230
--- /dev/null
+++ b/src/Common/Azure.Common.Extensions/Common.Extensions.csproj
@@ -0,0 +1,204 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {B95C489C-8CB7-4DCF-8D5F-B9AEBDBBAF89}
+ Library
+ Properties
+ Microsoft.Azure.Common.Extensions
+ Microsoft.Azure.Common.Extensions
+ v4.5
+ 512
+
+ ..\..\
+ true
+ /assemblyCompareMode:StrongNameIgnoringVersion
+
+
+ true
+ full
+ false
+ bin\Debug
+ DEBUG;TRACE
+ prompt
+ 4
+ true
+ true
+ false
+ true
+
+
+ bin\Release
+ TRACE;SIGN
+ true
+ pdbonly
+ AnyCPU
+ bin\Release\Management.Utilities.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
+ true
+
+
+
+ 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.IdentityModel.Clients.ActiveDirectory.2.11.10918.1222\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.dll
+
+
+ False
+ ..\..\packages\Microsoft.IdentityModel.Clients.ActiveDirectory.2.11.10918.1222\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll
+
+
+ False
+ ..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.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
+
+
+ ..\..\packages\Microsoft.WindowsAzure.Common.1.4.1\lib\net45\Microsoft.WindowsAzure.Common.dll
+
+
+ ..\..\packages\Microsoft.WindowsAzure.Common.1.4.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll
+
+
+ ..\..\packages\Microsoft.WindowsAzure.Management.2.1.0\lib\net40\Microsoft.WindowsAzure.Management.dll
+
+
+ ..\..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll
+ True
+
+
+
+
+
+
+ False
+ ..\..\packages\Microsoft.Net.Http.2.2.28\lib\net45\System.Net.Http.Extensions.dll
+
+
+ False
+ ..\..\packages\Microsoft.AspNet.WebApi.Client.5.2.2\lib\net45\System.Net.Http.Formatting.dll
+
+
+ False
+ ..\..\packages\Microsoft.Net.Http.2.2.28\lib\net45\System.Net.Http.Primitives.dll
+
+
+
+
+
+
+
+
+ ..\..\packages\System.Spatial.5.6.0\lib\net40\System.Spatial.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+ True
+ Resources.resx
+
+
+
+
+
+
+
+
+
+ PublicResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+
+
+
+ Designer
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Common/Commands.Common/Common/AzureModule.cs b/src/Common/Azure.Common.Extensions/Common/AzureModule.cs
similarity index 93%
rename from src/Common/Commands.Common/Common/AzureModule.cs
rename to src/Common/Azure.Common.Extensions/Common/AzureModule.cs
index 3a4fa4bb960e..a6da65469b58 100644
--- a/src/Common/Commands.Common/Common/AzureModule.cs
+++ b/src/Common/Azure.Common.Extensions/Common/AzureModule.cs
@@ -12,7 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common
+namespace Microsoft.Azure.Common.Extensions
{
public enum AzureModule
{
diff --git a/src/Common/Commands.Common/Common/ProfileClient.cs b/src/Common/Azure.Common.Extensions/Common/ProfileClient.cs
similarity index 97%
rename from src/Common/Commands.Common/Common/ProfileClient.cs
rename to src/Common/Azure.Common.Extensions/Common/ProfileClient.cs
index 14b612c9babb..968017faa1ae 100644
--- a/src/Common/Commands.Common/Common/ProfileClient.cs
+++ b/src/Common/Azure.Common.Extensions/Common/ProfileClient.cs
@@ -12,21 +12,21 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Authentication;
+using Microsoft.Azure.Common.Extensions.Factories;
+using Microsoft.Azure.Common.Extensions.Interfaces;
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.Azure.Common.Extensions.Properties;
+using Microsoft.Azure.Subscriptions;
+using Microsoft.WindowsAzure;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Security;
using System.Security.Cryptography.X509Certificates;
-using Microsoft.Azure.Subscriptions;
-using Microsoft.WindowsAzure.Commands.Common.Factories;
-using Microsoft.WindowsAzure.Commands.Common.Interfaces;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
-using Microsoft.WindowsAzure.Commands.Utilities.Common;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
-
-namespace Microsoft.WindowsAzure.Commands.Common
+
+namespace Microsoft.Azure.Common.Extensions
{
///
/// Convenience client for azure profile and subscriptions.
@@ -59,13 +59,13 @@ private void WriteWarningMessage(string message)
private static void UpgradeProfile()
{
- string oldProfileFilePath = System.IO.Path.Combine(AzurePowerShell.ProfileDirectory, AzurePowerShell.OldProfileFile);
- string oldProfileFilePathBackup = System.IO.Path.Combine(AzurePowerShell.ProfileDirectory, AzurePowerShell.OldProfileFileBackup);
- string newProfileFilePath = System.IO.Path.Combine(AzurePowerShell.ProfileDirectory, AzurePowerShell.ProfileFile);
+ string oldProfileFilePath = System.IO.Path.Combine(AzureSession.ProfileDirectory, AzureSession.OldProfileFile);
+ string oldProfileFilePathBackup = System.IO.Path.Combine(AzureSession.ProfileDirectory, AzureSession.OldProfileFileBackup);
+ string newProfileFilePath = System.IO.Path.Combine(AzureSession.ProfileDirectory, AzureSession.ProfileFile);
if (DataStore.FileExists(oldProfileFilePath))
{
- string oldProfilePath = System.IO.Path.Combine(AzurePowerShell.ProfileDirectory,
- AzurePowerShell.OldProfileFile);
+ string oldProfilePath = System.IO.Path.Combine(AzureSession.ProfileDirectory,
+ AzureSession.OldProfileFile);
try
{
@@ -137,7 +137,7 @@ static ProfileClient()
}
public ProfileClient()
- : this(System.IO.Path.Combine(AzurePowerShell.ProfileDirectory, AzurePowerShell.ProfileFile))
+ : this(System.IO.Path.Combine(AzureSession.ProfileDirectory, AzureSession.ProfileFile))
{
}
@@ -835,9 +835,9 @@ private AzureEnvironment MergeEnvironmentProperties(AzureEnvironment environment
{
throw new ArgumentNullException("environment1");
}
- if (environment1.Name != environment2.Name)
+ if (!string.Equals(environment1.Name, environment2.Name, StringComparison.InvariantCultureIgnoreCase))
{
- throw new ArgumentException("Subscription Ids do not match.");
+ throw new ArgumentException("Environment names do not match.");
}
AzureEnvironment mergedEnvironment = new AzureEnvironment
{
@@ -863,9 +863,9 @@ private AzureAccount MergeAccountProperties(AzureAccount account1, AzureAccount
{
throw new ArgumentNullException("account1");
}
- if (account1.Id != account2.Id)
+ if (!string.Equals(account1.Id, account2.Id, StringComparison.InvariantCultureIgnoreCase))
{
- throw new ArgumentException("Account1 Ids do not match.");
+ throw new ArgumentException("Account Ids do not match.");
}
if (account1.Type != account2.Type)
{
@@ -918,7 +918,7 @@ private IEnumerable ListResourceManagerSubscriptions(AzureAcc
var tenantAccount = new AzureAccount();
CopyAccount(account, tenantAccount);
var tenantToken = AzureSession.AuthenticationFactory.Authenticate(tenantAccount, environment, tenant, password, ShowDialog.Never);
- if (tenantAccount.Id == account.Id)
+ if (string.Equals(tenantAccount.Id, account.Id, StringComparison.InvariantCultureIgnoreCase))
{
tenantAccount = account;
}
@@ -984,7 +984,7 @@ private IEnumerable ListServiceManagementSubscriptions(AzureA
var tenantAccount = new AzureAccount();
CopyAccount(account, tenantAccount);
var tenantToken = AzureSession.AuthenticationFactory.Authenticate(tenantAccount, environment, tenant, password, ShowDialog.Never);
- if (tenantAccount.Id == account.Id)
+ if (string.Equals(tenantAccount.Id, account.Id, StringComparison.InvariantCultureIgnoreCase))
{
tenantAccount = account;
}
diff --git a/src/Common/Commands.Common/Common/ProfileData.cs b/src/Common/Azure.Common.Extensions/Common/ProfileData.cs
similarity index 98%
rename from src/Common/Commands.Common/Common/ProfileData.cs
rename to src/Common/Azure.Common.Extensions/Common/ProfileData.cs
index 2ce005aefbaa..049994759314 100644
--- a/src/Common/Commands.Common/Common/ProfileData.cs
+++ b/src/Common/Azure.Common.Extensions/Common/ProfileData.cs
@@ -12,14 +12,14 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common
+namespace Microsoft.Azure.Common.Extensions
{
///
/// This class provides the representation of
diff --git a/src/Common/Commands.Common/Common/PublishSettingsImporter.cs b/src/Common/Azure.Common.Extensions/Common/PublishSettingsImporter.cs
similarity index 94%
rename from src/Common/Commands.Common/Common/PublishSettingsImporter.cs
rename to src/Common/Azure.Common.Extensions/Common/PublishSettingsImporter.cs
index 22d6825b56ea..2cad598b3159 100644
--- a/src/Common/Commands.Common/Common/PublishSettingsImporter.cs
+++ b/src/Common/Azure.Common.Extensions/Common/PublishSettingsImporter.cs
@@ -12,17 +12,16 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.Azure.Common.Extensions.XmlSchema;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Xml.Serialization;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema;
-using Microsoft.WindowsAzure.Commands.Common;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common
+namespace Microsoft.Azure.Common.Extensions
{
///
/// Class that handles loading publishsettings files
diff --git a/src/Common/Commands.Common/Common/RequiredResourceLookup.cs b/src/Common/Azure.Common.Extensions/Common/RequiredResourceLookup.cs
similarity index 95%
rename from src/Common/Commands.Common/Common/RequiredResourceLookup.cs
rename to src/Common/Azure.Common.Extensions/Common/RequiredResourceLookup.cs
index cef962cafef4..4219493b6d8d 100644
--- a/src/Common/Commands.Common/Common/RequiredResourceLookup.cs
+++ b/src/Common/Azure.Common.Extensions/Common/RequiredResourceLookup.cs
@@ -12,10 +12,10 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
-using System.Collections.Generic;
using Microsoft.WindowsAzure.Common;
+using System.Collections.Generic;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common
+namespace Microsoft.Azure.Common.Extensions
{
///
/// This class handles mapping management client types
@@ -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/Commands.Common/Common/Validate.cs b/src/Common/Azure.Common.Extensions/Common/Validate.cs
similarity index 98%
rename from src/Common/Commands.Common/Common/Validate.cs
rename to src/Common/Azure.Common.Extensions/Common/Validate.cs
index 0d3c74ae25c4..ec24bdea9120 100644
--- a/src/Common/Commands.Common/Common/Validate.cs
+++ b/src/Common/Azure.Common.Extensions/Common/Validate.cs
@@ -12,6 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Properties;
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
@@ -19,9 +20,8 @@
using System.Net;
using System.Net.Sockets;
using System.Runtime.InteropServices;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common
+namespace Microsoft.Azure.Common.Extensions
{
public static class Validate
{
diff --git a/src/Common/Commands.Common/Factories/AuthenticationFactory.cs b/src/Common/Azure.Common.Extensions/Factories/AuthenticationFactory.cs
similarity index 83%
rename from src/Common/Commands.Common/Factories/AuthenticationFactory.cs
rename to src/Common/Azure.Common.Extensions/Factories/AuthenticationFactory.cs
index a897f4fe3b7e..b50f7dd74574 100644
--- a/src/Common/Commands.Common/Factories/AuthenticationFactory.cs
+++ b/src/Common/Azure.Common.Extensions/Factories/AuthenticationFactory.cs
@@ -12,14 +12,15 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Authentication;
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.Azure.Common.Extensions.Properties;
+using Microsoft.WindowsAzure;
using System;
using System.Linq;
using System.Security;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
-namespace Microsoft.WindowsAzure.Commands.Common.Factories
+namespace Microsoft.Azure.Common.Extensions.Factories
{
public class AuthenticationFactory : IAuthenticationFactory
{
@@ -31,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)
@@ -76,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/Commands.Common/Factories/ClientFactory.cs b/src/Common/Azure.Common.Extensions/Factories/ClientFactory.cs
similarity index 80%
rename from src/Common/Commands.Common/Factories/ClientFactory.cs
rename to src/Common/Azure.Common.Extensions/Factories/ClientFactory.cs
index f5aca60d816d..2211cc141c13 100644
--- a/src/Common/Commands.Common/Factories/ClientFactory.cs
+++ b/src/Common/Azure.Common.Extensions/Factories/ClientFactory.cs
@@ -12,21 +12,30 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.Azure.Common.Extensions.Properties;
+using Microsoft.WindowsAzure;
+using Microsoft.WindowsAzure.Common;
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
-using Microsoft.WindowsAzure.Commands.Utilities.Common;
-using Microsoft.WindowsAzure.Common;
+using System.Net.Http.Headers;
-namespace Microsoft.WindowsAzure.Commands.Common.Factories
+namespace Microsoft.Azure.Common.Extensions.Factories
{
public class ClientFactory : IClientFactory
{
private static readonly char[] uriPathSeparator = { '/' };
+ private Dictionary actions;
+
+ public ClientFactory()
+ {
+ actions = new Dictionary();
+ UserAgents = new List();
+ }
+
public virtual TClient CreateClient(AzureContext context, AzureEnvironment.Endpoint endpoint) where TClient : ServiceClient
{
if (context == null)
@@ -35,7 +44,14 @@ public virtual TClient CreateClient(AzureContext context, AzureEnvironm
}
SubscriptionCloudCredentials creds = AzureSession.AuthenticationFactory.GetSubscriptionCloudCredentials(context);
- return CreateCustomClient(creds, context.Environment.GetEndpointAsUri(endpoint));
+ TClient client = CreateCustomClient(creds, context.Environment.GetEndpointAsUri(endpoint));
+
+ foreach (IClientAction action in actions.Values)
+ {
+ action.Apply(client, context, endpoint);
+ }
+
+ return client;
}
///
@@ -79,8 +95,12 @@ public virtual TClient CreateCustomClient(params object[] parameters) w
}
TClient client = (TClient)constructor.Invoke(parameters);
- client.UserAgent.Add(ApiConstants.UserAgentValue);
-
+
+ foreach (ProductInfoHeaderValue userAgent in UserAgents)
+ {
+ client.UserAgent.Add(userAgent);
+ }
+
return client;
}
@@ -136,5 +156,21 @@ public static HttpClientHandler CreateHttpClientHandler(string endpoint, ICreden
// Our handler is ready
return clientHandler;
}
+
+ public void AddAction(IClientAction action)
+ {
+ action.ClientFactory = this;
+ actions[action.GetType()] = action;
+ }
+
+ public void RemoveAction(Type actionType)
+ {
+ if (actions.ContainsKey(actionType))
+ {
+ actions.Remove(actionType);
+ }
+ }
+
+ public List UserAgents { get; set; }
}
}
diff --git a/src/Common/Commands.Common/Interfaces/IAuthenticationFactory.cs b/src/Common/Azure.Common.Extensions/Interfaces/IAuthenticationFactory.cs
similarity index 79%
rename from src/Common/Commands.Common/Interfaces/IAuthenticationFactory.cs
rename to src/Common/Azure.Common.Extensions/Interfaces/IAuthenticationFactory.cs
index 9e052857a09d..77740ca0debe 100644
--- a/src/Common/Commands.Common/Interfaces/IAuthenticationFactory.cs
+++ b/src/Common/Azure.Common.Extensions/Interfaces/IAuthenticationFactory.cs
@@ -12,11 +12,12 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Authentication;
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.WindowsAzure;
using System.Security;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
-namespace Microsoft.WindowsAzure.Commands.Common
+namespace Microsoft.Azure.Common.Extensions
{
public interface IAuthenticationFactory
{
@@ -28,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/Commands.Common/Interfaces/IClientFactory.cs b/src/Common/Azure.Common.Extensions/Interfaces/IClientFactory.cs
similarity index 82%
rename from src/Common/Commands.Common/Interfaces/IClientFactory.cs
rename to src/Common/Azure.Common.Extensions/Interfaces/IClientFactory.cs
index 00aad993a9a9..87ad3c5810e6 100644
--- a/src/Common/Commands.Common/Interfaces/IClientFactory.cs
+++ b/src/Common/Azure.Common.Extensions/Interfaces/IClientFactory.cs
@@ -12,13 +12,15 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
-using System.Net;
-using System.Net.Http;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Common;
using System;
+using System.Collections.Generic;
+using System.Net;
+using System.Net.Http;
+using System.Net.Http.Headers;
-namespace Microsoft.WindowsAzure.Commands.Common
+namespace Microsoft.Azure.Common.Extensions
{
public interface IClientFactory
{
@@ -31,5 +33,11 @@ public interface IClientFactory
HttpClient CreateHttpClient(string endpoint, ICredentials credentials);
HttpClient CreateHttpClient(string endpoint, HttpMessageHandler effectiveHandler);
+
+ void AddAction(IClientAction action);
+
+ void RemoveAction(Type actionType);
+
+ List UserAgents { get; set; }
}
}
diff --git a/src/Common/Commands.Common/Interfaces/IDataStore.cs b/src/Common/Azure.Common.Extensions/Interfaces/IDataStore.cs
similarity index 97%
rename from src/Common/Commands.Common/Interfaces/IDataStore.cs
rename to src/Common/Azure.Common.Extensions/Interfaces/IDataStore.cs
index 0e1133b55d89..7d38fea53699 100644
--- a/src/Common/Commands.Common/Interfaces/IDataStore.cs
+++ b/src/Common/Azure.Common.Extensions/Interfaces/IDataStore.cs
@@ -16,7 +16,7 @@
using System.Security.Cryptography.X509Certificates;
using System.Text;
-namespace Microsoft.WindowsAzure.Commands.Common.Interfaces
+namespace Microsoft.Azure.Common.Extensions.Interfaces
{
public interface IDataStore
{
diff --git a/src/Common/Commands.Common/Interfaces/IProfileSerializer.cs b/src/Common/Azure.Common.Extensions/Interfaces/IProfileSerializer.cs
similarity index 89%
rename from src/Common/Commands.Common/Interfaces/IProfileSerializer.cs
rename to src/Common/Azure.Common.Extensions/Interfaces/IProfileSerializer.cs
index e9e296e95e6a..f48d90657495 100644
--- a/src/Common/Commands.Common/Interfaces/IProfileSerializer.cs
+++ b/src/Common/Azure.Common.Extensions/Interfaces/IProfileSerializer.cs
@@ -12,10 +12,10 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Models;
using System.Collections.Generic;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-namespace Microsoft.WindowsAzure.Commands.Common.Interfaces
+namespace Microsoft.Azure.Common.Extensions.Interfaces
{
public interface IProfileSerializer
{
diff --git a/src/Common/Azure.Common.Extensions/MSSharedLibKey.snk b/src/Common/Azure.Common.Extensions/MSSharedLibKey.snk
new file mode 100644
index 000000000000..695f1b38774e
Binary files /dev/null and b/src/Common/Azure.Common.Extensions/MSSharedLibKey.snk differ
diff --git a/src/Common/Commands.Common/Models/AzureAccount.Methods.cs b/src/Common/Azure.Common.Extensions/Models/AzureAccount.Methods.cs
similarity index 97%
rename from src/Common/Commands.Common/Models/AzureAccount.Methods.cs
rename to src/Common/Azure.Common.Extensions/Models/AzureAccount.Methods.cs
index 42601b42c788..a5a3a4a61cb3 100644
--- a/src/Common/Commands.Common/Models/AzureAccount.Methods.cs
+++ b/src/Common/Azure.Common.Extensions/Models/AzureAccount.Methods.cs
@@ -12,13 +12,13 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
-using Microsoft.WindowsAzure.Commands.Common.Utilities;
+using Microsoft.Azure.Common.Extensions.Utilities;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
-namespace Microsoft.WindowsAzure.Commands.Common.Models
+namespace Microsoft.Azure.Common.Extensions.Models
{
public partial class AzureAccount
{
diff --git a/src/Common/Commands.Common/Models/AzureAccount.cs b/src/Common/Azure.Common.Extensions/Models/AzureAccount.cs
similarity index 96%
rename from src/Common/Commands.Common/Models/AzureAccount.cs
rename to src/Common/Azure.Common.Extensions/Models/AzureAccount.cs
index 74f8db7fe841..3c6c819dc169 100644
--- a/src/Common/Commands.Common/Models/AzureAccount.cs
+++ b/src/Common/Azure.Common.Extensions/Models/AzureAccount.cs
@@ -14,7 +14,7 @@
using System.Collections.Generic;
-namespace Microsoft.WindowsAzure.Commands.Common.Models
+namespace Microsoft.Azure.Common.Extensions.Models
{
public partial class AzureAccount
{
diff --git a/src/Common/Commands.Common/Models/AzureContext.cs b/src/Common/Azure.Common.Extensions/Models/AzureContext.cs
similarity index 94%
rename from src/Common/Commands.Common/Models/AzureContext.cs
rename to src/Common/Azure.Common.Extensions/Models/AzureContext.cs
index 06a21ba3ff41..5c01b60312b3 100644
--- a/src/Common/Commands.Common/Models/AzureContext.cs
+++ b/src/Common/Azure.Common.Extensions/Models/AzureContext.cs
@@ -12,7 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
-namespace Microsoft.WindowsAzure.Commands.Common.Models
+namespace Microsoft.Azure.Common.Extensions.Models
{
public class AzureContext
{
diff --git a/src/Common/Commands.Common/Models/AzureEnvironment.Methods.cs b/src/Common/Azure.Common.Extensions/Models/AzureEnvironment.Methods.cs
similarity index 81%
rename from src/Common/Commands.Common/Models/AzureEnvironment.Methods.cs
rename to src/Common/Azure.Common.Extensions/Models/AzureEnvironment.Methods.cs
index a4d3d0fee987..a9934d8fd173 100644
--- a/src/Common/Commands.Common/Models/AzureEnvironment.Methods.cs
+++ b/src/Common/Azure.Common.Extensions/Models/AzureEnvironment.Methods.cs
@@ -12,13 +12,12 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Properties;
+using Microsoft.Azure.Common.Extensions.Utilities;
using System;
using System.Collections.Generic;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
-using Microsoft.WindowsAzure.Commands.Common.Utilities;
-using Microsoft.WindowsAzure.Commands.Utilities.Common;
-namespace Microsoft.WindowsAzure.Commands.Common.Models
+namespace Microsoft.Azure.Common.Extensions.Models
{
public partial class AzureEnvironment
{
@@ -97,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 },
}
}
},
@@ -255,7 +256,7 @@ public string GetPublishSettingsFileUrlWithRealm(string realm = null)
public enum Endpoint
{
- ActiveDirectoryServiceEndpointResourceId,
+ ActiveDirectoryServiceEndpointResourceId,
AdTenant,
@@ -278,6 +279,58 @@ public enum Endpoint
Graph,
TrafficManagerDnsSuffix,
+
+ AzureKeyVaultDnsSuffix,
+
+ AzureKeyVaultServiceEndpointResourceId,
}
}
+
+ 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";
+ }
}
diff --git a/src/Common/Commands.Common/Models/AzureEnvironment.cs b/src/Common/Azure.Common.Extensions/Models/AzureEnvironment.cs
similarity index 95%
rename from src/Common/Commands.Common/Models/AzureEnvironment.cs
rename to src/Common/Azure.Common.Extensions/Models/AzureEnvironment.cs
index 085bad1fe55c..53d81ea10856 100644
--- a/src/Common/Commands.Common/Models/AzureEnvironment.cs
+++ b/src/Common/Azure.Common.Extensions/Models/AzureEnvironment.cs
@@ -14,7 +14,7 @@
using System.Collections.Generic;
-namespace Microsoft.WindowsAzure.Commands.Common.Models
+namespace Microsoft.Azure.Common.Extensions.Models
{
public partial class AzureEnvironment
{
diff --git a/src/Common/Commands.Common/Models/AzureProfile.cs b/src/Common/Azure.Common.Extensions/Models/AzureProfile.cs
similarity index 91%
rename from src/Common/Commands.Common/Models/AzureProfile.cs
rename to src/Common/Azure.Common.Extensions/Models/AzureProfile.cs
index f7f8c77c80fd..519dde9279fc 100644
--- a/src/Common/Commands.Common/Models/AzureProfile.cs
+++ b/src/Common/Azure.Common.Extensions/Models/AzureProfile.cs
@@ -12,22 +12,20 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Interfaces;
+using Microsoft.WindowsAzure.Common.Internals;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
-using System.Security.Cryptography.X509Certificates;
-using Microsoft.WindowsAzure.Commands.Common.Interfaces;
-using Microsoft.WindowsAzure.Common.Internals;
-using System.Diagnostics;
-namespace Microsoft.WindowsAzure.Commands.Common.Models
+namespace Microsoft.Azure.Common.Extensions.Models
{
public sealed class AzureProfile
{
private IDataStore store;
private string profilePath;
- private string tokenCacheFile = Path.Combine(AzurePowerShell.ProfileDirectory, AzurePowerShell.TokenCacheFile);
+ private string tokenCacheFile = Path.Combine(AzureSession.ProfileDirectory, AzureSession.TokenCacheFile);
public AzureProfile()
{
@@ -51,9 +49,9 @@ private void Load()
Accounts = new Dictionary(StringComparer.InvariantCultureIgnoreCase);
ProfileLoadErrors = new List();
- if (!store.DirectoryExists(AzurePowerShell.ProfileDirectory))
+ if (!store.DirectoryExists(AzureSession.ProfileDirectory))
{
- store.CreateDirectory(AzurePowerShell.ProfileDirectory);
+ store.CreateDirectory(AzureSession.ProfileDirectory);
}
if (store.FileExists(profilePath))
diff --git a/src/Common/Commands.Common/Models/AzureSubscription.Methods.cs b/src/Common/Azure.Common.Extensions/Models/AzureSubscription.Methods.cs
similarity index 94%
rename from src/Common/Commands.Common/Models/AzureSubscription.Methods.cs
rename to src/Common/Azure.Common.Extensions/Models/AzureSubscription.Methods.cs
index 18025d898ad7..030f50f89f4b 100644
--- a/src/Common/Commands.Common/Models/AzureSubscription.Methods.cs
+++ b/src/Common/Azure.Common.Extensions/Models/AzureSubscription.Methods.cs
@@ -12,10 +12,10 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Utilities;
using System.Collections.Generic;
-using Microsoft.WindowsAzure.Commands.Common.Utilities;
-namespace Microsoft.WindowsAzure.Commands.Common.Models
+namespace Microsoft.Azure.Common.Extensions.Models
{
public partial class AzureSubscription
{
diff --git a/src/Common/Commands.Common/Models/AzureSubscription.cs b/src/Common/Azure.Common.Extensions/Models/AzureSubscription.cs
similarity index 97%
rename from src/Common/Commands.Common/Models/AzureSubscription.cs
rename to src/Common/Azure.Common.Extensions/Models/AzureSubscription.cs
index 252100c4906a..b5d6cb6b73d6 100644
--- a/src/Common/Commands.Common/Models/AzureSubscription.cs
+++ b/src/Common/Azure.Common.Extensions/Models/AzureSubscription.cs
@@ -15,7 +15,7 @@
using System;
using System.Collections.Generic;
-namespace Microsoft.WindowsAzure.Commands.Common.Models
+namespace Microsoft.Azure.Common.Extensions.Models
{
public partial class AzureSubscription
{
diff --git a/src/Common/Commands.Common/Models/DiskDataStore.cs b/src/Common/Azure.Common.Extensions/Models/DiskDataStore.cs
similarity index 96%
rename from src/Common/Commands.Common/Models/DiskDataStore.cs
rename to src/Common/Azure.Common.Extensions/Models/DiskDataStore.cs
index 8cc5e29b9e00..c42bb358538b 100644
--- a/src/Common/Commands.Common/Models/DiskDataStore.cs
+++ b/src/Common/Azure.Common.Extensions/Models/DiskDataStore.cs
@@ -12,15 +12,14 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Interfaces;
+using Microsoft.Azure.Common.Extensions.Properties;
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using System.Text;
-using Microsoft.WindowsAzure.Commands.Common.Interfaces;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
-using Microsoft.WindowsAzure.Commands.Utilities.Common;
-namespace Microsoft.WindowsAzure.Commands.Common.Models
+namespace Microsoft.Azure.Common.Extensions.Models
{
public class DiskDataStore : IDataStore
{
diff --git a/src/Common/Azure.Common.Extensions/Models/IClientAction.cs b/src/Common/Azure.Common.Extensions/Models/IClientAction.cs
new file mode 100644
index 000000000000..e05ff570b7b0
--- /dev/null
+++ b/src/Common/Azure.Common.Extensions/Models/IClientAction.cs
@@ -0,0 +1,25 @@
+// ----------------------------------------------------------------------------------
+//
+// 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.WindowsAzure.Common;
+
+namespace Microsoft.Azure.Common.Extensions.Models
+{
+ public interface IClientAction
+ {
+ IClientFactory ClientFactory { get; set; }
+
+ void Apply(TClient client, AzureContext context, AzureEnvironment.Endpoint endpoint) where TClient : ServiceClient;
+ }
+}
diff --git a/src/Common/Commands.Common/Models/JsonProfileSerializer.cs b/src/Common/Azure.Common.Extensions/Models/JsonProfileSerializer.cs
similarity index 96%
rename from src/Common/Commands.Common/Models/JsonProfileSerializer.cs
rename to src/Common/Azure.Common.Extensions/Models/JsonProfileSerializer.cs
index ea0a6a272f59..29ddb1c1400c 100644
--- a/src/Common/Commands.Common/Models/JsonProfileSerializer.cs
+++ b/src/Common/Azure.Common.Extensions/Models/JsonProfileSerializer.cs
@@ -12,14 +12,14 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Interfaces;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
-using Microsoft.WindowsAzure.Commands.Common.Interfaces;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-namespace Microsoft.WindowsAzure.Commands.Common.Models
+namespace Microsoft.Azure.Common.Extensions.Models
{
public class JsonProfileSerializer : IProfileSerializer
{
diff --git a/src/Common/Commands.Common/Common/AzurePowerShellClientFactory.cs b/src/Common/Azure.Common.Extensions/Models/RPRegistrationAction.cs
similarity index 70%
rename from src/Common/Commands.Common/Common/AzurePowerShellClientFactory.cs
rename to src/Common/Azure.Common.Extensions/Models/RPRegistrationAction.cs
index 4f0c95b568d9..1d8cc5ce350a 100644
--- a/src/Common/Commands.Common/Common/AzurePowerShellClientFactory.cs
+++ b/src/Common/Azure.Common.Extensions/Models/RPRegistrationAction.cs
@@ -13,38 +13,18 @@
// ----------------------------------------------------------------------------------
using Microsoft.Azure.Management.Resources;
-using Microsoft.WindowsAzure.Commands.Common.Factories;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Common;
-using System.Net;
-using System.Linq;
-using System.Collections.Generic;
using Microsoft.WindowsAzure.Management;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Net;
-namespace Microsoft.WindowsAzure.Commands.Common.Common
+namespace Microsoft.Azure.Common.Extensions.Models
{
- public class AzurePowerShellClientFactory : ClientFactory
+ public class RPRegistrationAction : IClientAction
{
- public override TClient CreateClient(AzureContext context, AzureEnvironment.Endpoint endpoint)
- {
- TClient client = base.CreateClient(context, endpoint);
-
- if (!TestMockSupport.RunningMocked)
- {
- if (endpoint == AzureEnvironment.Endpoint.ServiceManagement)
- {
- RegisterServiceManagementProviders(context);
- }
- else if (endpoint == AzureEnvironment.Endpoint.ResourceManager)
- {
- RegisterResourceManagerProviders(context);
- }
- }
-
- return client;
- }
-
///
/// Registers resource providers for Sparta.
///
@@ -59,7 +39,7 @@ private void RegisterResourceManagerProviders(AzureContext context) where T :
if (unregisteredProviders.Count > 0)
{
- using (var client = CreateCustomClient(creds, context.Environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager)))
+ using (var client = ClientFactory.CreateCustomClient(creds, context.Environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager)))
{
foreach (string provider in unregisteredProviders)
{
@@ -119,24 +99,40 @@ private void RegisterServiceManagementProviders(AzureContext context) where T
}
}
- private void UpdateSubscriptionRegisteredProviders(AzureSubscription subscription, List providers)
+ private void UpdateSubscriptionRegisteredProviders(AzureSubscription subscription, List providers)
+ {
+ if (providers != null && providers.Count > 0)
+ {
+ subscription.SetOrAppendProperty(AzureSubscription.Property.RegisteredResourceProviders,
+ providers.ToArray());
+ try
+ {
+ ProfileClient profileClient = new ProfileClient();
+ profileClient.AddOrSetSubscription(subscription);
+ profileClient.Profile.Save();
+ }
+ catch (KeyNotFoundException)
+ {
+ // if using a subscription data file, do not write registration to disk
+ // long term solution is using -Profile parameter
+ }
+ }
+ }
+
+ public void Apply(TClient client, AzureContext context, AzureEnvironment.Endpoint endpoint) where TClient : ServiceClient
{
- if (providers != null && providers.Count > 0)
- {
- subscription.SetOrAppendProperty(AzureSubscription.Property.RegisteredResourceProviders,
- providers.ToArray());
- try
- {
- ProfileClient profileClient = new ProfileClient();
- profileClient.AddOrSetSubscription(subscription);
- profileClient.Profile.Save();
- }
- catch (KeyNotFoundException)
- {
- // if using a subscription data file, do not write registration to disk
- // long term solution is using -Profile parameter
- }
- }
+ Debug.Assert(ClientFactory != null);
+
+ if (endpoint == AzureEnvironment.Endpoint.ServiceManagement)
+ {
+ RegisterServiceManagementProviders(context);
+ }
+ else if (endpoint == AzureEnvironment.Endpoint.ResourceManager)
+ {
+ RegisterResourceManagerProviders(context);
+ }
}
+
+ public IClientFactory ClientFactory { get; set; }
}
}
diff --git a/src/Common/Commands.Common/Models/XmlProfileSerializer.cs b/src/Common/Azure.Common.Extensions/Models/XmlProfileSerializer.cs
similarity index 95%
rename from src/Common/Commands.Common/Models/XmlProfileSerializer.cs
rename to src/Common/Azure.Common.Extensions/Models/XmlProfileSerializer.cs
index eed2616eacd9..f7290949bbfd 100644
--- a/src/Common/Commands.Common/Models/XmlProfileSerializer.cs
+++ b/src/Common/Azure.Common.Extensions/Models/XmlProfileSerializer.cs
@@ -12,6 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Interfaces;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -19,11 +20,8 @@
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
-using System.Xml;
-using Microsoft.WindowsAzure.Commands.Common.Interfaces;
-using Microsoft.WindowsAzure.Commands.Utilities.Common;
-namespace Microsoft.WindowsAzure.Commands.Common.Models
+namespace Microsoft.Azure.Common.Extensions.Models
{
public class XmlProfileSerializer : IProfileSerializer
{
diff --git a/src/Common/Azure.Common.Extensions/Properties/AssemblyInfo.cs b/src/Common/Azure.Common.Extensions/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000000..3883f62d91bf
--- /dev/null
+++ b/src/Common/Azure.Common.Extensions/Properties/AssemblyInfo.cs
@@ -0,0 +1,28 @@
+// ----------------------------------------------------------------------------------
+//
+// 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.InteropServices;
+
+[assembly: AssemblyTitle("Azure Common Extensions")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("Microsoft Azure Libraries")]
+[assembly: AssemblyCopyright("Copyright © Microsoft")]
+
+[assembly: ComVisible(false)]
+[assembly: CLSCompliant(false)]
+[assembly: Guid("4f3ab2e4-cc7a-43ac-bb15-f481fcf94d58")]
+[assembly: AssemblyVersion("0.1.0")]
+[assembly: AssemblyFileVersion("0.1.0")]
\ No newline at end of file
diff --git a/src/Common/Azure.Common.Extensions/Properties/Resources.Designer.cs b/src/Common/Azure.Common.Extensions/Properties/Resources.Designer.cs
new file mode 100644
index 000000000000..4254763922a4
--- /dev/null
+++ b/src/Common/Azure.Common.Extensions/Properties/Resources.Designer.cs
@@ -0,0 +1,4272 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.34014
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Microsoft.Azure.Common.Extensions.Properties
+{
+
+
+ ///
+ /// 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()]
+ public 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)]
+ public static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.Azure.Common.Extensions.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)]
+ public static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The remote server returned an error: (401) Unauthorized..
+ ///
+ public static string AccessDeniedExceptionMessage {
+ get {
+ return ResourceManager.GetString("AccessDeniedExceptionMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Account id doesn't match one in subscription..
+ ///
+ public static string AccountIdDoesntMatchSubscription {
+ get {
+ return ResourceManager.GetString("AccountIdDoesntMatchSubscription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Account "{0}" has been added..
+ ///
+ public static string AddAccountAdded {
+ get {
+ return ResourceManager.GetString("AddAccountAdded", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to To switch to a different subscription, please use Select-AzureSubscription..
+ ///
+ public static string AddAccountChangeSubscription {
+ get {
+ return ResourceManager.GetString("AddAccountChangeSubscription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Skipping external tenant {0}, because you are using a guest or a foreign principal object identity. In order to access this tenant, please run Add-AzureAccount without "-Credential"..
+ ///
+ public static string AddAccountNonInteractiveGuestOrFpo {
+ get {
+ return ResourceManager.GetString("AddAccountNonInteractiveGuestOrFpo", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Subscription "{0}" is selected as the default subscription..
+ ///
+ public static string AddAccountShowDefaultSubscription {
+ get {
+ return ResourceManager.GetString("AddAccountShowDefaultSubscription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to To view all the subscriptions, please use Get-AzureSubscription..
+ ///
+ public static string AddAccountViewSubscriptions {
+ get {
+ return ResourceManager.GetString("AddAccountViewSubscriptions", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Add-On {0} is created successfully..
+ ///
+ public static string AddOnCreatedMessage {
+ get {
+ return ResourceManager.GetString("AddOnCreatedMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Add-on name {0} is already used..
+ ///
+ public static string AddOnNameAlreadyUsed {
+ get {
+ return ResourceManager.GetString("AddOnNameAlreadyUsed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Add-On {0} not found..
+ ///
+ public static string AddOnNotFound {
+ get {
+ return ResourceManager.GetString("AddOnNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Add-on {0} is removed successfully..
+ ///
+ public static string AddOnRemovedMessage {
+ get {
+ return ResourceManager.GetString("AddOnRemovedMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Add-On {0} is updated successfully..
+ ///
+ public static string AddOnUpdatedMessage {
+ get {
+ return ResourceManager.GetString("AddOnUpdatedMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Role has been created at {0}\{1}..
+ ///
+ public static string AddRoleMessageCreate {
+ get {
+ return ResourceManager.GetString("AddRoleMessageCreate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Role has been created at {0}\{1}. For easy access to Microsoft Azure services from your application code, install the Microsoft Azure client library for Node.js by running ‘npm install azure’..
+ ///
+ public static string AddRoleMessageCreateNode {
+ get {
+ return ResourceManager.GetString("AddRoleMessageCreateNode", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Role has been created at {0}\{1}. For easy access to Microsoft Azure services from your application code, install the Microsoft Azure client library for PHP by running "pear Azure/Azure"..
+ ///
+ public static string AddRoleMessageCreatePHP {
+ get {
+ return ResourceManager.GetString("AddRoleMessageCreatePHP", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Role has been created at {0}\{1}. For easy access to Microsoft Azure services from your application code, install the Microsoft Azure client library for Python by running "pip Azure"..
+ ///
+ public static string AddRoleMessageCreatePython {
+ get {
+ return ResourceManager.GetString("AddRoleMessageCreatePython", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unable to set role permissions. Please give the 'Network Service' user 'Read & execute' and 'Modify' permissions to the role folder, or run PowerShell as an Administrator.
+ ///
+ public static string AddRoleMessageInsufficientPermissions {
+ get {
+ return ResourceManager.GetString("AddRoleMessageInsufficientPermissions", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to A role name '{0}' already exists.
+ ///
+ public static string AddRoleMessageRoleExists {
+ get {
+ return ResourceManager.GetString("AddRoleMessageRoleExists", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Profile {0} already has an endpoint with name {1}.
+ ///
+ public static string AddTrafficManagerEndpointFailed {
+ get {
+ return ResourceManager.GetString("AddTrafficManagerEndpointFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Windows Azure Powershell\.
+ ///
+ public static string AzureDirectory {
+ get {
+ return ResourceManager.GetString("AzureDirectory", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Windows Azure Powershell.
+ ///
+ public static string AzureDirectoryName {
+ get {
+ return ResourceManager.GetString("AzureDirectoryName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Emulator.
+ ///
+ public static string AzureEmulatorDirectory {
+ get {
+ return ResourceManager.GetString("AzureEmulatorDirectory", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Azure Emulator is not installed and is required.
+ ///
+ public static string AzureEmulatorNotInstalledMessage {
+ get {
+ return ResourceManager.GetString("AzureEmulatorNotInstalledMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Azure Emulator\emulator.
+ ///
+ public static string AzureEmulatorPathPortion {
+ get {
+ return ResourceManager.GetString("AzureEmulatorPathPortion", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to SOFTWARE\Microsoft\Windows Azure Emulator.
+ ///
+ public static string AzureEmulatorRegistryKey {
+ get {
+ return ResourceManager.GetString("AzureEmulatorRegistryKey", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Azure service management error
+ ///{0}.
+ ///
+ public static string AzureException_WrapExistingError_DetailedErrorFormat {
+ get {
+ return ResourceManager.GetString("AzureException_WrapExistingError_DetailedErrorFormat", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to https://manage.Azure.com.
+ ///
+ public static string AzurePortalUrl {
+ get {
+ return ResourceManager.GetString("AzurePortalUrl", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to AZURE_PORTAL_URL.
+ ///
+ public static string AzurePortalUrlEnv {
+ get {
+ return ResourceManager.GetString("AzurePortalUrlEnv", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Azure SDK\{0}\.
+ ///
+ public static string AzureSdkDirectory {
+ get {
+ return ResourceManager.GetString("AzureSdkDirectory", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to InstallPath.
+ ///
+ public static string AzureSdkInstallPathRegistryKeyValue {
+ get {
+ return ResourceManager.GetString("AzureSdkInstallPathRegistryKeyValue", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to SOFTWARE\Microsoft\Microsoft SDKs\ServiceHosting.
+ ///
+ public static string AzureSdkRegistryKeyName {
+ get {
+ return ResourceManager.GetString("AzureSdkRegistryKeyName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The installed Azure SDK version is not supported. Make sure you version is between {0} and {1} inclusive.
+ ///
+ public static string AzureSdkVersionNotSupported {
+ get {
+ return ResourceManager.GetString("AzureSdkVersionNotSupported", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Azure Authoring Tools are not installed and are required. Installation of Azure SDK for .NET is recommended with Microsoft Web Platform Installer (PI) available at http://www.microsoft.com/web/downloads/platform.aspx..
+ ///
+ public static string AzureToolsNotInstalledMessage {
+ get {
+ return ResourceManager.GetString("AzureToolsNotInstalledMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Base Uri was empty..
+ ///
+ public static string BaseUriEmpty {
+ get {
+ return ResourceManager.GetString("BaseUriEmpty", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} begin processing without ParameterSet..
+ ///
+ public static string BeginProcessingWithoutParameterSetLog {
+ get {
+ return ResourceManager.GetString("BeginProcessingWithoutParameterSetLog", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} begin processing with ParameterSet '{1}'..
+ ///
+ public static string BeginProcessingWithParameterSetLog {
+ get {
+ return ResourceManager.GetString("BeginProcessingWithParameterSetLog", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Blob with the name {0} already exists in the account..
+ ///
+ public static string BlobAlreadyExistsInTheAccount {
+ get {
+ return ResourceManager.GetString("BlobAlreadyExistsInTheAccount", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to https://{0}.blob.core.windows.net/.
+ ///
+ public static string BlobEndpointUri {
+ get {
+ return ResourceManager.GetString("BlobEndpointUri", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to AZURE_BLOBSTORAGE_TEMPLATE.
+ ///
+ public static string BlobEndpointUriEnv {
+ get {
+ return ResourceManager.GetString("BlobEndpointUriEnv", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Memcache is already enabled for role '{0}'..
+ ///
+ public static string CacheAlreadyEnabledMessage {
+ get {
+ return ResourceManager.GetString("CacheAlreadyEnabledMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to <configuration>
+ /// <configSections>
+ /// <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
+ /// </configSections>
+ /// <dataCacheClients>
+ /// <tracing sinkType="DiagnosticSink" traceLevel="Error" />
+ /// <dataCacheClient name="DefaultShimConfig" useLegacyProtocol="false">
+ /// <autoDiscover isEnabled="true" identifier="$RoleName$" />
+ /// </dataCacheClient>
+ /// </da [rest of string was truncated]";.
+ ///
+ public static string CacheAutoDiscoveryConfig {
+ get {
+ return ResourceManager.GetString("CacheAutoDiscoveryConfig", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Microsoft.Azure.Plugins.Caching.ClientDiagnosticLevel.
+ ///
+ public static string CacheClientDiagnosticLevelAssemblyName {
+ get {
+ return ResourceManager.GetString("CacheClientDiagnosticLevelAssemblyName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to DiagnosticStore.
+ ///
+ public static string CacheDiagnosticStoreName {
+ get {
+ return ResourceManager.GetString("CacheDiagnosticStoreName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Please upgrade the cache runtime of role '{0}' to '{1}' using Set-AzureServiceProjectRole -RoleName {0} -Runtime Cache -Version {1}.
+ ///
+ public static string CacheMismatchMessage {
+ get {
+ return ResourceManager.GetString("CacheMismatchMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to CACHERUNTIMEURL.
+ ///
+ public static string CacheRuntimeUrl {
+ get {
+ return ResourceManager.GetString("CacheRuntimeUrl", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to cache.
+ ///
+ public static string CacheRuntimeValue {
+ get {
+ return ResourceManager.GetString("CacheRuntimeValue", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to CacheRuntimeVersion.
+ ///
+ public static string CacheRuntimeVersionKey {
+ get {
+ return ResourceManager.GetString("CacheRuntimeVersionKey", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Resources\Scaffolding\Cache.
+ ///
+ public static string CacheScaffolding {
+ get {
+ return ResourceManager.GetString("CacheScaffolding", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to setup_cache.cmd > cache_log.txt.
+ ///
+ public static string CacheStartupCommand {
+ get {
+ return ResourceManager.GetString("CacheStartupCommand", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Installing caching version {0} for Role '{1}' (the caching version locally installed is: {2}).
+ ///
+ public static string CacheVersionWarningText {
+ get {
+ return ResourceManager.GetString("CacheVersionWarningText", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Microsoft.Azure.Plugins.Caching.CacheSizePercentage.
+ ///
+ public static string CachingCacheSizePercentageSettingName {
+ get {
+ return ResourceManager.GetString("CachingCacheSizePercentageSettingName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Microsoft.Azure.Plugins.Caching.ConfigStoreConnectionString.
+ ///
+ public static string CachingConfigStoreConnectionStringSettingName {
+ get {
+ return ResourceManager.GetString("CachingConfigStoreConnectionStringSettingName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}.
+ ///
+ public static string CachingConfigStoreConnectionStringSettingValue {
+ get {
+ return ResourceManager.GetString("CachingConfigStoreConnectionStringSettingValue", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Caching.
+ ///
+ public static string CachingModuleName {
+ get {
+ return ResourceManager.GetString("CachingModuleName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Cannot find {0} with name {1}..
+ ///
+ public static string CannotFind {
+ get {
+ return ResourceManager.GetString("CannotFind", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Deployment for service {0} with {1} slot doesn't exist.
+ ///
+ public static string CannotFindDeployment {
+ get {
+ return ResourceManager.GetString("CannotFindDeployment", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Can't find valid Microsoft Azure role in current directory {0}.
+ ///
+ public static string CannotFindRole {
+ get {
+ return ResourceManager.GetString("CannotFindRole", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to service {0} configuration file (ServiceConfiguration.Cloud.cscfg) is either null or doesn't exist.
+ ///
+ public static string CannotFindServiceConfigurationFile {
+ get {
+ return ResourceManager.GetString("CannotFindServiceConfigurationFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid service path! Cannot locate ServiceDefinition.csdef in current folder or parent folders..
+ ///
+ public static string CannotFindServiceRoot {
+ get {
+ return ResourceManager.GetString("CannotFindServiceRoot", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The subscription named {0} with id {1} is not currently imported. You must import this subscription before it can be updated..
+ ///
+ public static string CannotUpdateUnknownSubscription {
+ get {
+ return ResourceManager.GetString("CannotUpdateUnknownSubscription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to ManagementCertificate.
+ ///
+ public static string CertificateElementName {
+ get {
+ return ResourceManager.GetString("CertificateElementName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to certificate.pfx.
+ ///
+ public static string CertificateFileName {
+ get {
+ return ResourceManager.GetString("CertificateFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Certificate imported into CurrentUser\My\{0}.
+ ///
+ public static string CertificateImportedMessage {
+ get {
+ return ResourceManager.GetString("CertificateImportedMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No certificate was found in the certificate store with thumbprint {0}.
+ ///
+ public static string CertificateNotFoundInStore {
+ get {
+ return ResourceManager.GetString("CertificateNotFoundInStore", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No certificate was found in the certificate store with thumbprint {0}.
+ ///
+ public static string CertificateNotFoundInStore1 {
+ get {
+ return ResourceManager.GetString("CertificateNotFoundInStore1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Your account does not have access to the private key for certificate {0}.
+ ///
+ public static string CertificatePrivateKeyAccessError {
+ get {
+ return ResourceManager.GetString("CertificatePrivateKeyAccessError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} {1} deployment for {2} service.
+ ///
+ public static string ChangeDeploymentStateWaitMessage {
+ get {
+ return ResourceManager.GetString("ChangeDeploymentStateWaitMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Cloud service {0} is in {1} state..
+ ///
+ public static string ChangeDeploymentStatusCompleteMessage {
+ get {
+ return ResourceManager.GetString("ChangeDeploymentStatusCompleteMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Changing/Removing public environment '{0}' is not allowed..
+ ///
+ public static string ChangePublicEnvironmentMessage {
+ get {
+ return ResourceManager.GetString("ChangePublicEnvironmentMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Service {0} is set to value {1}.
+ ///
+ public static string ChangeSettingsElementMessage {
+ get {
+ return ResourceManager.GetString("ChangeSettingsElementMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Changing public environment is not supported..
+ ///
+ public static string ChangingDefaultEnvironmentNotSupported {
+ get {
+ return ResourceManager.GetString("ChangingDefaultEnvironmentNotSupported", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Choose which publish settings file to use:.
+ ///
+ public static string ChoosePublishSettingsFile {
+ get {
+ return ResourceManager.GetString("ChoosePublishSettingsFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Microsoft.Azure.Plugins.Caching.ClientDiagnosticLevel.
+ ///
+ public static string ClientDiagnosticLevelName {
+ get {
+ return ResourceManager.GetString("ClientDiagnosticLevelName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 1.
+ ///
+ public static string ClientDiagnosticLevelValue {
+ get {
+ return ResourceManager.GetString("ClientDiagnosticLevelValue", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to cloud_package.cspkg.
+ ///
+ public static string CloudPackageFileName {
+ get {
+ return ResourceManager.GetString("CloudPackageFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to ServiceConfiguration.Cloud.cscfg.
+ ///
+ public static string CloudServiceConfigurationFileName {
+ get {
+ return ResourceManager.GetString("CloudServiceConfigurationFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Add-ons for {0}.
+ ///
+ public static string CloudServiceDescription {
+ get {
+ return ResourceManager.GetString("CloudServiceDescription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Communication could not be established. This could be due to an invalid subscription ID. Note that subscription IDs are case sensitive..
+ ///
+ public static string CommunicationCouldNotBeEstablished {
+ get {
+ return ResourceManager.GetString("CommunicationCouldNotBeEstablished", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Complete.
+ ///
+ public static string CompleteMessage {
+ get {
+ return ResourceManager.GetString("CompleteMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Complete.
+ ///
+ public static string CompleteMessage1 {
+ get {
+ return ResourceManager.GetString("CompleteMessage1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to config.json.
+ ///
+ public static string ConfigurationFileName {
+ get {
+ return ResourceManager.GetString("ConfigurationFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to VirtualMachine creation failed..
+ ///
+ public static string CreateFailedErrorMessage {
+ get {
+ return ResourceManager.GetString("CreateFailedErrorMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Creating the website failed. If this is the first website for this subscription, please create it using the management portal instead..
+ ///
+ public static string CreateWebsiteFailed {
+ get {
+ return ResourceManager.GetString("CreateWebsiteFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to -Credential parameter can only be used with Organization ID credentials. For more information, please refer to http://go.microsoft.com/fwlink/?linkid=331007&clcid=0x409 for more information about the difference between an organizational account and a Microsoft account..
+ ///
+ public static string CredentialOrganizationIdMessage {
+ get {
+ return ResourceManager.GetString("CredentialOrganizationIdMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core.
+ ///
+ public static string DataCacheClientsType {
+ get {
+ return ResourceManager.GetString("DataCacheClientsType", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to //blobcontainer[@datacenter='{0}'].
+ ///
+ public static string DatacenterBlobQuery {
+ get {
+ return ResourceManager.GetString("DatacenterBlobQuery", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Setting: {0} as the default and current subscription. To view other subscriptions use Get-AzureSubscription.
+ ///
+ public static string DefaultAndCurrentSubscription {
+ get {
+ return ResourceManager.GetString("DefaultAndCurrentSubscription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to none.
+ ///
+ public static string DefaultFileVersion {
+ get {
+ return ResourceManager.GetString("DefaultFileVersion", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to There are no hostnames which could be used for validation..
+ ///
+ public static string DefaultHostnamesValidation {
+ get {
+ return ResourceManager.GetString("DefaultHostnamesValidation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 8080.
+ ///
+ public static string DefaultPort {
+ get {
+ return ResourceManager.GetString("DefaultPort", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 1000.
+ ///
+ public static string DefaultRoleCachingInMB {
+ get {
+ return ResourceManager.GetString("DefaultRoleCachingInMB", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Auto.
+ ///
+ public static string DefaultUpgradeMode {
+ get {
+ return ResourceManager.GetString("DefaultUpgradeMode", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 80.
+ ///
+ public static string DefaultWebPort {
+ get {
+ return ResourceManager.GetString("DefaultWebPort", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Delete.
+ ///
+ public static string Delete {
+ get {
+ return ResourceManager.GetString("Delete", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The {0} slot for service {1} is already in {2} state.
+ ///
+ public static string DeploymentAlreadyInState {
+ get {
+ return ResourceManager.GetString("DeploymentAlreadyInState", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The deployment in {0} slot for service {1} is removed.
+ ///
+ public static string DeploymentRemovedMessage {
+ get {
+ return ResourceManager.GetString("DeploymentRemovedMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Microsoft.Azure.Plugins.Caching.DiagnosticLevel.
+ ///
+ public static string DiagnosticLevelName {
+ get {
+ return ResourceManager.GetString("DiagnosticLevelName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 1.
+ ///
+ public static string DiagnosticLevelValue {
+ get {
+ return ResourceManager.GetString("DiagnosticLevelValue", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The key to add already exists in the dictionary..
+ ///
+ public static string DictionaryAddAlreadyContainsKey {
+ get {
+ return ResourceManager.GetString("DictionaryAddAlreadyContainsKey", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The array index cannot be less than zero..
+ ///
+ public static string DictionaryCopyToArrayIndexLessThanZero {
+ get {
+ return ResourceManager.GetString("DictionaryCopyToArrayIndexLessThanZero", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The supplied array does not have enough room to contain the copied elements..
+ ///
+ public static string DictionaryCopyToArrayTooShort {
+ get {
+ return ResourceManager.GetString("DictionaryCopyToArrayTooShort", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The provided dns {0} doesn't exist.
+ ///
+ public static string DnsDoesNotExist {
+ get {
+ return ResourceManager.GetString("DnsDoesNotExist", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Microsoft Azure Certificate.
+ ///
+ public static string EnableRemoteDesktop_FriendlyCertificateName {
+ get {
+ return ResourceManager.GetString("EnableRemoteDesktop_FriendlyCertificateName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Endpoint can't be retrieved for storage account.
+ ///
+ public static string EndPointNotFoundForBlobStorage {
+ get {
+ return ResourceManager.GetString("EndPointNotFoundForBlobStorage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} end processing..
+ ///
+ public static string EndProcessingLog {
+ get {
+ return ResourceManager.GetString("EndProcessingLog", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to To use Active Directory authentication, you must configure the ActiveDirectoryEndpoint, ActiveDirectoryTenantId, and ActiveDirectorServiceEndpointResourceId for environment of '{0}'. You can configure these properties for this environment using the Set-AzureEnvironment cmdlet..
+ ///
+ public static string EnvironmentDoesNotSupportActiveDirectory {
+ get {
+ return ResourceManager.GetString("EnvironmentDoesNotSupportActiveDirectory", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The environment '{0}' already exists..
+ ///
+ public static string EnvironmentExists {
+ get {
+ return ResourceManager.GetString("EnvironmentExists", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Environment name doesn't match one in subscription..
+ ///
+ public static string EnvironmentNameDoesntMatchSubscription {
+ get {
+ return ResourceManager.GetString("EnvironmentNameDoesntMatchSubscription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The environment name '{0}' is not found..
+ ///
+ public static string EnvironmentNotFound {
+ get {
+ return ResourceManager.GetString("EnvironmentNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to environments.xml.
+ ///
+ public static string EnvironmentsFileName {
+ get {
+ return ResourceManager.GetString("EnvironmentsFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Error creating VirtualMachine.
+ ///
+ public static string ErrorCreatingVirtualMachine {
+ get {
+ return ResourceManager.GetString("ErrorCreatingVirtualMachine", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unable to download available runtimes for location '{0}'.
+ ///
+ public static string ErrorRetrievingRuntimesForLocation {
+ get {
+ return ResourceManager.GetString("ErrorRetrievingRuntimesForLocation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Error updating VirtualMachine.
+ ///
+ public static string ErrorUpdatingVirtualMachine {
+ get {
+ return ResourceManager.GetString("ErrorUpdatingVirtualMachine", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Your Microsoft Azure credential in the Windows PowerShell session has expired. Please use Add-AzureAccount to login again..
+ ///
+ public static string ExpiredRefreshToken {
+ get {
+ return ResourceManager.GetString("ExpiredRefreshToken", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Job Id {0} failed. Error: {1}, ExceptionDetails: {2}.
+ ///
+ public static string FailedJobErrorMessage {
+ get {
+ return ResourceManager.GetString("FailedJobErrorMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The HTTP request was forbidden with client authentication scheme 'Anonymous'..
+ ///
+ public static string FirstPurchaseErrorMessage {
+ get {
+ return ResourceManager.GetString("FirstPurchaseErrorMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to This add-on requires you to purchase the first instance through the Microsoft Azure Portal. Subsequent purchases can be performed through PowerShell..
+ ///
+ public static string FirstPurchaseMessage {
+ get {
+ return ResourceManager.GetString("FirstPurchaseMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Operation Status:.
+ ///
+ public static string GatewayOperationStatus {
+ get {
+ return ResourceManager.GetString("GatewayOperationStatus", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Resources\Scaffolding\General.
+ ///
+ public static string GeneralScaffolding {
+ get {
+ return ResourceManager.GetString("GeneralScaffolding", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Getting all available Microsoft Azure Add-Ons, this may take few minutes....
+ ///
+ public static string GetAllAddOnsWaitMessage {
+ get {
+ return ResourceManager.GetString("GetAllAddOnsWaitMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Name{0}Primary Key{0}Seconday Key.
+ ///
+ public static string GetStorageKeysHeader {
+ get {
+ return ResourceManager.GetString("GetStorageKeysHeader", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Git not found. Please install git and place it in your command line path..
+ ///
+ public static string GitNotFound {
+ get {
+ return ResourceManager.GetString("GitNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Could not find publish settings. Please run Import-AzurePublishSettingsFile..
+ ///
+ public static string GlobalSettingsManager_Load_PublishSettingsNotFound {
+ get {
+ return ResourceManager.GetString("GlobalSettingsManager_Load_PublishSettingsNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Could not find publish settings. Please run Import-AzurePublishSettingsFile..
+ ///
+ public static string GlobalSettingsManager_Load_PublishSettingsNotFound1 {
+ get {
+ return ResourceManager.GetString("GlobalSettingsManager_Load_PublishSettingsNotFound1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to iisnode.dll.
+ ///
+ public static string IISNodeDll {
+ get {
+ return ResourceManager.GetString("IISNodeDll", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to iisnode.
+ ///
+ public static string IISNodeEngineKey {
+ get {
+ return ResourceManager.GetString("IISNodeEngineKey", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to iisnode-dev\\release\\x64.
+ ///
+ public static string IISNodePath {
+ get {
+ return ResourceManager.GetString("IISNodePath", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to iisnode.
+ ///
+ public static string IISNodeRuntimeValue {
+ get {
+ return ResourceManager.GetString("IISNodeRuntimeValue", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Installing IISNode version {0} in Azure for WebRole '{1}' (the version locally installed is: {2}).
+ ///
+ public static string IISNodeVersionWarningText {
+ get {
+ return ResourceManager.GetString("IISNodeVersionWarningText", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Illegal characters in path..
+ ///
+ public static string IllegalPath {
+ get {
+ return ResourceManager.GetString("IllegalPath", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Illegal characters in path..
+ ///
+ public static string IllegalPath1 {
+ get {
+ return ResourceManager.GetString("IllegalPath1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Internal Server Error.
+ ///
+ public static string InternalServerErrorMessage {
+ get {
+ return ResourceManager.GetString("InternalServerErrorMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Cannot enable memcach protocol on a cache worker role {0}..
+ ///
+ public static string InvalidCacheRoleName {
+ get {
+ return ResourceManager.GetString("InvalidCacheRoleName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid certificate format. Publish settings may be corrupted. Use Get-AzurePublishSettingsFile to download updated settings.
+ ///
+ public static string InvalidCertificate {
+ get {
+ return ResourceManager.GetString("InvalidCertificate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid certificate format. Publish settings may be corrupted. Use Get-AzurePublishSettingsFile to download updated settings.
+ ///
+ public static string InvalidCertificate1 {
+ get {
+ return ResourceManager.GetString("InvalidCertificate1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid certificate format..
+ ///
+ public static string InvalidCertificateSingle {
+ get {
+ return ResourceManager.GetString("InvalidCertificateSingle", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The provided configuration path is invalid or doesn't exist.
+ ///
+ public static string InvalidConfigPath {
+ get {
+ return ResourceManager.GetString("InvalidConfigPath", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The country name is invalid, please use a valid two character country code, as described in ISO 3166-1 alpha-2..
+ ///
+ public static string InvalidCountryNameMessage {
+ get {
+ return ResourceManager.GetString("InvalidCountryNameMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Credential type invalid, only handles '{0}'.
+ ///
+ public static string InvalidCredentialType {
+ get {
+ return ResourceManager.GetString("InvalidCredentialType", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No current subscription has been designated. Use Select-AzureSubscription -Current <subscriptionName> to set the current subscription..
+ ///
+ public static string InvalidCurrentSubscription {
+ get {
+ return ResourceManager.GetString("InvalidCurrentSubscription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The ID of the current subscription is invalid. Use Set-AzureSubscription to fix the subscription ID or use Select-AzureSubscription to use a different subscription..
+ ///
+ public static string InvalidCurrentSubscriptionId {
+ get {
+ return ResourceManager.GetString("InvalidCurrentSubscriptionId", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The management certificate of the current subscription is invalid. Use Set-AzureSubscription to fix the management certificate or use Select-AzureSubscription to use a different subscription..
+ ///
+ public static string InvalidCurrentSuscriptionCertificate {
+ get {
+ return ResourceManager.GetString("InvalidCurrentSuscriptionCertificate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No default subscription has been designated. Use Select-AzureSubscription -Default <subscriptionName> to set the default subscription..
+ ///
+ public static string InvalidDefaultSubscription {
+ get {
+ return ResourceManager.GetString("InvalidDefaultSubscription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Deployment with {0} does not exist.
+ ///
+ public static string InvalidDeployment {
+ get {
+ return ResourceManager.GetString("InvalidDeployment", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The deployment slot name {0} is invalid. Slot name must be either "Staging" or "Production"..
+ ///
+ public static string InvalidDeploymentSlot {
+ get {
+ return ResourceManager.GetString("InvalidDeploymentSlot", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to "{0}" is an invalid DNS name for {1}.
+ ///
+ public static string InvalidDnsName {
+ get {
+ return ResourceManager.GetString("InvalidDnsName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid service endpoint..
+ ///
+ public static string InvalidEndpoint {
+ get {
+ return ResourceManager.GetString("InvalidEndpoint", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The provided file in {0} must be have {1} extension.
+ ///
+ public static string InvalidFileExtension {
+ get {
+ return ResourceManager.GetString("InvalidFileExtension", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to File {0} has invalid characters.
+ ///
+ public static string InvalidFileName {
+ get {
+ return ResourceManager.GetString("InvalidFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to You must create your git publishing credentials using the Microsoft Azure portal.
+ ///Please follow these steps in the portal:
+ ///1. On the left side open "Web Sites"
+ ///2. Click on any website
+ ///3. Choose "Setup Git Publishing" or "Reset deployment credentials"
+ ///4. Back in the PowerShell window, rerun this command by typing "New-AzureWebSite {site name} -Git -PublishingUsername {username}.
+ ///
+ public static string InvalidGitCredentials {
+ get {
+ return ResourceManager.GetString("InvalidGitCredentials", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The value {0} provided is not a valid GUID. Please provide a valid GUID..
+ ///
+ public static string InvalidGuid {
+ get {
+ return ResourceManager.GetString("InvalidGuid", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The specified hostname does not exist. Please specify a valid hostname for the site..
+ ///
+ public static string InvalidHostnameValidation {
+ get {
+ return ResourceManager.GetString("InvalidHostnameValidation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Role {0} instances must be greater than or equal 0 and less than or equal 20.
+ ///
+ public static string InvalidInstancesCount {
+ get {
+ return ResourceManager.GetString("InvalidInstancesCount", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to There was an error creating your webjob. Please make sure that the script is in the root folder of the zip file..
+ ///
+ public static string InvalidJobFile {
+ get {
+ return ResourceManager.GetString("InvalidJobFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Cannot create instance of management client type {0}. It does not have the expected constructor..
+ ///
+ public static string InvalidManagementClientType {
+ get {
+ return ResourceManager.GetString("InvalidManagementClientType", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Could not download a valid runtime manifest, Please check your internet connection and try again..
+ ///
+ public static string InvalidManifestError {
+ get {
+ return ResourceManager.GetString("InvalidManifestError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The account {0} was not found. Please specify a valid account name..
+ ///
+ public static string InvalidMediaServicesAccount {
+ get {
+ return ResourceManager.GetString("InvalidMediaServicesAccount", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The provided name "{0}" does not match the service bus namespace naming rules..
+ ///
+ public static string InvalidNamespaceName {
+ get {
+ return ResourceManager.GetString("InvalidNamespaceName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Value cannot be null. Parameter name: '{0}'.
+ ///
+ public static string InvalidNullArgument {
+ get {
+ return ResourceManager.GetString("InvalidNullArgument", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} is invalid or empty.
+ ///
+ public static string InvalidOrEmptyArgumentMessage {
+ get {
+ return ResourceManager.GetString("InvalidOrEmptyArgumentMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The provided package path is invalid or doesn't exist.
+ ///
+ public static string InvalidPackagePath {
+ get {
+ return ResourceManager.GetString("InvalidPackagePath", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to '{0}' is an invalid parameter set name..
+ ///
+ public static string InvalidParameterSetName {
+ get {
+ return ResourceManager.GetString("InvalidParameterSetName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} doesn't exist in {1} or you've not passed valid value for it.
+ ///
+ public static string InvalidPath {
+ get {
+ return ResourceManager.GetString("InvalidPath", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Path {0} has invalid characters.
+ ///
+ public static string InvalidPathName {
+ get {
+ return ResourceManager.GetString("InvalidPathName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The provided publish settings file {0} has invalid content. Please get valid by running cmdlet Get-AzurePublishSettingsFile.
+ ///
+ public static string InvalidPublishSettingsSchema {
+ get {
+ return ResourceManager.GetString("InvalidPublishSettingsSchema", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The provided publish settings file {0} has invalid content. Please get valid by running cmdlet Get-AzurePublishSettingsFile.
+ ///
+ public static string InvalidPublishSettingsSchema1 {
+ get {
+ return ResourceManager.GetString("InvalidPublishSettingsSchema1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The provided role name "{0}" has invalid characters.
+ ///
+ public static string InvalidRoleNameMessage {
+ get {
+ return ResourceManager.GetString("InvalidRoleNameMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to A valid name for the service root folder is required.
+ ///
+ public static string InvalidRootNameMessage {
+ get {
+ return ResourceManager.GetString("InvalidRootNameMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} is not a recognized runtime type.
+ ///
+ public static string InvalidRuntimeError {
+ get {
+ return ResourceManager.GetString("InvalidRuntimeError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to A valid language is required.
+ ///
+ public static string InvalidScaffoldingLanguageArg {
+ get {
+ return ResourceManager.GetString("InvalidScaffoldingLanguageArg", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No subscription is currently selected. Use Select-Subscription to activate a subscription..
+ ///
+ public static string InvalidSelectedSubscription {
+ get {
+ return ResourceManager.GetString("InvalidSelectedSubscription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The provided location "{0}" does not exist in the available locations use Get-AzureSBLocation for listing available locations..
+ ///
+ public static string InvalidServiceBusLocation {
+ get {
+ return ResourceManager.GetString("InvalidServiceBusLocation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Please provide a service name or run this command from inside a service project directory..
+ ///
+ public static string InvalidServiceName {
+ get {
+ return ResourceManager.GetString("InvalidServiceName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to You must provide valid value for {0}.
+ ///
+ public static string InvalidServiceSettingElement {
+ get {
+ return ResourceManager.GetString("InvalidServiceSettingElement", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to You must provide valid value for {0}.
+ ///
+ public static string InvalidServiceSettingElement1 {
+ get {
+ return ResourceManager.GetString("InvalidServiceSettingElement1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to settings.json is invalid or doesn't exist.
+ ///
+ public static string InvalidServiceSettingMessage {
+ get {
+ return ResourceManager.GetString("InvalidServiceSettingMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The subscription named '{0}' cannot be found. Use Set-AzureSubscription to initialize the subscription data..
+ ///
+ public static string InvalidSubscription {
+ get {
+ return ResourceManager.GetString("InvalidSubscription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The provided subscription id {0} is not valid.
+ ///
+ public static string InvalidSubscriptionId {
+ get {
+ return ResourceManager.GetString("InvalidSubscriptionId", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Must specify a non-null subscription name..
+ ///
+ public static string InvalidSubscriptionName {
+ get {
+ return ResourceManager.GetString("InvalidSubscriptionName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to A valid subscription name is required. This can be provided using the -Subscription parameter or by setting the subscription via the Set-AzureSubscription cmdlet.
+ ///
+ public static string InvalidSubscriptionNameMessage {
+ get {
+ return ResourceManager.GetString("InvalidSubscriptionNameMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The provided subscriptions file {0} has invalid content..
+ ///
+ public static string InvalidSubscriptionsDataSchema {
+ get {
+ return ResourceManager.GetString("InvalidSubscriptionsDataSchema", 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..
+ ///
+ public static string InvalidSubscriptionState {
+ get {
+ return ResourceManager.GetString("InvalidSubscriptionState", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Role {0} VM size should be ExtraSmall, Small, Medium, Large or ExtraLarge..
+ ///
+ public static string InvalidVMSize {
+ get {
+ return ResourceManager.GetString("InvalidVMSize", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The web job file must have *.zip extension.
+ ///
+ public static string InvalidWebJobFile {
+ get {
+ return ResourceManager.GetString("InvalidWebJobFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Singleton option works for continuous jobs only..
+ ///
+ public static string InvalidWebJobSingleton {
+ get {
+ return ResourceManager.GetString("InvalidWebJobSingleton", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The website {0} was not found. Please specify a valid website name..
+ ///
+ public static string InvalidWebsite {
+ get {
+ return ResourceManager.GetString("InvalidWebsite", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No job for id: {0} was found..
+ ///
+ public static string JobNotFound {
+ get {
+ return ResourceManager.GetString("JobNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to engines.
+ ///
+ public static string JsonEnginesSectionName {
+ get {
+ return ResourceManager.GetString("JsonEnginesSectionName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Scaffolding for this language is not yet supported.
+ ///
+ public static string LanguageScaffoldingIsNotSupported {
+ get {
+ return ResourceManager.GetString("LanguageScaffoldingIsNotSupported", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Link already established.
+ ///
+ public static string LinkAlreadyEstablished {
+ get {
+ return ResourceManager.GetString("LinkAlreadyEstablished", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to local_package.csx.
+ ///
+ public static string LocalPackageFileName {
+ get {
+ return ResourceManager.GetString("LocalPackageFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to ServiceConfiguration.Local.cscfg.
+ ///
+ public static string LocalServiceConfigurationFileName {
+ get {
+ return ResourceManager.GetString("LocalServiceConfigurationFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Looking for {0} deployment for {1} cloud service....
+ ///
+ public static string LookingForDeploymentMessage {
+ get {
+ return ResourceManager.GetString("LookingForDeploymentMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Looking for cloud service {0}....
+ ///
+ public static string LookingForServiceMessage {
+ get {
+ return ResourceManager.GetString("LookingForServiceMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to managementCertificate.pem.
+ ///
+ public static string ManagementCertificateFileName {
+ get {
+ return ResourceManager.GetString("ManagementCertificateFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to ?whr={0}.
+ ///
+ public static string ManagementPortalRealmFormat {
+ get {
+ return ResourceManager.GetString("ManagementPortalRealmFormat", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to //baseuri.
+ ///
+ public static string ManifestBaseUriQuery {
+ get {
+ return ResourceManager.GetString("ManifestBaseUriQuery", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to uri.
+ ///
+ public static string ManifestBlobUriKey {
+ get {
+ return ResourceManager.GetString("ManifestBlobUriKey", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to http://az413943.vo.msecnd.net/node/runtimemanifest_0.7.5.2.xml.
+ ///
+ public static string ManifestUri {
+ get {
+ return ResourceManager.GetString("ManifestUri", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to v2.5.
+ ///
+ public static string MaxSupportAzureSdkVersion {
+ get {
+ return ResourceManager.GetString("MaxSupportAzureSdkVersion", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to memcache_default.
+ ///
+ public static string MemcacheEndpointName {
+ get {
+ return ResourceManager.GetString("MemcacheEndpointName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 11211.
+ ///
+ public static string MemcacheEndpointPort {
+ get {
+ return ResourceManager.GetString("MemcacheEndpointPort", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to v2.5.
+ ///
+ public static string MinSupportAzureSdkVersion {
+ get {
+ return ResourceManager.GetString("MinSupportAzureSdkVersion", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Python 2.7 is not installed. Please install it as well as Django 1.4..
+ ///
+ public static string MissingPythonPreReq {
+ get {
+ return ResourceManager.GetString("MissingPythonPreReq", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Multiple Add-Ons found holding name {0}.
+ ///
+ public static string MultipleAddOnsFoundMessage {
+ get {
+ return ResourceManager.GetString("MultipleAddOnsFoundMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Multiple possible publishing users. Please go to the Portal and use the listed deployment user, or click 'set/reset deployment credentials' to set up a new user account, then reurn this cmdlet and specify PublishingUsername..
+ ///
+ public static string MultiplePublishingUsernames {
+ get {
+ return ResourceManager.GetString("MultiplePublishingUsernames", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The first publish settings file "{0}" is used. If you want to use another file specify the file name..
+ ///
+ public static string MultiplePublishSettingsFilesFoundMessage {
+ get {
+ return ResourceManager.GetString("MultiplePublishSettingsFilesFoundMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Microsoft.Azure.Plugins.Caching.NamedCaches.
+ ///
+ public static string NamedCacheSettingName {
+ get {
+ return ResourceManager.GetString("NamedCacheSettingName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {"caches":[{"name":"default","policy":{"eviction":{"type":0},"expiration":{"defaultTTL":10,"isExpirable":true,"type":1},"serverNotification":{"isEnabled":false}},"secondaries":0}]}.
+ ///
+ public static string NamedCacheSettingValue {
+ get {
+ return ResourceManager.GetString("NamedCacheSettingValue", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to A publishing username is required. Please specify one using the argument PublishingUsername..
+ ///
+ public static string NeedPublishingUsernames {
+ get {
+ return ResourceManager.GetString("NeedPublishingUsernames", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to New Add-On Confirmation.
+ ///
+ public static string NewAddOnConformation {
+ get {
+ return ResourceManager.GetString("NewAddOnConformation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to By typing "Yes", I (a) authorize Microsoft to charge my current payment method on a monthly basis
+ ///for the amount indicated at {0} for {1} until my service is cancelled or terminated, and (b)
+ ///agree to the {2}'s terms of user and privacy statement at {0} and (c) agree to sharing my
+ ///contact information with {2}..
+ ///
+ public static string NewMicrosoftAddOnMessage {
+ get {
+ return ResourceManager.GetString("NewMicrosoftAddOnMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Internal Server Error. This could happen because the namespace name is already used or due to an incorrect location name. Use Get-AzureSBLocation cmdlet to list valid names..
+ ///
+ public static string NewNamespaceErrorMessage {
+ get {
+ return ResourceManager.GetString("NewNamespaceErrorMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to By typing "Yes", I (a) authorize Microsoft to charge my current payment method on a monthly basis
+ ///for the amount indicated at {0} for {1} until my service is cancelled or terminated, and (b)
+ ///acknowledge the offering is provided by {2}, not Microsoft, and agree to {2}'s terms of
+ ///use and privacy statement at {0} and (c) agree to sharing my contact information with {2}..
+ ///
+ public static string NewNonMicrosoftAddOnMessage {
+ get {
+ return ResourceManager.GetString("NewNonMicrosoftAddOnMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Service has been created at {0}.
+ ///
+ public static string NewServiceCreatedMessage {
+ get {
+ return ResourceManager.GetString("NewServiceCreatedMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No.
+ ///
+ public static string No {
+ get {
+ return ResourceManager.GetString("No", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to There is no access token cached for subscription {0}, user id {1}. Use the Add-AzureAccount cmdlet to log in again and get a token for this subscription..
+ ///
+ public static string NoCachedToken {
+ get {
+ return ResourceManager.GetString("NoCachedToken", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The service does not have any cache worker roles, add one first by running cmdlet Add-AzureCacheWorkerRole..
+ ///
+ public static string NoCacheWorkerRoles {
+ get {
+ return ResourceManager.GetString("NoCacheWorkerRoles", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No clouds available.
+ ///
+ public static string NoCloudsAvailable {
+ get {
+ return ResourceManager.GetString("NoCloudsAvailable", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to nodejs.
+ ///
+ public static string NodeDirectory {
+ get {
+ return ResourceManager.GetString("NodeDirectory", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to node.
+ ///
+ public static string NodeEngineKey {
+ get {
+ return ResourceManager.GetString("NodeEngineKey", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to node.exe.
+ ///
+ public static string NodeExe {
+ get {
+ return ResourceManager.GetString("NodeExe", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to There is no default subscription set, please set a default subscription by running Set-AzureSubscription -Default <subscription name>.
+ ///
+ public static string NoDefaultSubscriptionMessage {
+ get {
+ return ResourceManager.GetString("NoDefaultSubscriptionMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Microsoft SDKs\Azure\Nodejs\Nov2011.
+ ///
+ public static string NodeModulesPath {
+ get {
+ return ResourceManager.GetString("NodeModulesPath", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to nodejs.
+ ///
+ public static string NodeProgramFilesFolderName {
+ get {
+ return ResourceManager.GetString("NodeProgramFilesFolderName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to node.
+ ///
+ public static string NodeRuntimeValue {
+ get {
+ return ResourceManager.GetString("NodeRuntimeValue", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Resources\Scaffolding\Node.
+ ///
+ public static string NodeScaffolding {
+ get {
+ return ResourceManager.GetString("NodeScaffolding", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Microsoft.Azure.Commands.CloudService.ScaffoldingResources.Node.
+ ///
+ public static string NodeScaffoldingResources {
+ get {
+ return ResourceManager.GetString("NodeScaffoldingResources", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Installing Node version {0} in Azure for Role '{1}' (the Node version locally installed is: {2}).
+ ///
+ public static string NodeVersionWarningText {
+ get {
+ return ResourceManager.GetString("NodeVersionWarningText", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No, I do not agree.
+ ///
+ public static string NoHint {
+ get {
+ return ResourceManager.GetString("NoHint", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Please connect to internet before executing this cmdlet.
+ ///
+ public static string NoInternetConnection {
+ get {
+ return ResourceManager.GetString("NoInternetConnection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Please connect to internet before executing this cmdlet.
+ ///
+ public static string NoInternetConnection1 {
+ get {
+ return ResourceManager.GetString("NoInternetConnection1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to <NONE>.
+ ///
+ public static string None {
+ get {
+ return ResourceManager.GetString("None", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No publish settings files with extension *.publishsettings are found in the directory "{0}"..
+ ///
+ public static string NoPublishSettingsFilesFoundMessage {
+ get {
+ return ResourceManager.GetString("NoPublishSettingsFilesFoundMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to There is no subscription associated with account {0}..
+ ///
+ public static string NoSubscriptionAddedMessage {
+ get {
+ return ResourceManager.GetString("NoSubscriptionAddedMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to '{0}' must be a cache worker role. Verify that it has proper cache worker role configuration..
+ ///
+ public static string NotCacheWorkerRole {
+ get {
+ return ResourceManager.GetString("NotCacheWorkerRole", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Certificate can't be null..
+ ///
+ public static string NullCertificateMessage {
+ get {
+ return ResourceManager.GetString("NullCertificateMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} could not be null or empty.
+ ///
+ public static string NullObjectMessage {
+ get {
+ return ResourceManager.GetString("NullObjectMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unable to add a null RoleSettings to {0}.
+ ///
+ public static string NullRoleSettingsMessage {
+ get {
+ return ResourceManager.GetString("NullRoleSettingsMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unable to add new role to null service definition.
+ ///
+ public static string NullServiceDefinitionMessage {
+ get {
+ return ResourceManager.GetString("NullServiceDefinitionMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The request offer '{0}' is not found..
+ ///
+ public static string OfferNotFoundMessage {
+ get {
+ return ResourceManager.GetString("OfferNotFoundMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Operation "{0}" failed on VM with ID: {1}.
+ ///
+ public static string OperationFailedErrorMessage {
+ get {
+ return ResourceManager.GetString("OperationFailedErrorMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The REST operation failed with message '{0}' and error code '{1}'.
+ ///
+ public static string OperationFailedMessage {
+ get {
+ return ResourceManager.GetString("OperationFailedMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Job Id {0} did not complete within expected time or it is in Failed/Canceled/Invalid state..
+ ///
+ public static string OperationTimedOutOrError {
+ get {
+ return ResourceManager.GetString("OperationTimedOutOrError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to package.
+ ///
+ public static string Package {
+ get {
+ return ResourceManager.GetString("Package", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Package is created at service root path {0}..
+ ///
+ public static string PackageCreated {
+ get {
+ return ResourceManager.GetString("PackageCreated", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {{
+ /// "author": "",
+ ///
+ /// "name": "{0}",
+ /// "version": "0.0.0",
+ /// "dependencies":{{}},
+ /// "devDependencies":{{}},
+ /// "optionalDependencies": {{}},
+ /// "engines": {{
+ /// "node": "*",
+ /// "iisnode": "*"
+ /// }}
+ ///
+ ///}}
+ ///.
+ ///
+ public static string PackageJsonDefaultFile {
+ get {
+ return ResourceManager.GetString("PackageJsonDefaultFile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to package.json.
+ ///
+ public static string PackageJsonFileName {
+ get {
+ return ResourceManager.GetString("PackageJsonFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Path {0} doesn't exist..
+ ///
+ public static string PathDoesNotExist {
+ get {
+ return ResourceManager.GetString("PathDoesNotExist", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Path for {0} doesn't exist in {1}..
+ ///
+ public static string PathDoesNotExistForElement {
+ get {
+ return ResourceManager.GetString("PathDoesNotExistForElement", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to A value for the Peer Asn has to be provided..
+ ///
+ public static string PeerAsnRequired {
+ get {
+ return ResourceManager.GetString("PeerAsnRequired", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 5.4.0.
+ ///
+ public static string PHPDefaultRuntimeVersion {
+ get {
+ return ResourceManager.GetString("PHPDefaultRuntimeVersion", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to php.
+ ///
+ public static string PhpRuntimeValue {
+ get {
+ return ResourceManager.GetString("PhpRuntimeValue", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Resources\Scaffolding\PHP.
+ ///
+ public static string PHPScaffolding {
+ get {
+ return ResourceManager.GetString("PHPScaffolding", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Microsoft.Azure.Commands.CloudService.ScaffoldingResources.PHP.
+ ///
+ public static string PHPScaffoldingResources {
+ get {
+ return ResourceManager.GetString("PHPScaffoldingResources", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Installing PHP version {0} for Role '{1}' (the PHP version locally installed is: {2}).
+ ///
+ public static string PHPVersionWarningText {
+ get {
+ return ResourceManager.GetString("PHPVersionWarningText", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to You must create your first web site using the Microsoft Azure portal.
+ ///Please follow these steps in the portal:
+ ///1. At the bottom of the page, click on New > Web Site > Quick Create
+ ///2. Type {0} in the URL field
+ ///3. Click on "Create Web Site"
+ ///4. Once the site has been created, click on the site name
+ ///5. Click on "Set up Git publishing" or "Reset deployment credentials" and setup a publishing username and password. Use those credentials for all new websites you create..
+ ///
+ public static string PortalInstructions {
+ get {
+ return ResourceManager.GetString("PortalInstructions", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 6. Back in the console window, rerun this command by typing "New-AzureWebsite <site name> -Git".
+ ///
+ public static string PortalInstructionsGit {
+ get {
+ return ResourceManager.GetString("PortalInstructionsGit", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to A value for the Primary Peer Subnet has to be provided..
+ ///
+ public static string PrimaryPeerSubnetRequired {
+ get {
+ return ResourceManager.GetString("PrimaryPeerSubnetRequired", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Promotion code can be used only when updating to a new plan..
+ ///
+ public static string PromotionCodeWithCurrentPlanMessage {
+ get {
+ return ResourceManager.GetString("PromotionCodeWithCurrentPlanMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Service not published at user request..
+ ///
+ public static string PublishAbortedAtUserRequest {
+ get {
+ return ResourceManager.GetString("PublishAbortedAtUserRequest", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Complete..
+ ///
+ public static string PublishCompleteMessage {
+ get {
+ return ResourceManager.GetString("PublishCompleteMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Connecting....
+ ///
+ public static string PublishConnectingMessage {
+ get {
+ return ResourceManager.GetString("PublishConnectingMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Created Deployment ID: {0}..
+ ///
+ public static string PublishCreatedDeploymentMessage {
+ get {
+ return ResourceManager.GetString("PublishCreatedDeploymentMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Created hosted service '{0}'..
+ ///
+ public static string PublishCreatedServiceMessage {
+ get {
+ return ResourceManager.GetString("PublishCreatedServiceMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Created Website URL: {0}..
+ ///
+ public static string PublishCreatedWebsiteMessage {
+ get {
+ return ResourceManager.GetString("PublishCreatedWebsiteMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Creating....
+ ///
+ public static string PublishCreatingServiceMessage {
+ get {
+ return ResourceManager.GetString("PublishCreatingServiceMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Initializing....
+ ///
+ public static string PublishInitializingMessage {
+ get {
+ return ResourceManager.GetString("PublishInitializingMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to busy.
+ ///
+ public static string PublishInstanceStatusBusy {
+ get {
+ return ResourceManager.GetString("PublishInstanceStatusBusy", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to creating the virtual machine.
+ ///
+ public static string PublishInstanceStatusCreating {
+ get {
+ return ResourceManager.GetString("PublishInstanceStatusCreating", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Instance {0} of role {1} is {2}..
+ ///
+ public static string PublishInstanceStatusMessage {
+ get {
+ return ResourceManager.GetString("PublishInstanceStatusMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to ready.
+ ///
+ public static string PublishInstanceStatusReady {
+ get {
+ return ResourceManager.GetString("PublishInstanceStatusReady", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Preparing deployment for {0} with Subscription ID: {1}....
+ ///
+ public static string PublishPreparingDeploymentMessage {
+ get {
+ return ResourceManager.GetString("PublishPreparingDeploymentMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Publishing {0} to Microsoft Azure. This may take several minutes....
+ ///
+ public static string PublishServiceStartMessage {
+ get {
+ return ResourceManager.GetString("PublishServiceStartMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to publish settings.
+ ///
+ public static string PublishSettings {
+ get {
+ return ResourceManager.GetString("PublishSettings", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Azure.
+ ///
+ public static string PublishSettingsElementName {
+ get {
+ return ResourceManager.GetString("PublishSettingsElementName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to .PublishSettings.
+ ///
+ public static string PublishSettingsFileExtention {
+ get {
+ return ResourceManager.GetString("PublishSettingsFileExtention", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to publishSettings.xml.
+ ///
+ public static string PublishSettingsFileName {
+ get {
+ return ResourceManager.GetString("PublishSettingsFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &whr={0}.
+ ///
+ public static string PublishSettingsFileRealmFormat {
+ get {
+ return ResourceManager.GetString("PublishSettingsFileRealmFormat", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Publish settings imported.
+ ///
+ public static string PublishSettingsSetSuccessfully {
+ get {
+ return ResourceManager.GetString("PublishSettingsSetSuccessfully", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to AZURE_PUBLISHINGPROFILE_URL.
+ ///
+ public static string PublishSettingsUrlEnv {
+ get {
+ return ResourceManager.GetString("PublishSettingsUrlEnv", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Starting....
+ ///
+ public static string PublishStartingMessage {
+ get {
+ return ResourceManager.GetString("PublishStartingMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Upgrading....
+ ///
+ public static string PublishUpgradingMessage {
+ get {
+ return ResourceManager.GetString("PublishUpgradingMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Uploading Package to storage service {0}....
+ ///
+ public static string PublishUploadingPackageMessage {
+ get {
+ return ResourceManager.GetString("PublishUploadingPackageMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Verifying storage account '{0}'....
+ ///
+ public static string PublishVerifyingStorageMessage {
+ get {
+ return ResourceManager.GetString("PublishVerifyingStorageMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Resources\Scaffolding\Python.
+ ///
+ public static string PythonScaffolding {
+ get {
+ return ResourceManager.GetString("PythonScaffolding", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Replace current deployment with '{0}' Id ?.
+ ///
+ public static string RedeployCommit {
+ get {
+ return ResourceManager.GetString("RedeployCommit", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to regenerate key?.
+ ///
+ public static string RegenerateKeyWarning {
+ get {
+ return ResourceManager.GetString("RegenerateKeyWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Generate new key..
+ ///
+ public static string RegenerateKeyWhatIfMessage {
+ get {
+ return ResourceManager.GetString("RegenerateKeyWhatIfMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to remove account '{0}'?.
+ ///
+ public static string RemoveAccountConfirmation {
+ get {
+ return ResourceManager.GetString("RemoveAccountConfirmation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing account.
+ ///
+ public static string RemoveAccountMessage {
+ get {
+ return ResourceManager.GetString("RemoveAccountMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Remove Add-On Confirmation.
+ ///
+ public static string RemoveAddOnConformation {
+ get {
+ return ResourceManager.GetString("RemoveAddOnConformation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to If you delete this add-on, your data may be deleted and the operation may not be undone. You may have to purchase it again from the Microsoft Azure Store to use it. The price of the add-on may not be refunded. Are you sure you want to delete this add-on? Enter “Yes” to confirm..
+ ///
+ public static string RemoveAddOnMessage {
+ get {
+ return ResourceManager.GetString("RemoveAddOnMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Remove-AzureBGPPeering Operation failed..
+ ///
+ public static string RemoveAzureBGPPeeringFailed {
+ get {
+ return ResourceManager.GetString("RemoveAzureBGPPeeringFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing Bgp Peering.
+ ///
+ public static string RemoveAzureBGPPeeringMessage {
+ get {
+ return ResourceManager.GetString("RemoveAzureBGPPeeringMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Successfully removed Azure Bgp Peering with Service Key {0}..
+ ///
+ public static string RemoveAzureBGPPeeringSucceeded {
+ get {
+ return ResourceManager.GetString("RemoveAzureBGPPeeringSucceeded", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to remove the Bgp Peering with service key '{0}'?.
+ ///
+ public static string RemoveAzureBGPPeeringWarning {
+ get {
+ return ResourceManager.GetString("RemoveAzureBGPPeeringWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to remove the Dedicated Circuit with service key '{0}'?.
+ ///
+ public static string RemoveAzureDedicatdCircuitWarning {
+ get {
+ return ResourceManager.GetString("RemoveAzureDedicatdCircuitWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Remove-AzureDedicatedCircuit Operation failed..
+ ///
+ public static string RemoveAzureDedicatedCircuitFailed {
+ get {
+ return ResourceManager.GetString("RemoveAzureDedicatedCircuitFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Remove-AzureDedicatedCircuitLink Operation failed..
+ ///
+ public static string RemoveAzureDedicatedCircuitLinkFailed {
+ get {
+ return ResourceManager.GetString("RemoveAzureDedicatedCircuitLinkFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing Dedicated Circui Link.
+ ///
+ public static string RemoveAzureDedicatedCircuitLinkMessage {
+ get {
+ return ResourceManager.GetString("RemoveAzureDedicatedCircuitLinkMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Successfully removed Azure Dedicated Circuit Link with Service Key {0} and Vnet Name {1}.
+ ///
+ public static string RemoveAzureDedicatedCircuitLinkSucceeded {
+ get {
+ return ResourceManager.GetString("RemoveAzureDedicatedCircuitLinkSucceeded", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to remove the Dedicated Circuit Link with service key '{0}' and virtual network name '{1}'?.
+ ///
+ public static string RemoveAzureDedicatedCircuitLinkWarning {
+ get {
+ return ResourceManager.GetString("RemoveAzureDedicatedCircuitLinkWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing Dedicated Circuit.
+ ///
+ public static string RemoveAzureDedicatedCircuitMessage {
+ get {
+ return ResourceManager.GetString("RemoveAzureDedicatedCircuitMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Successfully removed Azure Dedicated Circuit with Service Key {0}..
+ ///
+ public static string RemoveAzureDedicatedCircuitSucceeded {
+ get {
+ return ResourceManager.GetString("RemoveAzureDedicatedCircuitSucceeded", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing cloud service {0}....
+ ///
+ public static string RemoveAzureServiceWaitMessage {
+ get {
+ return ResourceManager.GetString("RemoveAzureServiceWaitMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The current subscription is being removed. Use Select-AzureSubscription <subscriptionName> to select a new current subscription..
+ ///
+ public static string RemoveCurrentSubscription {
+ get {
+ return ResourceManager.GetString("RemoveCurrentSubscription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The default subscription is being removed. Use Select-AzureSubscription -Default <subscriptionName> to select a new default subscription..
+ ///
+ public static string RemoveDefaultSubscription {
+ get {
+ return ResourceManager.GetString("RemoveDefaultSubscription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing {0} deployment for {1} service.
+ ///
+ public static string RemoveDeploymentWaitMessage {
+ get {
+ return ResourceManager.GetString("RemoveDeploymentWaitMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing an environment will remove all associated subscriptions and accounts. Are you sure you want to remove an environment '{0}'?.
+ ///
+ public static string RemoveEnvironmentConfirmation {
+ get {
+ return ResourceManager.GetString("RemoveEnvironmentConfirmation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing environment.
+ ///
+ public static string RemoveEnvironmentMessage {
+ get {
+ return ResourceManager.GetString("RemoveEnvironmentMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing job collection.
+ ///
+ public static string RemoveJobCollectionMessage {
+ get {
+ return ResourceManager.GetString("RemoveJobCollectionMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to remove the job collection "{0}".
+ ///
+ public static string RemoveJobCollectionWarning {
+ get {
+ return ResourceManager.GetString("RemoveJobCollectionWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing job.
+ ///
+ public static string RemoveJobMessage {
+ get {
+ return ResourceManager.GetString("RemoveJobMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to remove the job "{0}".
+ ///
+ public static string RemoveJobWarning {
+ get {
+ return ResourceManager.GetString("RemoveJobWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to remove the account?.
+ ///
+ public static string RemoveMediaAccountWarning {
+ get {
+ return ResourceManager.GetString("RemoveMediaAccountWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Account removed..
+ ///
+ public static string RemoveMediaAccountWhatIfMessage {
+ get {
+ return ResourceManager.GetString("RemoveMediaAccountWhatIfMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Internal Server Error. This could happen because the namespace does not exist or it does not exist under your subscription..
+ ///
+ public static string RemoveNamespaceErrorMessage {
+ get {
+ return ResourceManager.GetString("RemoveNamespaceErrorMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing old package {0}....
+ ///
+ public static string RemovePackage {
+ get {
+ return ResourceManager.GetString("RemovePackage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing the Azure profile will remove all associated environments, subscriptions, and accounts. Are you sure you want to remove the Azure profile?.
+ ///
+ public static string RemoveProfileConfirmation {
+ get {
+ return ResourceManager.GetString("RemoveProfileConfirmation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing the Azure profile.
+ ///
+ public static string RemoveProfileMessage {
+ get {
+ return ResourceManager.GetString("RemoveProfileMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to delete the namespace '{0}'?.
+ ///
+ public static string RemoveServiceBusNamespaceConfirmation {
+ get {
+ return ResourceManager.GetString("RemoveServiceBusNamespaceConfirmation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to remove cloud service?.
+ ///
+ public static string RemoveServiceWarning {
+ get {
+ return ResourceManager.GetString("RemoveServiceWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Remove cloud service and all it's deployments.
+ ///
+ public static string RemoveServiceWhatIfMessage {
+ get {
+ return ResourceManager.GetString("RemoveServiceWhatIfMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to remove subscription '{0}'?.
+ ///
+ public static string RemoveSubscriptionConfirmation {
+ get {
+ return ResourceManager.GetString("RemoveSubscriptionConfirmation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing subscription.
+ ///
+ public static string RemoveSubscriptionMessage {
+ get {
+ return ResourceManager.GetString("RemoveSubscriptionMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The endpoint {0} cannot be removed from profile {1} because it's not in the profile..
+ ///
+ public static string RemoveTrafficManagerEndpointMissing {
+ get {
+ return ResourceManager.GetString("RemoveTrafficManagerEndpointMissing", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Remove-AzureTrafficManagerProfile Operation failed..
+ ///
+ public static string RemoveTrafficManagerProfileFailed {
+ get {
+ return ResourceManager.GetString("RemoveTrafficManagerProfileFailed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Successfully removed Traffic Manager profile with name {0}..
+ ///
+ public static string RemoveTrafficManagerProfileSucceeded {
+ get {
+ return ResourceManager.GetString("RemoveTrafficManagerProfileSucceeded", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to remove the Traffic Manager profile "{0}"?.
+ ///
+ public static string RemoveTrafficManagerProfileWarning {
+ get {
+ return ResourceManager.GetString("RemoveTrafficManagerProfileWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to delete the VM '{0}'?.
+ ///
+ public static string RemoveVMConfirmationMessage {
+ get {
+ return ResourceManager.GetString("RemoveVMConfirmationMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Deleting VM..
+ ///
+ public static string RemoveVMMessage {
+ get {
+ return ResourceManager.GetString("RemoveVMMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing WebJob....
+ ///
+ public static string RemoveWebJobMessage {
+ get {
+ return ResourceManager.GetString("RemoveWebJobMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to remove job '{0}'?.
+ ///
+ public static string RemoveWebJobWarning {
+ get {
+ return ResourceManager.GetString("RemoveWebJobWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing website.
+ ///
+ public static string RemoveWebsiteMessage {
+ get {
+ return ResourceManager.GetString("RemoveWebsiteMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to remove the website "{0}".
+ ///
+ public static string RemoveWebsiteWarning {
+ get {
+ return ResourceManager.GetString("RemoveWebsiteWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Removing public environment is not supported..
+ ///
+ public static string RemovingDefaultEnvironmentsNotSupported {
+ get {
+ return ResourceManager.GetString("RemovingDefaultEnvironmentsNotSupported", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Deleting namespace.
+ ///
+ public static string RemovingNamespaceMessage {
+ get {
+ return ResourceManager.GetString("RemovingNamespaceMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Repository is not setup. You need to pass a valid site name..
+ ///
+ public static string RepositoryNotSetup {
+ get {
+ return ResourceManager.GetString("RepositoryNotSetup", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Reserved IP with the Name:'{0}' will no longer be in use after the deployment is deleted, and it is still reserved for later use..
+ ///
+ public static string ReservedIPNameNoLongerInUseButStillBeingReserved {
+ get {
+ return ResourceManager.GetString("ReservedIPNameNoLongerInUseButStillBeingReserved", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Resource with ID : {0} does not exist..
+ ///
+ public static string ResourceNotFound {
+ get {
+ return ResourceManager.GetString("ResourceNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Restart.
+ ///
+ public static string Restart {
+ get {
+ return ResourceManager.GetString("Restart", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Resume.
+ ///
+ public static string Resume {
+ get {
+ return ResourceManager.GetString("Resume", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to /role:{0};"{1}/{0}" .
+ ///
+ public static string RoleArgTemplate {
+ get {
+ return ResourceManager.GetString("RoleArgTemplate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to bin.
+ ///
+ public static string RoleBinFolderName {
+ get {
+ return ResourceManager.GetString("RoleBinFolderName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Role {0} is {1}.
+ ///
+ public static string RoleInstanceWaitMsg {
+ get {
+ return ResourceManager.GetString("RoleInstanceWaitMsg", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 20.
+ ///
+ public static string RoleMaxInstances {
+ get {
+ return ResourceManager.GetString("RoleMaxInstances", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to role name.
+ ///
+ public static string RoleName {
+ get {
+ return ResourceManager.GetString("RoleName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The provided role name {0} doesn't exist.
+ ///
+ public static string RoleNotFoundMessage {
+ get {
+ return ResourceManager.GetString("RoleNotFoundMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RoleSettings.xml.
+ ///
+ public static string RoleSettingsTemplateFileName {
+ get {
+ return ResourceManager.GetString("RoleSettingsTemplateFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Role type {0} doesn't exist.
+ ///
+ public static string RoleTypeDoesNotExist {
+ get {
+ return ResourceManager.GetString("RoleTypeDoesNotExist", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to public static Dictionary<string, Location> ReverseLocations { get; private set; }.
+ ///
+ public static string RuntimeDeploymentLocationError {
+ get {
+ return ResourceManager.GetString("RuntimeDeploymentLocationError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Preparing runtime deployment for service '{0}'.
+ ///
+ public static string RuntimeDeploymentStart {
+ get {
+ return ResourceManager.GetString("RuntimeDeploymentStart", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to WARNING Runtime Mismatch: Are you sure that you want to publish service '{0}' using an Azure runtime version that does not match your local runtime version?.
+ ///
+ public static string RuntimeMismatchWarning {
+ get {
+ return ResourceManager.GetString("RuntimeMismatchWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RUNTIMEOVERRIDEURL.
+ ///
+ public static string RuntimeOverrideKey {
+ get {
+ return ResourceManager.GetString("RuntimeOverrideKey", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to /runtimemanifest/runtimes/runtime.
+ ///
+ public static string RuntimeQuery {
+ get {
+ return ResourceManager.GetString("RuntimeQuery", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RUNTIMEID.
+ ///
+ public static string RuntimeTypeKey {
+ get {
+ return ResourceManager.GetString("RuntimeTypeKey", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RUNTIMEURL.
+ ///
+ public static string RuntimeUrlKey {
+ get {
+ return ResourceManager.GetString("RuntimeUrlKey", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to RUNTIMEVERSIONPRIMARYKEY.
+ ///
+ public static string RuntimeVersionPrimaryKey {
+ get {
+ return ResourceManager.GetString("RuntimeVersionPrimaryKey", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to scaffold.xml.
+ ///
+ public static string ScaffoldXml {
+ get {
+ return ResourceManager.GetString("ScaffoldXml", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid location entered. Pick one of the locations from Get-AzureSchedulerLocation.
+ ///
+ public static string SchedulerInvalidLocation {
+ get {
+ return ResourceManager.GetString("SchedulerInvalidLocation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to A value for the Secondary Peer Subnet has to be provided..
+ ///
+ public static string SecondaryPeerSubnetRequired {
+ get {
+ return ResourceManager.GetString("SecondaryPeerSubnetRequired", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Service {0} already exists on disk in location {1}.
+ ///
+ public static string ServiceAlreadyExistsOnDisk {
+ get {
+ return ResourceManager.GetString("ServiceAlreadyExistsOnDisk", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No ServiceBus authorization rule with the given characteristics was found.
+ ///
+ public static string ServiceBusAuthorizationRuleNotFound {
+ get {
+ return ResourceManager.GetString("ServiceBusAuthorizationRuleNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The service bus entity '{0}' is not found..
+ ///
+ public static string ServiceBusEntityTypeNotFound {
+ get {
+ return ResourceManager.GetString("ServiceBusEntityTypeNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Internal Server Error. This could happen due to an incorrect/missing namespace.
+ ///
+ public static string ServiceBusNamespaceMissingMessage {
+ get {
+ return ResourceManager.GetString("ServiceBusNamespaceMissingMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to service configuration.
+ ///
+ public static string ServiceConfiguration {
+ get {
+ return ResourceManager.GetString("ServiceConfiguration", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to service definition.
+ ///
+ public static string ServiceDefinition {
+ get {
+ return ResourceManager.GetString("ServiceDefinition", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to ServiceDefinition.csdef.
+ ///
+ public static string ServiceDefinitionFileName {
+ get {
+ return ResourceManager.GetString("ServiceDefinitionFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to ServiceDefinition.csdef.
+ ///
+ public static string ServiceDefinitionFileName1 {
+ get {
+ return ResourceManager.GetString("ServiceDefinitionFileName1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0}Deploy.
+ ///
+ public static string ServiceDeploymentName {
+ get {
+ return ResourceManager.GetString("ServiceDeploymentName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The specified cloud service "{0}" does not exist..
+ ///
+ public static string ServiceDoesNotExist {
+ get {
+ return ResourceManager.GetString("ServiceDoesNotExist", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} slot for service {1} is in {2} state, please wait until it finish and update it's status.
+ ///
+ public static string ServiceIsInTransitionState {
+ get {
+ return ResourceManager.GetString("ServiceIsInTransitionState", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unable to retrieve service key for ServicePrincipal account {0}. Please run the Add-AzureAccount cmdlet to supply the credentials for this service principal..
+ ///
+ public static string ServiceKeyNotFound {
+ get {
+ return ResourceManager.GetString("ServiceKeyNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to .
+ ///
+ public static string ServiceManagementClientExceptionStringFormat {
+ get {
+ return ResourceManager.GetString("ServiceManagementClientExceptionStringFormat", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to "An exception occurred when calling the ServiceManagement API. HTTP Status Code: {0}. Service Management Error Code: {1}. Message: {2}. Operation Tracking ID: {3}.".
+ ///
+ public static string ServiceManagementClientExceptionStringFormat1 {
+ get {
+ return ResourceManager.GetString("ServiceManagementClientExceptionStringFormat1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Begin Operation: {0}.
+ ///
+ public static string ServiceManagementExecuteClientActionBeginOperation {
+ get {
+ return ResourceManager.GetString("ServiceManagementExecuteClientActionBeginOperation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Completed Operation: {0}.
+ ///
+ public static string ServiceManagementExecuteClientActionCompletedOperation {
+ get {
+ return ResourceManager.GetString("ServiceManagementExecuteClientActionCompletedOperation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Begin Operation: {0}.
+ ///
+ public static string ServiceManagementExecuteClientActionInOCSBeginOperation {
+ get {
+ return ResourceManager.GetString("ServiceManagementExecuteClientActionInOCSBeginOperation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Completed Operation: {0}.
+ ///
+ public static string ServiceManagementExecuteClientActionInOCSCompletedOperation {
+ get {
+ return ResourceManager.GetString("ServiceManagementExecuteClientActionInOCSCompletedOperation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to service name.
+ ///
+ public static string ServiceName {
+ get {
+ return ResourceManager.GetString("ServiceName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The provided service name {0} already exists, please pick another name.
+ ///
+ public static string ServiceNameExists {
+ get {
+ return ResourceManager.GetString("ServiceNameExists", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The provided service name {0} already exists, please pick another name.
+ ///
+ public static string ServiceNameExists1 {
+ get {
+ return ResourceManager.GetString("ServiceNameExists1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Please provide name for the hosted service.
+ ///
+ public static string ServiceNameMissingMessage {
+ get {
+ return ResourceManager.GetString("ServiceNameMissingMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to service parent directory.
+ ///
+ public static string ServiceParentDirectory {
+ get {
+ return ResourceManager.GetString("ServiceParentDirectory", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Service {0} removed successfully.
+ ///
+ public static string ServiceRemovedMessage {
+ get {
+ return ResourceManager.GetString("ServiceRemovedMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to service directory.
+ ///
+ public static string ServiceRoot {
+ get {
+ return ResourceManager.GetString("ServiceRoot", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to service settings.
+ ///
+ public static string ServiceSettings {
+ get {
+ return ResourceManager.GetString("ServiceSettings", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The storage account name '{0}' is invalid. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only..
+ ///
+ public static string ServiceSettings_ValidateStorageAccountName_InvalidName {
+ get {
+ return ResourceManager.GetString("ServiceSettings_ValidateStorageAccountName_InvalidName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The storage account name '{0}' is invalid. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only..
+ ///
+ public static string ServiceSettings_ValidateStorageAccountName_InvalidName1 {
+ get {
+ return ResourceManager.GetString("ServiceSettings_ValidateStorageAccountName_InvalidName1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to service settings.
+ ///
+ public static string ServiceSettings1 {
+ get {
+ return ResourceManager.GetString("ServiceSettings1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The {0} slot for cloud service {1} doesn't exist..
+ ///
+ public static string ServiceSlotDoesNotExist {
+ get {
+ return ResourceManager.GetString("ServiceSlotDoesNotExist", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} slot for service {1} is {2}.
+ ///
+ public static string ServiceStatusChanged {
+ get {
+ return ResourceManager.GetString("ServiceStatusChanged", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Set Add-On Confirmation.
+ ///
+ public static string SetAddOnConformation {
+ get {
+ return ResourceManager.GetString("SetAddOnConformation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Profile {0} does not contain endpoint {1}. Adding it..
+ ///
+ public static string SetInexistentTrafficManagerEndpointMessage {
+ get {
+ return ResourceManager.GetString("SetInexistentTrafficManagerEndpointMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Note - You will be charged the amount for the new plan, without being refunded for time remaining
+ ///in the existing plan.
+ ///By typing "Yes", I (a) authorize Microsoft to charge my current payment method on a monthly basis
+ ///for the amount indicated at {0} for {1} until my service is cancelled or terminated, and (b)
+ ///agree to the {2}'s terms of user and privacy statement at {0} and (c) agree to sharing my
+ ///contact information with {2}..
+ ///
+ public static string SetMicrosoftAddOnMessage {
+ get {
+ return ResourceManager.GetString("SetMicrosoftAddOnMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Note - You will be charged the amount for the new plan, without being refunded for time remaining
+ ///in the existing plan.
+ ///By typing "Yes", I (a) authorize Microsoft to charge my current payment method on a monthly basis
+ ///for the amount indicated at {0} for {1} until my service is cancelled or terminated, and (b)
+ ///acknowledge the offering is provided by {2}, not Microsoft, and agree to {2}'s terms of
+ ///use and privacy statement at <url> and (c) agree to sharing my contact information with {2}..
+ ///
+ public static string SetNonMicrosoftAddOnMessage {
+ get {
+ return ResourceManager.GetString("SetNonMicrosoftAddOnMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Role {0} instances are set to {1}.
+ ///
+ public static string SetRoleInstancesMessage {
+ get {
+ return ResourceManager.GetString("SetRoleInstancesMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {"Slot":"","Location":"","Subscription":"","StorageAccountName":""}.
+ ///
+ public static string SettingsFileEmptyContent {
+ get {
+ return ResourceManager.GetString("SettingsFileEmptyContent", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to deploymentSettings.json.
+ ///
+ public static string SettingsFileName {
+ get {
+ return ResourceManager.GetString("SettingsFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to deploymentSettings.json.
+ ///
+ public static string SettingsFileName1 {
+ get {
+ return ResourceManager.GetString("SettingsFileName1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Insufficient parameters passed to create a new endpoint..
+ ///
+ public static string SetTrafficManagerEndpointNeedsParameters {
+ get {
+ return ResourceManager.GetString("SetTrafficManagerEndpointNeedsParameters", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Ambiguous operation: the profile name specified doesn't match the name of the profile object..
+ ///
+ public static string SetTrafficManagerProfileAmbiguous {
+ get {
+ return ResourceManager.GetString("SetTrafficManagerProfileAmbiguous", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Confirm.
+ ///
+ public static string ShouldProcessCaption {
+ get {
+ return ResourceManager.GetString("ShouldProcessCaption", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Confirm.
+ ///
+ public static string ShouldProcessCaption1 {
+ get {
+ return ResourceManager.GetString("ShouldProcessCaption1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Shutdown.
+ ///
+ public static string Shutdown {
+ get {
+ return ResourceManager.GetString("Shutdown", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to /sites:{0};{1};"{2}/{0}" .
+ ///
+ public static string SitesArgTemplate {
+ get {
+ return ResourceManager.GetString("SitesArgTemplate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 1000.
+ ///
+ public static string StandardRetryDelayInMs {
+ get {
+ return ResourceManager.GetString("StandardRetryDelayInMs", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Start.
+ ///
+ public static string Start {
+ get {
+ return ResourceManager.GetString("Start", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Started.
+ ///
+ public static string StartedEmulator {
+ get {
+ return ResourceManager.GetString("StartedEmulator", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Starting Emulator....
+ ///
+ public static string StartingEmulator {
+ get {
+ return ResourceManager.GetString("StartingEmulator", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to start.
+ ///
+ public static string StartStorageEmulatorCommandArgument {
+ get {
+ return ResourceManager.GetString("StartStorageEmulatorCommandArgument", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Stop.
+ ///
+ public static string Stop {
+ get {
+ return ResourceManager.GetString("Stop", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Stopping emulator....
+ ///
+ public static string StopEmulatorMessage {
+ get {
+ return ResourceManager.GetString("StopEmulatorMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Stopped.
+ ///
+ public static string StoppedEmulatorMessage {
+ get {
+ return ResourceManager.GetString("StoppedEmulatorMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to stop.
+ ///
+ public static string StopStorageEmulatorCommandArgument {
+ get {
+ return ResourceManager.GetString("StopStorageEmulatorCommandArgument", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Account Name:.
+ ///
+ public static string StorageAccountName {
+ get {
+ return ResourceManager.GetString("StorageAccountName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Cannot find storage account '{0}' please type the name of an existing storage account..
+ ///
+ public static string StorageAccountNotFound {
+ get {
+ return ResourceManager.GetString("StorageAccountNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to WAStorageEmulator.exe.
+ ///
+ public static string StorageEmulatorExe {
+ get {
+ return ResourceManager.GetString("StorageEmulatorExe", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to InstallPath.
+ ///
+ public static string StorageEmulatorInstallPathRegistryKeyValue {
+ get {
+ return ResourceManager.GetString("StorageEmulatorInstallPathRegistryKeyValue", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to SOFTWARE\Microsoft\Windows Azure Storage Emulator.
+ ///
+ public static string StorageEmulatorRegistryKey {
+ get {
+ return ResourceManager.GetString("StorageEmulatorRegistryKey", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Primary Key:.
+ ///
+ public static string StoragePrimaryKey {
+ get {
+ return ResourceManager.GetString("StoragePrimaryKey", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Secondary Key:.
+ ///
+ public static string StorageSecondaryKey {
+ get {
+ return ResourceManager.GetString("StorageSecondaryKey", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The subscription named {0} already exists..
+ ///
+ public static string SubscriptionAlreadyExists {
+ get {
+ return ResourceManager.GetString("SubscriptionAlreadyExists", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The SubscriptionDataFile parameter is deprecated. This parameter will be removed in a future release. See https://github.com/Azure/azure-powershell/wiki/Proposed-Design-Stateless-Azure-Profile for a description of the upcoming mechanism for providing alternate sources of subscription information..
+ ///
+ public static string SubscriptionDataFileDeprecated {
+ get {
+ return ResourceManager.GetString("SubscriptionDataFileDeprecated", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to DefaultSubscriptionData.xml.
+ ///
+ public static string SubscriptionDataFileName {
+ get {
+ return ResourceManager.GetString("SubscriptionDataFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The subscription data file {0} does not exist..
+ ///
+ public static string SubscriptionDataFileNotFound {
+ get {
+ return ResourceManager.GetString("SubscriptionDataFileNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The subscription id {0} doesn't exist..
+ ///
+ public static string SubscriptionIdNotFoundMessage {
+ get {
+ return ResourceManager.GetString("SubscriptionIdNotFoundMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Subscription must not be null.
+ ///
+ public static string SubscriptionMustNotBeNull {
+ get {
+ return ResourceManager.GetString("SubscriptionMustNotBeNull", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The subscription name {0} doesn't exist..
+ ///
+ public static string SubscriptionNameNotFoundMessage {
+ get {
+ return ResourceManager.GetString("SubscriptionNameNotFoundMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Suspend.
+ ///
+ public static string Suspend {
+ get {
+ return ResourceManager.GetString("Suspend", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Swapping website production slot ....
+ ///
+ public static string SwappingWebsite {
+ get {
+ return ResourceManager.GetString("SwappingWebsite", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Are you sure you want to swap the website '{0}' production slot with slot '{1}'?.
+ ///
+ public static string SwapWebsiteSlotWarning {
+ get {
+ return ResourceManager.GetString("SwapWebsiteSlotWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unable to create Django application: {0}.
+ ///
+ public static string UnableToCreateDjangoApp {
+ get {
+ return ResourceManager.GetString("UnableToCreateDjangoApp", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Make sure you have Python 2.7 installed along with Django installed to site-packages..
+ ///
+ public static string UnableToCreateDjangoAppFix {
+ get {
+ return ResourceManager.GetString("UnableToCreateDjangoAppFix", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unable to decode string from base 64. Please make sure the string is correctly encoded: {0}..
+ ///
+ public static string UnableToDecodeBase64String {
+ get {
+ return ResourceManager.GetString("UnableToDecodeBase64String", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unable to update mismatching Json structured: {0} {1}..
+ ///
+ public static string UnableToPatchJson {
+ get {
+ return ResourceManager.GetString("UnableToPatchJson", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Illegal credential type.
+ ///
+ public static string UnknownCredentialType {
+ get {
+ return ResourceManager.GetString("UnknownCredentialType", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The provider {0} is unknown..
+ ///
+ public static string UnknownProviderMessage {
+ get {
+ return ResourceManager.GetString("UnknownProviderMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Update.
+ ///
+ public static string Update {
+ get {
+ return ResourceManager.GetString("Update", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Updated settings for subscription '{0}'. Current subscription is '{1}'..
+ ///
+ public static string UpdatedSettings {
+ get {
+ return ResourceManager.GetString("UpdatedSettings", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to A value for the VLan Id has to be provided..
+ ///
+ public static string VlanIdRequired {
+ get {
+ return ResourceManager.GetString("VlanIdRequired", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Please wait....
+ ///
+ public static string WaitMessage {
+ get {
+ return ResourceManager.GetString("WaitMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The azure storage emulator is not installed, skip launching....
+ ///
+ public static string WarningWhenStorageEmulatorIsMissing {
+ get {
+ return ResourceManager.GetString("WarningWhenStorageEmulatorIsMissing", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Web.cloud.config.
+ ///
+ public static string WebCloudConfig {
+ get {
+ return ResourceManager.GetString("WebCloudConfig", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to web.config.
+ ///
+ public static string WebConfigTemplateFileName {
+ get {
+ return ResourceManager.GetString("WebConfigTemplateFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to MSDeploy.
+ ///
+ public static string WebDeployKeywordInWebSitePublishProfile {
+ get {
+ return ResourceManager.GetString("WebDeployKeywordInWebSitePublishProfile", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Cannot build the project successfully. Please see logs in {0}..
+ ///
+ public static string WebProjectBuildFailTemplate {
+ get {
+ return ResourceManager.GetString("WebProjectBuildFailTemplate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to WebRole.
+ ///
+ public static string WebRole {
+ get {
+ return ResourceManager.GetString("WebRole", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to setup_web.cmd > log.txt.
+ ///
+ public static string WebRoleStartupTaskCommandLine {
+ get {
+ return ResourceManager.GetString("WebRoleStartupTaskCommandLine", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to WebRole.xml.
+ ///
+ public static string WebRoleTemplateFileName {
+ get {
+ return ResourceManager.GetString("WebRoleTemplateFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to WebSite with given name {0} already exists in the specified Subscription and Webspace..
+ ///
+ public static string WebsiteAlreadyExists {
+ get {
+ return ResourceManager.GetString("WebsiteAlreadyExists", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to WebSite with given name {0} already exists in the specified Subscription and Location..
+ ///
+ public static string WebsiteAlreadyExistsReplacement {
+ get {
+ return ResourceManager.GetString("WebsiteAlreadyExistsReplacement", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Site {0} already has repository created for it..
+ ///
+ public static string WebsiteRepositoryAlreadyExists {
+ get {
+ return ResourceManager.GetString("WebsiteRepositoryAlreadyExists", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Workspaces/WebsiteExtension/Website/{0}/dashboard/.
+ ///
+ public static string WebsiteSufixUrl {
+ get {
+ return ResourceManager.GetString("WebsiteSufixUrl", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to https://{0}/msdeploy.axd?site={1}.
+ ///
+ public static string WebSiteWebDeployUriTemplate {
+ get {
+ return ResourceManager.GetString("WebSiteWebDeployUriTemplate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to WorkerRole.
+ ///
+ public static string WorkerRole {
+ get {
+ return ResourceManager.GetString("WorkerRole", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to setup_worker.cmd > log.txt.
+ ///
+ public static string WorkerRoleStartupTaskCommandLine {
+ get {
+ return ResourceManager.GetString("WorkerRoleStartupTaskCommandLine", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to WorkerRole.xml.
+ ///
+ public static string WorkerRoleTemplateFileName {
+ get {
+ return ResourceManager.GetString("WorkerRoleTemplateFileName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to (x86).
+ ///
+ public static string x86InProgramFiles {
+ get {
+ return ResourceManager.GetString("x86InProgramFiles", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Yes.
+ ///
+ public static string Yes {
+ get {
+ return ResourceManager.GetString("Yes", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Yes, I agree.
+ ///
+ public static string YesHint {
+ get {
+ return ResourceManager.GetString("YesHint", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/src/Common/Azure.Common.Extensions/Properties/Resources.resx b/src/Common/Azure.Common.Extensions/Properties/Resources.resx
new file mode 100644
index 000000000000..be358f5d05b0
--- /dev/null
+++ b/src/Common/Azure.Common.Extensions/Properties/Resources.resx
@@ -0,0 +1,1579 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+ The remote server returned an error: (401) Unauthorized.
+
+
+ Account "{0}" has been added.
+
+
+ To switch to a different subscription, please use Select-AzureSubscription.
+
+
+ Subscription "{0}" is selected as the default subscription.
+
+
+ To view all the subscriptions, please use Get-AzureSubscription.
+
+
+ Add-On {0} is created successfully.
+
+
+ Add-on name {0} is already used.
+
+
+ Add-On {0} not found.
+
+
+ Add-on {0} is removed successfully.
+
+
+ Add-On {0} is updated successfully.
+
+
+ Role has been created at {0}\{1}.
+
+
+ Role has been created at {0}\{1}. For easy access to Microsoft Azure services from your application code, install the Microsoft Azure client library for Node.js by running ‘npm install azure’.
+
+
+ Role has been created at {0}\{1}. For easy access to Microsoft Azure services from your application code, install the Microsoft Azure client library for PHP by running "pear Azure/Azure".
+
+
+ Role has been created at {0}\{1}. For easy access to Microsoft Azure services from your application code, install the Microsoft Azure client library for Python by running "pip Azure".
+
+
+ Unable to set role permissions. Please give the 'Network Service' user 'Read & execute' and 'Modify' permissions to the role folder, or run PowerShell as an Administrator
+
+
+ A role name '{0}' already exists
+
+
+ Windows Azure Powershell\
+
+
+ Windows Azure Powershell
+
+
+ Emulator
+
+
+ Azure Emulator is not installed and is required
+
+
+ Azure Emulator\emulator
+
+
+ SOFTWARE\Microsoft\Windows Azure Emulator
+
+
+ https://manage.Azure.com
+
+
+ AZURE_PORTAL_URL
+
+
+ Azure SDK\{0}\
+
+
+ InstallPath
+
+
+ SOFTWARE\Microsoft\Microsoft SDKs\ServiceHosting
+
+
+ The installed Azure SDK version is not supported. Make sure you version is between {0} and {1} inclusive
+
+
+ Azure service management error
+{0}
+
+
+ Azure Authoring Tools are not installed and are required. Installation of Azure SDK for .NET is recommended with Microsoft Web Platform Installer (PI) available at http://www.microsoft.com/web/downloads/platform.aspx.
+
+
+ Base Uri was empty.
+ WAPackIaaS
+
+
+ {0} begin processing without ParameterSet.
+
+
+ {0} begin processing with ParameterSet '{1}'.
+
+
+ Blob with the name {0} already exists in the account.
+
+
+ https://{0}.blob.core.windows.net/
+
+
+ AZURE_BLOBSTORAGE_TEMPLATE
+
+
+ Memcache is already enabled for role '{0}'.
+
+
+ <configuration>
+ <configSections>
+ <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
+ </configSections>
+ <dataCacheClients>
+ <tracing sinkType="DiagnosticSink" traceLevel="Error" />
+ <dataCacheClient name="DefaultShimConfig" useLegacyProtocol="false">
+ <autoDiscover isEnabled="true" identifier="$RoleName$" />
+ </dataCacheClient>
+ </dataCacheClients>
+</configuration>
+
+
+ Microsoft.Azure.Plugins.Caching.ClientDiagnosticLevel
+
+
+ DiagnosticStore
+
+
+ Please upgrade the cache runtime of role '{0}' to '{1}' using Set-AzureServiceProjectRole -RoleName {0} -Runtime Cache -Version {1}
+
+
+ CACHERUNTIMEURL
+
+
+ cache
+
+
+ CacheRuntimeVersion
+
+
+ Resources\Scaffolding\Cache
+
+
+ setup_cache.cmd > cache_log.txt
+
+
+ Installing caching version {0} for Role '{1}' (the caching version locally installed is: {2})
+
+
+ Microsoft.Azure.Plugins.Caching.CacheSizePercentage
+
+
+ Microsoft.Azure.Plugins.Caching.ConfigStoreConnectionString
+
+
+ DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}
+
+
+ Caching
+
+
+ Cannot find {0} with name {1}.
+
+
+ Deployment for service {0} with {1} slot doesn't exist
+
+
+ Can't find valid Microsoft Azure role in current directory {0}
+
+
+ service {0} configuration file (ServiceConfiguration.Cloud.cscfg) is either null or doesn't exist
+
+
+ Invalid service path! Cannot locate ServiceDefinition.csdef in current folder or parent folders.
+
+
+ The subscription named {0} with id {1} is not currently imported. You must import this subscription before it can be updated.
+
+
+ ManagementCertificate
+
+
+ certificate.pfx
+
+
+ Certificate imported into CurrentUser\My\{0}
+
+
+ No certificate was found in the certificate store with thumbprint {0}
+
+
+ No certificate was found in the certificate store with thumbprint {0}
+
+
+ Your account does not have access to the private key for certificate {0}
+
+
+ {0} {1} deployment for {2} service
+
+
+ Cloud service {0} is in {1} state.
+
+
+ Changing/Removing public environment '{0}' is not allowed.
+
+
+ Service {0} is set to value {1}
+
+
+ Choose which publish settings file to use:
+
+
+ Microsoft.Azure.Plugins.Caching.ClientDiagnosticLevel
+
+
+ 1
+
+
+ cloud_package.cspkg
+
+
+ ServiceConfiguration.Cloud.cscfg
+
+
+ Add-ons for {0}
+
+
+ Communication could not be established. This could be due to an invalid subscription ID. Note that subscription IDs are case sensitive.
+
+
+ Complete
+
+
+ Complete
+
+
+ config.json
+
+
+ VirtualMachine creation failed.
+ WAPackIaaS
+
+
+ Creating the website failed. If this is the first website for this subscription, please create it using the management portal instead.
+
+
+ Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core
+
+
+ //blobcontainer[@datacenter='{0}']
+
+
+ Setting: {0} as the default and current subscription. To view other subscriptions use Get-AzureSubscription
+
+
+ none
+
+
+ There are no hostnames which could be used for validation.
+
+
+ 8080
+
+
+ 1000
+
+
+ Auto
+
+
+ 80
+
+
+ Delete
+ WAPackIaaS
+
+
+ The {0} slot for service {1} is already in {2} state
+
+
+ The deployment in {0} slot for service {1} is removed
+
+
+ Microsoft.Azure.Plugins.Caching.DiagnosticLevel
+
+
+ 1
+
+
+ The key to add already exists in the dictionary.
+
+
+ The array index cannot be less than zero.
+
+
+ The supplied array does not have enough room to contain the copied elements.
+
+
+ The provided dns {0} doesn't exist
+
+
+ Microsoft Azure Certificate
+
+
+ Endpoint can't be retrieved for storage account
+
+
+ {0} end processing.
+
+
+ To use Active Directory authentication, you must configure the ActiveDirectoryEndpoint, ActiveDirectoryTenantId, and ActiveDirectorServiceEndpointResourceId for environment of '{0}'. You can configure these properties for this environment using the Set-AzureEnvironment cmdlet.
+
+
+ The environment '{0}' already exists.
+
+
+ The environment name '{0}' is not found.
+
+
+ environments.xml
+
+
+ Error creating VirtualMachine
+ WAPackIaaS
+
+
+ Unable to download available runtimes for location '{0}'
+
+
+ Error updating VirtualMachine
+ WAPackIaaS
+
+
+ Your Microsoft Azure credential in the Windows PowerShell session has expired. Please use Add-AzureAccount to login again.
+
+
+ Job Id {0} failed. Error: {1}, ExceptionDetails: {2}
+ WAPackIaaS
+
+
+ The HTTP request was forbidden with client authentication scheme 'Anonymous'.
+
+
+ This add-on requires you to purchase the first instance through the Microsoft Azure Portal. Subsequent purchases can be performed through PowerShell.
+
+
+ Operation Status:
+
+
+ Resources\Scaffolding\General
+
+
+ Getting all available Microsoft Azure Add-Ons, this may take few minutes...
+
+
+ Name{0}Primary Key{0}Seconday Key
+
+
+ Git not found. Please install git and place it in your command line path.
+
+
+ Could not find publish settings. Please run Import-AzurePublishSettingsFile.
+
+
+ Could not find publish settings. Please run Import-AzurePublishSettingsFile.
+
+
+ iisnode.dll
+
+
+ iisnode
+
+
+ iisnode-dev\\release\\x64
+
+
+ iisnode
+
+
+ Installing IISNode version {0} in Azure for WebRole '{1}' (the version locally installed is: {2})
+
+
+ Illegal characters in path.
+
+
+ Illegal characters in path.
+
+
+ Internal Server Error
+
+
+ Cannot enable memcach protocol on a cache worker role {0}.
+
+
+ Invalid certificate format. Publish settings may be corrupted. Use Get-AzurePublishSettingsFile to download updated settings
+
+
+ Invalid certificate format. Publish settings may be corrupted. Use Get-AzurePublishSettingsFile to download updated settings
+
+
+ Invalid certificate format.
+
+
+ The provided configuration path is invalid or doesn't exist
+
+
+ The country name is invalid, please use a valid two character country code, as described in ISO 3166-1 alpha-2.
+
+
+ No current subscription has been designated. Use Select-AzureSubscription -Current <subscriptionName> to set the current subscription.
+
+
+ The ID of the current subscription is invalid. Use Set-AzureSubscription to fix the subscription ID or use Select-AzureSubscription to use a different subscription.
+
+
+ The management certificate of the current subscription is invalid. Use Set-AzureSubscription to fix the management certificate or use Select-AzureSubscription to use a different subscription.
+
+
+ No default subscription has been designated. Use Select-AzureSubscription -Default <subscriptionName> to set the default subscription.
+
+
+ Deployment with {0} does not exist
+
+
+ The deployment slot name {0} is invalid. Slot name must be either "Staging" or "Production".
+
+
+ "{0}" is an invalid DNS name for {1}
+
+
+ Invalid service endpoint.
+
+
+ The provided file in {0} must be have {1} extension
+
+
+ File {0} has invalid characters
+
+
+ You must create your git publishing credentials using the Microsoft Azure portal.
+Please follow these steps in the portal:
+1. On the left side open "Web Sites"
+2. Click on any website
+3. Choose "Setup Git Publishing" or "Reset deployment credentials"
+4. Back in the PowerShell window, rerun this command by typing "New-AzureWebSite {site name} -Git -PublishingUsername {username}
+
+
+ The value {0} provided is not a valid GUID. Please provide a valid GUID.
+
+
+ The specified hostname does not exist. Please specify a valid hostname for the site.
+
+
+ Role {0} instances must be greater than or equal 0 and less than or equal 20
+
+
+ There was an error creating your webjob. Please make sure that the script is in the root folder of the zip file.
+
+
+ Cannot create instance of management client type {0}. It does not have the expected constructor.
+
+
+ Could not download a valid runtime manifest, Please check your internet connection and try again.
+
+
+ The account {0} was not found. Please specify a valid account name.
+
+
+ The provided name "{0}" does not match the service bus namespace naming rules.
+
+
+ Value cannot be null. Parameter name: '{0}'
+
+
+ {0} is invalid or empty
+
+
+ The provided package path is invalid or doesn't exist
+
+
+ '{0}' is an invalid parameter set name.
+
+
+ {0} doesn't exist in {1} or you've not passed valid value for it
+
+
+ Path {0} has invalid characters
+
+
+ The provided publish settings file {0} has invalid content. Please get valid by running cmdlet Get-AzurePublishSettingsFile
+
+
+ The provided publish settings file {0} has invalid content. Please get valid by running cmdlet Get-AzurePublishSettingsFile
+
+
+ The provided role name "{0}" has invalid characters
+
+
+ A valid name for the service root folder is required
+
+
+ {0} is not a recognized runtime type
+
+
+ A valid language is required
+
+
+ No subscription is currently selected. Use Select-Subscription to activate a subscription.
+
+
+ The provided location "{0}" does not exist in the available locations use Get-AzureSBLocation for listing available locations.
+
+
+ Please provide a service name or run this command from inside a service project directory.
+
+
+ You must provide valid value for {0}
+
+
+ You must provide valid value for {0}
+
+
+ settings.json is invalid or doesn't exist
+
+
+ The subscription named '{0}' cannot be found. Use Set-AzureSubscription to initialize the subscription data.
+
+
+ The provided subscription id {0} is not valid
+
+
+ Must specify a non-null subscription name.
+
+
+ A valid subscription name is required. This can be provided using the -Subscription parameter or by setting the subscription via the Set-AzureSubscription cmdlet
+
+
+ The provided subscriptions file {0} has invalid content.
+
+
+ Your Azure credentials have not been set up or have expired, please run Add-AzureAccount to set up your Azure credentials.
+
+
+ Role {0} VM size should be ExtraSmall, Small, Medium, Large or ExtraLarge.
+
+
+ The web job file must have *.zip extension
+
+
+ Singleton option works for continuous jobs only.
+
+
+ The website {0} was not found. Please specify a valid website name.
+
+
+ No job for id: {0} was found.
+ WAPackIaaS
+
+
+ engines
+
+
+ Scaffolding for this language is not yet supported
+
+
+ Link already established
+
+
+ local_package.csx
+
+
+ ServiceConfiguration.Local.cscfg
+
+
+ Looking for {0} deployment for {1} cloud service...
+
+
+ Looking for cloud service {0}...
+
+
+ managementCertificate.pem
+
+
+ ?whr={0}
+
+
+ //baseuri
+
+
+ uri
+
+
+ http://az413943.vo.msecnd.net/node/runtimemanifest_0.7.5.2.xml
+
+
+ v2.5
+
+
+ memcache_default
+
+
+ 11211
+
+
+ v2.5
+
+
+ Python 2.7 is not installed. Please install it as well as Django 1.4.
+
+
+ Multiple Add-Ons found holding name {0}
+
+
+ Multiple possible publishing users. Please go to the Portal and use the listed deployment user, or click 'set/reset deployment credentials' to set up a new user account, then reurn this cmdlet and specify PublishingUsername.
+
+
+ The first publish settings file "{0}" is used. If you want to use another file specify the file name.
+
+
+ Microsoft.Azure.Plugins.Caching.NamedCaches
+
+
+ {"caches":[{"name":"default","policy":{"eviction":{"type":0},"expiration":{"defaultTTL":10,"isExpirable":true,"type":1},"serverNotification":{"isEnabled":false}},"secondaries":0}]}
+
+
+ A publishing username is required. Please specify one using the argument PublishingUsername.
+
+
+ New Add-On Confirmation
+
+
+ By typing "Yes", I (a) authorize Microsoft to charge my current payment method on a monthly basis
+for the amount indicated at {0} for {1} until my service is cancelled or terminated, and (b)
+agree to the {2}'s terms of user and privacy statement at {0} and (c) agree to sharing my
+contact information with {2}.
+
+
+ Internal Server Error. This could happen because the namespace name is already used or due to an incorrect location name. Use Get-AzureSBLocation cmdlet to list valid names.
+
+
+ By typing "Yes", I (a) authorize Microsoft to charge my current payment method on a monthly basis
+for the amount indicated at {0} for {1} until my service is cancelled or terminated, and (b)
+acknowledge the offering is provided by {2}, not Microsoft, and agree to {2}'s terms of
+use and privacy statement at {0} and (c) agree to sharing my contact information with {2}.
+
+
+ Service has been created at {0}
+
+
+ No
+
+
+ There is no access token cached for subscription {0}, user id {1}. Use the Add-AzureAccount cmdlet to log in again and get a token for this subscription.
+
+
+ The service does not have any cache worker roles, add one first by running cmdlet Add-AzureCacheWorkerRole.
+
+
+ No clouds available
+ WAPackIaaS
+
+
+ nodejs
+
+
+ node
+
+
+ node.exe
+
+
+ There is no default subscription set, please set a default subscription by running Set-AzureSubscription -Default <subscription name>
+
+
+ Microsoft SDKs\Azure\Nodejs\Nov2011
+
+
+ nodejs
+
+
+ node
+
+
+ Resources\Scaffolding\Node
+
+
+ Microsoft.Azure.Commands.CloudService.ScaffoldingResources.Node
+
+
+ Installing Node version {0} in Azure for Role '{1}' (the Node version locally installed is: {2})
+
+
+ No, I do not agree
+
+
+ Please connect to internet before executing this cmdlet
+
+
+ Please connect to internet before executing this cmdlet
+
+
+ No publish settings files with extension *.publishsettings are found in the directory "{0}".
+
+
+ '{0}' must be a cache worker role. Verify that it has proper cache worker role configuration.
+
+
+ Certificate can't be null.
+
+
+ {0} could not be null or empty
+
+
+ Unable to add a null RoleSettings to {0}
+
+
+ Unable to add new role to null service definition
+
+
+ The request offer '{0}' is not found.
+
+
+ Operation "{0}" failed on VM with ID: {1}
+ WAPackIaaS
+
+
+ The REST operation failed with message '{0}' and error code '{1}'
+
+
+ Job Id {0} did not complete within expected time or it is in Failed/Canceled/Invalid state.
+ WAPackIaaS
+
+
+ package
+
+
+ Package is created at service root path {0}.
+
+
+ {{
+ "author": "",
+
+ "name": "{0}",
+ "version": "0.0.0",
+ "dependencies":{{}},
+ "devDependencies":{{}},
+ "optionalDependencies": {{}},
+ "engines": {{
+ "node": "*",
+ "iisnode": "*"
+ }}
+
+}}
+
+
+
+ package.json
+
+
+ Path {0} doesn't exist.
+
+
+ Path for {0} doesn't exist in {1}.
+
+
+ A value for the Peer Asn has to be provided.
+
+
+ 5.4.0
+
+
+ php
+
+
+ Resources\Scaffolding\PHP
+
+
+ Microsoft.Azure.Commands.CloudService.ScaffoldingResources.PHP
+
+
+ Installing PHP version {0} for Role '{1}' (the PHP version locally installed is: {2})
+
+
+ You must create your first web site using the Microsoft Azure portal.
+Please follow these steps in the portal:
+1. At the bottom of the page, click on New > Web Site > Quick Create
+2. Type {0} in the URL field
+3. Click on "Create Web Site"
+4. Once the site has been created, click on the site name
+5. Click on "Set up Git publishing" or "Reset deployment credentials" and setup a publishing username and password. Use those credentials for all new websites you create.
+
+
+ 6. Back in the console window, rerun this command by typing "New-AzureWebsite <site name> -Git"
+
+
+ A value for the Primary Peer Subnet has to be provided.
+
+
+ Promotion code can be used only when updating to a new plan.
+
+
+ Service not published at user request.
+
+
+ Complete.
+
+
+ Connecting...
+
+
+ Created Deployment ID: {0}.
+
+
+ Created hosted service '{0}'.
+
+
+ Created Website URL: {0}.
+
+
+ Creating...
+
+
+ Initializing...
+
+
+ busy
+
+
+ creating the virtual machine
+
+
+ Instance {0} of role {1} is {2}.
+
+
+ ready
+
+
+ Preparing deployment for {0} with Subscription ID: {1}...
+
+
+ Publishing {0} to Microsoft Azure. This may take several minutes...
+
+
+ publish settings
+
+
+ Azure
+
+
+ .PublishSettings
+
+
+ publishSettings.xml
+
+
+ &whr={0}
+
+
+ Publish settings imported
+
+
+ AZURE_PUBLISHINGPROFILE_URL
+
+
+ Starting...
+
+
+ Upgrading...
+
+
+ Uploading Package to storage service {0}...
+
+
+ Verifying storage account '{0}'...
+
+
+ Resources\Scaffolding\Python
+
+
+ Replace current deployment with '{0}' Id ?
+
+
+ Are you sure you want to regenerate key?
+
+
+ Generate new key.
+
+
+ Are you sure you want to remove account '{0}'?
+
+
+ Removing account
+
+
+ Remove Add-On Confirmation
+
+
+ If you delete this add-on, your data may be deleted and the operation may not be undone. You may have to purchase it again from the Microsoft Azure Store to use it. The price of the add-on may not be refunded. Are you sure you want to delete this add-on? Enter “Yes” to confirm.
+
+
+ Remove-AzureBGPPeering Operation failed.
+
+
+ Removing Bgp Peering
+
+
+ Successfully removed Azure Bgp Peering with Service Key {0}.
+
+
+ Are you sure you want to remove the Bgp Peering with service key '{0}'?
+
+
+ Are you sure you want to remove the Dedicated Circuit with service key '{0}'?
+
+
+ Remove-AzureDedicatedCircuit Operation failed.
+
+
+ Remove-AzureDedicatedCircuitLink Operation failed.
+
+
+ Removing Dedicated Circui Link
+
+
+ Successfully removed Azure Dedicated Circuit Link with Service Key {0} and Vnet Name {1}
+
+
+ Are you sure you want to remove the Dedicated Circuit Link with service key '{0}' and virtual network name '{1}'?
+
+
+ Removing Dedicated Circuit
+
+
+ Successfully removed Azure Dedicated Circuit with Service Key {0}.
+
+
+ Removing cloud service {0}...
+
+
+ The current subscription is being removed. Use Select-AzureSubscription <subscriptionName> to select a new current subscription.
+
+
+ The default subscription is being removed. Use Select-AzureSubscription -Default <subscriptionName> to select a new default subscription.
+
+
+ Removing {0} deployment for {1} service
+
+
+ Removing job collection
+
+
+ Are you sure you want to remove the job collection "{0}"
+
+
+ Removing job
+
+
+ Are you sure you want to remove the job "{0}"
+
+
+ Are you sure you want to remove the account?
+
+
+ Account removed.
+
+
+ Internal Server Error. This could happen because the namespace does not exist or it does not exist under your subscription.
+
+
+ Removing old package {0}...
+
+
+ Are you sure you want to delete the namespace '{0}'?
+
+
+ Are you sure you want to remove cloud service?
+
+
+ Remove cloud service and all it's deployments
+
+
+ Are you sure you want to remove subscription '{0}'?
+
+
+ Removing subscription
+
+
+ Are you sure you want to delete the VM '{0}'?
+
+
+ Deleting VM.
+
+
+ Removing WebJob...
+
+
+ Are you sure you want to remove job '{0}'?
+
+
+ Removing website
+
+
+ Are you sure you want to remove the website "{0}"
+
+
+ Deleting namespace
+
+
+ Repository is not setup. You need to pass a valid site name.
+
+
+ Reserved IP with the Name:'{0}' will no longer be in use after the deployment is deleted, and it is still reserved for later use.
+
+
+ Resource with ID : {0} does not exist.
+ WAPackIaaS
+
+
+ Restart
+ WAPackIaaS
+
+
+ Resume
+ WAPackIaaS
+
+
+ /role:{0};"{1}/{0}"
+
+
+ bin
+
+
+ Role {0} is {1}
+
+
+ 20
+
+
+ role name
+
+
+ The provided role name {0} doesn't exist
+
+
+ RoleSettings.xml
+
+
+ Role type {0} doesn't exist
+
+
+ public static Dictionary<string, Location> ReverseLocations { get; private set; }
+
+
+ Preparing runtime deployment for service '{0}'
+
+
+ WARNING Runtime Mismatch: Are you sure that you want to publish service '{0}' using an Azure runtime version that does not match your local runtime version?
+
+
+ RUNTIMEOVERRIDEURL
+
+
+ /runtimemanifest/runtimes/runtime
+
+
+ RUNTIMEID
+
+
+ RUNTIMEURL
+
+
+ RUNTIMEVERSIONPRIMARYKEY
+
+
+ scaffold.xml
+
+
+ Invalid location entered. Pick one of the locations from Get-AzureSchedulerLocation
+
+
+ A value for the Secondary Peer Subnet has to be provided.
+
+
+ Service {0} already exists on disk in location {1}
+
+
+ No ServiceBus authorization rule with the given characteristics was found
+
+
+ The service bus entity '{0}' is not found.
+
+
+ Internal Server Error. This could happen due to an incorrect/missing namespace
+
+
+ service configuration
+
+
+ service definition
+
+
+ ServiceDefinition.csdef
+
+
+ ServiceDefinition.csdef
+
+
+ {0}Deploy
+
+
+ The specified cloud service "{0}" does not exist.
+
+
+ {0} slot for service {1} is in {2} state, please wait until it finish and update it's status
+
+
+ Begin Operation: {0}
+
+
+ Completed Operation: {0}
+
+
+ Begin Operation: {0}
+
+
+ Completed Operation: {0}
+
+
+ service name
+
+
+ The provided service name {0} already exists, please pick another name
+
+
+ The provided service name {0} already exists, please pick another name
+
+
+ Please provide name for the hosted service
+
+
+ service parent directory
+
+
+ Service {0} removed successfully
+
+
+ service directory
+
+
+ service settings
+
+
+ The storage account name '{0}' is invalid. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+
+
+ The storage account name '{0}' is invalid. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+
+
+ service settings
+
+
+ The {0} slot for cloud service {1} doesn't exist.
+
+
+ {0} slot for service {1} is {2}
+
+
+ Set Add-On Confirmation
+
+
+ Note - You will be charged the amount for the new plan, without being refunded for time remaining
+in the existing plan.
+By typing "Yes", I (a) authorize Microsoft to charge my current payment method on a monthly basis
+for the amount indicated at {0} for {1} until my service is cancelled or terminated, and (b)
+agree to the {2}'s terms of user and privacy statement at {0} and (c) agree to sharing my
+contact information with {2}.
+
+
+ Note - You will be charged the amount for the new plan, without being refunded for time remaining
+in the existing plan.
+By typing "Yes", I (a) authorize Microsoft to charge my current payment method on a monthly basis
+for the amount indicated at {0} for {1} until my service is cancelled or terminated, and (b)
+acknowledge the offering is provided by {2}, not Microsoft, and agree to {2}'s terms of
+use and privacy statement at <url> and (c) agree to sharing my contact information with {2}.
+
+
+ Role {0} instances are set to {1}
+
+
+ {"Slot":"","Location":"","Subscription":"","StorageAccountName":""}
+
+
+ deploymentSettings.json
+
+
+ deploymentSettings.json
+
+
+ Confirm
+
+
+ Confirm
+
+
+ Shutdown
+ WAPackIaaS
+
+
+ /sites:{0};{1};"{2}/{0}"
+
+
+ 1000
+
+
+ Start
+ WAPackIaaS
+
+
+ Started
+
+
+ Starting Emulator...
+
+
+ start
+
+
+ Stop
+ WAPackIaaS
+
+
+ Stopping emulator...
+
+
+ Stopped
+
+
+ stop
+
+
+ Account Name:
+
+
+ Cannot find storage account '{0}' please type the name of an existing storage account.
+
+
+ WAStorageEmulator.exe
+
+
+ InstallPath
+
+
+ SOFTWARE\Microsoft\Windows Azure Storage Emulator
+
+
+ Primary Key:
+
+
+ Secondary Key:
+
+
+ The subscription named {0} already exists.
+
+
+ DefaultSubscriptionData.xml
+
+
+ The subscription data file {0} does not exist.
+
+
+ The subscription id {0} doesn't exist.
+
+
+ The subscription name {0} doesn't exist.
+
+
+ Subscription must not be null
+ WAPackIaaS
+
+
+ Suspend
+ WAPackIaaS
+
+
+ Swapping website production slot ...
+
+
+ Are you sure you want to swap the website '{0}' production slot with slot '{1}'?
+
+
+ Unable to create Django application: {0}
+
+
+ Make sure you have Python 2.7 installed along with Django installed to site-packages.
+
+
+ Unable to update mismatching Json structured: {0} {1}.
+
+
+ The provider {0} is unknown.
+
+
+ Update
+ WAPackIaaS
+
+
+ Updated settings for subscription '{0}'. Current subscription is '{1}'.
+
+
+ A value for the VLan Id has to be provided.
+
+
+ Please wait...
+
+
+ The azure storage emulator is not installed, skip launching...
+
+
+ Web.cloud.config
+
+
+ web.config
+
+
+ MSDeploy
+
+
+ Cannot build the project successfully. Please see logs in {0}.
+
+
+ WebRole
+
+
+ setup_web.cmd > log.txt
+
+
+ WebRole.xml
+
+
+ WebSite with given name {0} already exists in the specified Subscription and Webspace.
+
+
+ WebSite with given name {0} already exists in the specified Subscription and Location.
+
+
+ Site {0} already has repository created for it.
+
+
+ Workspaces/WebsiteExtension/Website/{0}/dashboard/
+
+
+ https://{0}/msdeploy.axd?site={1}
+
+
+ WorkerRole
+
+
+ setup_worker.cmd > log.txt
+
+
+ WorkerRole.xml
+
+
+ (x86)
+
+
+ Yes
+
+
+ Yes, I agree
+
+
+ Remove-AzureTrafficManagerProfile Operation failed.
+
+
+ Successfully removed Traffic Manager profile with name {0}.
+
+
+ Are you sure you want to remove the Traffic Manager profile "{0}"?
+
+
+ Profile {0} already has an endpoint with name {1}
+
+
+ Profile {0} does not contain endpoint {1}. Adding it.
+
+
+ The endpoint {0} cannot be removed from profile {1} because it's not in the profile.
+
+
+ Insufficient parameters passed to create a new endpoint.
+
+
+ Ambiguous operation: the profile name specified doesn't match the name of the profile object.
+
+
+ <NONE>
+
+
+
+
+
+ "An exception occurred when calling the ServiceManagement API. HTTP Status Code: {0}. Service Management Error Code: {1}. Message: {2}. Operation Tracking ID: {3}."
+ {0} is the HTTP status code. {1} is the Service Management Error Code. {2} is the Service Management Error message. {3} is the operation tracking ID.
+
+
+ Unable to decode string from base 64. Please make sure the string is correctly encoded: {0}.
+ {0} is the string that is not in a valid base 64 format.
+
+
+ -Credential parameter can only be used with Organization ID credentials. For more information, please refer to http://go.microsoft.com/fwlink/?linkid=331007&clcid=0x409 for more information about the difference between an organizational account and a Microsoft account.
+
+
+ Skipping external tenant {0}, because you are using a guest or a foreign principal object identity. In order to access this tenant, please run Add-AzureAccount without "-Credential".
+
+
+ Removing an environment will remove all associated subscriptions and accounts. Are you sure you want to remove an environment '{0}'?
+
+
+ Removing environment
+
+
+ Removing public environment is not supported.
+
+
+ Changing public environment is not supported.
+
+
+ Credential type invalid, only handles '{0}'
+
+
+ Illegal credential type
+
+
+ There is no subscription associated with account {0}.
+
+
+ Account id doesn't match one in subscription.
+
+
+ Environment name doesn't match one in subscription.
+
+
+ Unable to retrieve service key for ServicePrincipal account {0}. Please run the Add-AzureAccount cmdlet to supply the credentials for this service principal.
+
+
+ Removing the Azure profile will remove all associated environments, subscriptions, and accounts. Are you sure you want to remove the Azure profile?
+
+
+ Removing the Azure profile
+
+
+ The SubscriptionDataFile parameter is deprecated. This parameter will be removed in a future release. See https://github.com/Azure/azure-powershell/wiki/Proposed-Design-Stateless-Azure-Profile for a description of the upcoming mechanism for providing alternate sources of subscription information.
+
+
\ No newline at end of file
diff --git a/src/Common/Commands.Common/Utilities/DictionaryExtensions.cs b/src/Common/Azure.Common.Extensions/Utilities/DictionaryExtensions.cs
similarity index 98%
rename from src/Common/Commands.Common/Utilities/DictionaryExtensions.cs
rename to src/Common/Azure.Common.Extensions/Utilities/DictionaryExtensions.cs
index 1eaaa77c3b6c..19c2f027c20a 100644
--- a/src/Common/Commands.Common/Utilities/DictionaryExtensions.cs
+++ b/src/Common/Azure.Common.Extensions/Utilities/DictionaryExtensions.cs
@@ -16,7 +16,7 @@
using System.Collections.Generic;
using System.Linq;
-namespace Microsoft.WindowsAzure.Commands.Common.Utilities
+namespace Microsoft.Azure.Common.Extensions.Utilities
{
public static class DictionaryExtensions
{
diff --git a/src/Common/Commands.Common/Utilities/FileUtilities.cs b/src/Common/Azure.Common.Extensions/Utilities/FileUtilities.cs
similarity index 98%
rename from src/Common/Commands.Common/Utilities/FileUtilities.cs
rename to src/Common/Azure.Common.Extensions/Utilities/FileUtilities.cs
index 33ce3f25c731..0a1aa121f2a9 100644
--- a/src/Common/Commands.Common/Utilities/FileUtilities.cs
+++ b/src/Common/Azure.Common.Extensions/Utilities/FileUtilities.cs
@@ -12,17 +12,17 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Interfaces;
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.Azure.Common.Extensions.Properties;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
-using Microsoft.WindowsAzure.Commands.Common.Interfaces;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common
+namespace Microsoft.Azure.Common.Extensions
{
public static class FileUtilities
{
diff --git a/src/Common/Commands.Common/Utilities/JsonUtilities.cs b/src/Common/Azure.Common.Extensions/Utilities/JsonUtilities.cs
similarity index 97%
rename from src/Common/Commands.Common/Utilities/JsonUtilities.cs
rename to src/Common/Azure.Common.Extensions/Utilities/JsonUtilities.cs
index fda8d38e39d9..775718642225 100644
--- a/src/Common/Commands.Common/Utilities/JsonUtilities.cs
+++ b/src/Common/Azure.Common.Extensions/Utilities/JsonUtilities.cs
@@ -12,15 +12,14 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Properties;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
-using System.Web.Script.Serialization;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common
+namespace Microsoft.Azure.Common.Extensions
{
public static class JsonUtilities
{
diff --git a/src/Common/Commands.Common/Utilities/XmlUtilities.cs b/src/Common/Azure.Common.Extensions/Utilities/XmlUtilities.cs
similarity index 97%
rename from src/Common/Commands.Common/Utilities/XmlUtilities.cs
rename to src/Common/Azure.Common.Extensions/Utilities/XmlUtilities.cs
index 9d2af2753947..834c12df07bc 100644
--- a/src/Common/Commands.Common/Utilities/XmlUtilities.cs
+++ b/src/Common/Azure.Common.Extensions/Utilities/XmlUtilities.cs
@@ -12,15 +12,15 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Properties;
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.Xml.Serialization;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common
+namespace Microsoft.Azure.Common.Extensions
{
public static class XmlUtilities
{
diff --git a/src/Common/Commands.Common/XmlSchema/PublishProfile.cs b/src/Common/Azure.Common.Extensions/XmlSchema/PublishProfile.cs
similarity index 98%
rename from src/Common/Commands.Common/XmlSchema/PublishProfile.cs
rename to src/Common/Azure.Common.Extensions/XmlSchema/PublishProfile.cs
index 4eb2764bf1a0..852dff1f026e 100644
--- a/src/Common/Commands.Common/XmlSchema/PublishProfile.cs
+++ b/src/Common/Azure.Common.Extensions/XmlSchema/PublishProfile.cs
@@ -24,7 +24,7 @@
using System.Xml.Serialization;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema
+namespace Microsoft.Azure.Common.Extensions.XmlSchema
{
///
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
diff --git a/src/Common/Azure.Common.Extensions/packages.config b/src/Common/Azure.Common.Extensions/packages.config
new file mode 100644
index 000000000000..56b52b68db88
--- /dev/null
+++ b/src/Common/Azure.Common.Extensions/packages.config
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Common/Commands.Common.Storage/Commands.Common.Storage.csproj b/src/Common/Commands.Common.Storage/Commands.Common.Storage.csproj
index b1b8cc0d7dab..8c32acd701c8 100644
--- a/src/Common/Commands.Common.Storage/Commands.Common.Storage.csproj
+++ b/src/Common/Commands.Common.Storage/Commands.Common.Storage.csproj
@@ -131,6 +131,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{5ee72c53-1720-4309-b54b-5fb79703195f}
Commands.Common
diff --git a/src/Common/Commands.Common.Storage/WindowsAzureSubscriptionExtensions.cs b/src/Common/Commands.Common.Storage/WindowsAzureSubscriptionExtensions.cs
index fdeb4d022aeb..9e9294f98d9b 100644
--- a/src/Common/Commands.Common.Storage/WindowsAzureSubscriptionExtensions.cs
+++ b/src/Common/Commands.Common.Storage/WindowsAzureSubscriptionExtensions.cs
@@ -15,10 +15,11 @@
using System;
using System.Collections.Generic;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Storage;
using Microsoft.WindowsAzure.Management.Storage;
using Microsoft.WindowsAzure.Storage;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.Common
{
diff --git a/src/Common/Commands.Common.Test/Commands.Common.Test.csproj b/src/Common/Commands.Common.Test/Commands.Common.Test.csproj
index cde8cb977aa3..052b5d184fa0 100644
--- a/src/Common/Commands.Common.Test/Commands.Common.Test.csproj
+++ b/src/Common/Commands.Common.Test/Commands.Common.Test.csproj
@@ -187,6 +187,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{65c3a86a-716d-4e7d-ab67-1db00b3bf72d}
Commands.Common.Storage
diff --git a/src/Common/Commands.Common.Test/Common/AuthenticationFactoryTests.cs b/src/Common/Commands.Common.Test/Common/AuthenticationFactoryTests.cs
index 3dd6a921c807..1c40dff9da38 100644
--- a/src/Common/Commands.Common.Test/Common/AuthenticationFactoryTests.cs
+++ b/src/Common/Commands.Common.Test/Common/AuthenticationFactoryTests.cs
@@ -15,10 +15,10 @@
using System.Collections.Generic;
using Xunit;
using System;
-using Microsoft.WindowsAzure.Commands.Common.Factories;
+using Microsoft.Azure.Common.Extensions.Factories;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Common;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Authentication;
+using Microsoft.Azure.Common.Extensions.Models;
namespace Microsoft.WindowsAzure.Commands.Common.Test.Common
{
@@ -34,7 +34,7 @@ public void VerifySubscriptionTokenCacheRemove()
var subscriptionId = Guid.NewGuid();
- var credential = authFactory.GetSubscriptionCloudCredentials(new Models.AzureContext
+ var credential = authFactory.GetSubscriptionCloudCredentials(new AzureContext
{
Environment = AzureEnvironment.PublicEnvironments["AzureCloud"],
Account = new AzureAccount
diff --git a/src/Common/Commands.Common.Test/Common/ConversionUtilitiesTests.cs b/src/Common/Commands.Common.Test/Common/ConversionUtilitiesTests.cs
index ed098a0d1679..68cf9479d686 100644
--- a/src/Common/Commands.Common.Test/Common/ConversionUtilitiesTests.cs
+++ b/src/Common/Commands.Common.Test/Common/ConversionUtilitiesTests.cs
@@ -15,6 +15,7 @@
using System.Collections.Generic;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Xunit;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Common.Test
{
diff --git a/src/Common/Commands.Common.Test/Common/Data.cs b/src/Common/Commands.Common.Test/Common/Data.cs
index d3199651a331..18c6d3189341 100644
--- a/src/Common/Commands.Common.Test/Common/Data.cs
+++ b/src/Common/Commands.Common.Test/Common/Data.cs
@@ -19,6 +19,8 @@
using Microsoft.WindowsAzure.Commands.Common.Properties;
using Microsoft.WindowsAzure.Commands.ServiceManagement.Model;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.WindowsAzure.Commands.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Utilities.Common
{
diff --git a/src/Common/Commands.Common.Test/Common/GeneralTests.cs b/src/Common/Commands.Common.Test/Common/GeneralTests.cs
index 91f4cf38197c..52c47af4e469 100644
--- a/src/Common/Commands.Common.Test/Common/GeneralTests.cs
+++ b/src/Common/Commands.Common.Test/Common/GeneralTests.cs
@@ -16,6 +16,7 @@
using System.IO;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Xunit;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Common.Test.Common
{
diff --git a/src/Common/Commands.Common.Test/Common/JsonUtilitiesTests.cs b/src/Common/Commands.Common.Test/Common/JsonUtilitiesTests.cs
index e2dfd02e0a3c..9d01c351e8e7 100644
--- a/src/Common/Commands.Common.Test/Common/JsonUtilitiesTests.cs
+++ b/src/Common/Commands.Common.Test/Common/JsonUtilitiesTests.cs
@@ -19,6 +19,7 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Xunit;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Common.Test.Common
{
diff --git a/src/Common/Commands.Common.Test/Common/ProfileClientTests.cs b/src/Common/Commands.Common.Test/Common/ProfileClientTests.cs
index 222da7747089..334469eefacf 100644
--- a/src/Common/Commands.Common.Test/Common/ProfileClientTests.cs
+++ b/src/Common/Commands.Common.Test/Common/ProfileClientTests.cs
@@ -17,12 +17,13 @@
using System.IO;
using System.Linq;
using Microsoft.Azure.Subscriptions.Models;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Profile;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
+using Microsoft.Azure.Common.Extensions.Authentication;
using Xunit;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Common.Test.Common
{
@@ -290,6 +291,10 @@ public void AddAzureAccountReturnsAccountWithAllSubscriptionsInCsmMode()
Assert.True(account.GetSubscriptions(client.Profile).Any(s => s.Id == new Guid(csmSubscription1.SubscriptionId)));
}
+ ///
+ /// Verify that if a user has a different identity in one tenant, the identity is not added if it has no
+ /// access to subscriptions
+ ///
[Fact]
public void AddAzureAccountWithImpersonatedGuestWithNoSubscriptions()
{
@@ -326,6 +331,10 @@ public void AddAzureAccountWithImpersonatedGuestWithNoSubscriptions()
Assert.Equal("UserA", subrdfe1.Account);
}
+ ///
+ /// Verify that multiple accounts can be added if a user has different identitities in different domains, linked to the same login
+ /// Verify that subscriptions with admin access forall accounts are added
+ ///
[Fact]
public void AddAzureAccountWithImpersonatedGuestWithSubscriptions()
{
@@ -346,7 +355,8 @@ public void AddAzureAccountWithImpersonatedGuestWithSubscriptions()
ProfileClient.DataStore = dataStore;
ProfileClient client = new ProfileClient();
- var account = client.AddAccountAndLoadSubscriptions(new AzureAccount { Id = "UserA", Type = AzureAccount.AccountType.User }, AzureEnvironment.PublicEnvironments[EnvironmentName.AzureCloud], null);
+ var account = client.AddAccountAndLoadSubscriptions(new AzureAccount { Id = "UserA", Type = AzureAccount.AccountType.User },
+ AzureEnvironment.PublicEnvironments[EnvironmentName.AzureCloud], null);
Assert.Equal("UserA", account.Id);
Assert.Equal(1, account.GetSubscriptions(client.Profile).Count);
@@ -363,6 +373,39 @@ public void AddAzureAccountWithImpersonatedGuestWithSubscriptions()
Assert.Equal("UserA", subrdfe1.Account);
Assert.Equal("UserB", subGuest.Account);
}
+ ///
+ /// Test that when account is added more than once with different capitalization, only a single account is added
+ /// and that accounts can be retrieved case-insensitively
+ ///
+ [Fact]
+ public void AddAzureAccountIsCaseInsensitive()
+ {
+ SetMocks(new[] { rdfeSubscription1, guestRdfeSubscription }.ToList(), new List(), new[] { commonTenant, guestTenant }.ToList(),
+ (userAccount, environment, tenant) =>
+ {
+ var token = new MockAccessToken
+ {
+ UserId = tenant == commonTenant.TenantId ? userAccount.Id : "USERA",
+ AccessToken = "def",
+ LoginType = LoginType.OrgId
+ };
+ userAccount.Id = token.UserId;
+ return token;
+ });
+ MockDataStore dataStore = new MockDataStore();
+ dataStore.VirtualStore[oldProfileDataPath] = oldProfileData;
+ ProfileClient.DataStore = dataStore;
+ ProfileClient client = new ProfileClient();
+
+ var account = client.AddAccountAndLoadSubscriptions(new AzureAccount { Id = "UserA", Type = AzureAccount.AccountType.User },
+ AzureEnvironment.PublicEnvironments[EnvironmentName.AzureCloud], null);
+
+ var userA = client.GetAccount("UserA");
+ var secondUserA = client.GetAccount("USERA");
+ Assert.NotNull(userA);
+ Assert.NotNull(secondUserA);
+ Assert.Equal(userA.Id, secondUserA.Id);
+ }
[Fact]
public void GetAzureAccountReturnsAccountWithSubscriptions()
@@ -1381,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
@@ -1396,7 +1441,7 @@ private void SetMockData()
oldProfileDataPath = System.IO.Path.Combine(AzurePowerShell.ProfileDirectory, AzurePowerShell.OldProfileFile);
oldProfileDataPathError = System.IO.Path.Combine(AzurePowerShell.ProfileDirectory, AzurePowerShell.OldProfileFileBackup);
oldProfileData = @"
-
+
AzureCloud
@@ -1505,7 +1550,7 @@ private void SetMockData()
";
oldProfileDataBadSubscription = @"
-
+
AzureCloud
@@ -1586,7 +1631,7 @@ private void SetMockData()
";
oldProfileDataCorruptedFile = @"
-
+
AzureCloud
diff --git a/src/Common/Commands.Common.Test/Common/ProfileCmdltsTests.cs b/src/Common/Commands.Common.Test/Common/ProfileCmdltsTests.cs
index 25ad50d3662c..b72bb2c66b66 100644
--- a/src/Common/Commands.Common.Test/Common/ProfileCmdltsTests.cs
+++ b/src/Common/Commands.Common.Test/Common/ProfileCmdltsTests.cs
@@ -22,13 +22,14 @@
using System.Security.Cryptography.X509Certificates;
using System.Text;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Profile;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
+using Microsoft.Azure.Common.Extensions.Authentication;
using Moq;
using Xunit;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Common.Test.Common
{
@@ -735,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/Common/RemoveAzurePublishSettings.cs b/src/Common/Commands.Common.Test/Common/RemoveAzurePublishSettings.cs
index 07819a16ea4e..6c5fa8acfa92 100644
--- a/src/Common/Commands.Common.Test/Common/RemoveAzurePublishSettings.cs
+++ b/src/Common/Commands.Common.Test/Common/RemoveAzurePublishSettings.cs
@@ -12,6 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions;
using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.Test.Utilities.Common
diff --git a/src/Common/Commands.Common.Test/Common/ServicePrincipalStoreTests.cs b/src/Common/Commands.Common.Test/Common/ServicePrincipalStoreTests.cs
index a3a8d4d59863..727260cdbf2a 100644
--- a/src/Common/Commands.Common.Test/Common/ServicePrincipalStoreTests.cs
+++ b/src/Common/Commands.Common.Test/Common/ServicePrincipalStoreTests.cs
@@ -12,10 +12,10 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Authentication;
using System;
using System.Runtime.InteropServices;
using System.Security;
-using Microsoft.WindowsAzure.Commands.Common.Authentication;
using Xunit;
using Assert = Xunit.Assert;
diff --git a/src/Common/Commands.Common.Test/Common/TestBase.cs b/src/Common/Commands.Common.Test/Common/TestBase.cs
index 1d45fbe53e34..9e36cc6c2c61 100644
--- a/src/Common/Commands.Common.Test/Common/TestBase.cs
+++ b/src/Common/Commands.Common.Test/Common/TestBase.cs
@@ -16,9 +16,10 @@
using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Utilities.Common
{
diff --git a/src/Common/Commands.Common.Test/Mocks/MockAccessToken.cs b/src/Common/Commands.Common.Test/Mocks/MockAccessToken.cs
index de070b5a63f7..72037f0e2809 100644
--- a/src/Common/Commands.Common.Test/Mocks/MockAccessToken.cs
+++ b/src/Common/Commands.Common.Test/Mocks/MockAccessToken.cs
@@ -13,7 +13,7 @@
// ----------------------------------------------------------------------------------
using System;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
+using Microsoft.Azure.Common.Extensions.Authentication;
namespace Microsoft.WindowsAzure.Commands.Common.Test.Mocks
{
diff --git a/src/Common/Commands.Common.Test/Mocks/MockAccessTokenProvider.cs b/src/Common/Commands.Common.Test/Mocks/MockAccessTokenProvider.cs
index 50bc854b8e87..34bfe4adb8d6 100644
--- a/src/Common/Commands.Common.Test/Mocks/MockAccessTokenProvider.cs
+++ b/src/Common/Commands.Common.Test/Mocks/MockAccessTokenProvider.cs
@@ -13,9 +13,9 @@
// ----------------------------------------------------------------------------------
using System.Security;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
+using Microsoft.Azure.Common.Extensions.Authentication;
namespace Microsoft.WindowsAzure.Commands.Test.Utilities.Common
{
diff --git a/src/Common/Commands.Common.Test/Mocks/MockCertificateAuthenticationFactory.cs b/src/Common/Commands.Common.Test/Mocks/MockCertificateAuthenticationFactory.cs
index 746486b575b3..792e281095a5 100644
--- a/src/Common/Commands.Common.Test/Mocks/MockCertificateAuthenticationFactory.cs
+++ b/src/Common/Commands.Common.Test/Mocks/MockCertificateAuthenticationFactory.cs
@@ -14,8 +14,9 @@
using System.Security;
using System.Security.Cryptography.X509Certificates;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.Azure.Common.Extensions.Authentication;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Common.Test.Mocks
{
@@ -33,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/MockClientFactory.cs b/src/Common/Commands.Common.Test/Mocks/MockClientFactory.cs
index 12ede8e14c8d..fca693ee7621 100644
--- a/src/Common/Commands.Common.Test/Mocks/MockClientFactory.cs
+++ b/src/Common/Commands.Common.Test/Mocks/MockClientFactory.cs
@@ -18,9 +18,10 @@
using System.Net;
using System.Net.Http;
using Microsoft.Azure.Utilities.HttpRecorder;
-using Microsoft.WindowsAzure.Commands.Common.Factories;
-using Microsoft.WindowsAzure.Commands.Common.Models;
using Microsoft.WindowsAzure.Common;
+using Microsoft.Azure.Common.Extensions.Factories;
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Common.Test.Mocks
{
diff --git a/src/Common/Commands.Common.Test/Mocks/MockDataStore.cs b/src/Common/Commands.Common.Test/Mocks/MockDataStore.cs
index 5f975085054c..55b2f053632b 100644
--- a/src/Common/Commands.Common.Test/Mocks/MockDataStore.cs
+++ b/src/Common/Commands.Common.Test/Mocks/MockDataStore.cs
@@ -19,7 +19,7 @@
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Text.RegularExpressions;
-using Microsoft.WindowsAzure.Commands.Common.Interfaces;
+using Microsoft.Azure.Common.Extensions.Interfaces;
namespace Microsoft.WindowsAzure.Commands.Common.Test.Mocks
{
diff --git a/src/Common/Commands.Common.Test/Mocks/MockTokenAuthenticationFactory.cs b/src/Common/Commands.Common.Test/Mocks/MockTokenAuthenticationFactory.cs
index 8269cdb7e422..b5925680cf8d 100644
--- a/src/Common/Commands.Common.Test/Mocks/MockTokenAuthenticationFactory.cs
+++ b/src/Common/Commands.Common.Test/Mocks/MockTokenAuthenticationFactory.cs
@@ -15,8 +15,9 @@
using System;
using System.Security;
using System.Security.Cryptography.X509Certificates;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.Azure.Common.Extensions.Authentication;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Common.Test.Mocks
{
@@ -53,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/Common/AzurePSCmdlet.cs b/src/Common/Commands.Common/AzurePSCmdlet.cs
similarity index 95%
rename from src/Common/Commands.Common/Common/AzurePSCmdlet.cs
rename to src/Common/Commands.Common/AzurePSCmdlet.cs
index 15bc85031677..abf5f1496930 100644
--- a/src/Common/Commands.Common/Common/AzurePSCmdlet.cs
+++ b/src/Common/Commands.Common/AzurePSCmdlet.cs
@@ -12,12 +12,13 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions;
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.WindowsAzure.Commands.Common;
+using Microsoft.WindowsAzure.Commands.Common.Properties;
using System;
using System.Diagnostics;
using System.Management.Automation;
-using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
namespace Microsoft.WindowsAzure.Commands.Utilities.Common
{
@@ -25,6 +26,16 @@ public abstract class AzurePSCmdlet : PSCmdlet
{
private readonly RecordingTracingInterceptor httpTracingInterceptor = new RecordingTracingInterceptor();
+ static AzurePSCmdlet()
+ {
+ if (!TestMockSupport.RunningMocked)
+ {
+ AzureSession.ClientFactory.AddAction(new RPRegistrationAction());
+ }
+
+ AzureSession.ClientFactory.UserAgents.Add(AzurePowerShell.UserAgentValue);
+ }
+
public AzurePSCmdlet()
{
DefaultProfileClient = new ProfileClient();
diff --git a/src/Common/Commands.Common/Common/AzurePowerShell.cs b/src/Common/Commands.Common/AzurePowerShell.cs
similarity index 80%
rename from src/Common/Commands.Common/Common/AzurePowerShell.cs
rename to src/Common/Commands.Common/AzurePowerShell.cs
index a78b979298a3..8a83a71d76c5 100644
--- a/src/Common/Commands.Common/Common/AzurePowerShell.cs
+++ b/src/Common/Commands.Common/AzurePowerShell.cs
@@ -12,9 +12,10 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions.Properties;
using System;
using System.IO;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
+using System.Net.Http.Headers;
namespace Microsoft.WindowsAzure.Commands.Common
{
@@ -26,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";
@@ -38,6 +39,10 @@ public class AzurePowerShell
public const string TokenCacheFile = "TokenCache.dat";
+ public static ProductInfoHeaderValue UserAgentValue = new ProductInfoHeaderValue(
+ "AzurePowershell",
+ string.Format("v{0}", AzurePowerShell.AssemblyVersion));
+
public static string ProfileDirectory = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
Resources.AzureDirectoryName);
diff --git a/src/Common/Commands.Common/Common/ChannelHelper.cs b/src/Common/Commands.Common/ChannelHelper.cs
similarity index 99%
rename from src/Common/Commands.Common/Common/ChannelHelper.cs
rename to src/Common/Commands.Common/ChannelHelper.cs
index 3dd385d3273c..57a41327e92b 100644
--- a/src/Common/Commands.Common/Common/ChannelHelper.cs
+++ b/src/Common/Commands.Common/ChannelHelper.cs
@@ -12,6 +12,8 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.WindowsAzure.Commands.Common;
+using Microsoft.WindowsAzure.Commands.ServiceManagement.Model;
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
@@ -27,7 +29,6 @@
using System.Text;
using System.Threading;
using System.Xml;
-using Microsoft.WindowsAzure.Commands.ServiceManagement.Model;
namespace Microsoft.WindowsAzure.Commands.Utilities.Common
{
@@ -300,7 +301,7 @@ public class UserAgentMessageProcessingHandler : MessageProcessingHandler
{
protected override HttpRequestMessage ProcessRequest(HttpRequestMessage request, CancellationToken cancellationToken)
{
- request.Headers.UserAgent.Add(ApiConstants.UserAgentValue);
+ request.Headers.UserAgent.Add(AzurePowerShell.UserAgentValue);
return request;
}
diff --git a/src/Common/Commands.Common/Common/ClientCreatedArgs.cs b/src/Common/Commands.Common/ClientCreatedArgs.cs
similarity index 100%
rename from src/Common/Commands.Common/Common/ClientCreatedArgs.cs
rename to src/Common/Commands.Common/ClientCreatedArgs.cs
diff --git a/src/Common/Commands.Common/Common/CloudBaseCmdlet.cs b/src/Common/Commands.Common/CloudBaseCmdlet.cs
similarity index 98%
rename from src/Common/Commands.Common/Common/CloudBaseCmdlet.cs
rename to src/Common/Commands.Common/CloudBaseCmdlet.cs
index 6f1cfb01292f..b8a8ee7a4412 100644
--- a/src/Common/Commands.Common/Common/CloudBaseCmdlet.cs
+++ b/src/Common/Commands.Common/CloudBaseCmdlet.cs
@@ -12,18 +12,18 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions;
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.WindowsAzure.Commands.Common.Properties;
+using Microsoft.WindowsAzure.Commands.ServiceManagement.Model;
using System;
+using System.Diagnostics;
using System.Globalization;
using System.Management.Automation;
using System.Net;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Security;
-using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
-using Microsoft.WindowsAzure.Commands.ServiceManagement.Model;
-using System.Diagnostics;
namespace Microsoft.WindowsAzure.Commands.Utilities.Common
{
diff --git a/src/Common/Commands.Common/Common/CmdletExtensions.cs b/src/Common/Commands.Common/CmdletExtensions.cs
similarity index 100%
rename from src/Common/Commands.Common/Common/CmdletExtensions.cs
rename to src/Common/Commands.Common/CmdletExtensions.cs
diff --git a/src/Common/Commands.Common/Commands.Common.csproj b/src/Common/Commands.Common/Commands.Common.csproj
index 8a7df1ba2964..1c07ac6e9cdb 100644
--- a/src/Common/Commands.Common/Commands.Common.csproj
+++ b/src/Common/Commands.Common/Commands.Common.csproj
@@ -134,79 +134,32 @@
-
-
-
-
-
-
-
-
- True
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True
@@ -221,11 +174,16 @@
-
Designer
+
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
+
diff --git a/src/Common/Commands.Common/Common/ManagementConstants.cs b/src/Common/Commands.Common/Common/ManagementConstants.cs
index 269eaa2c119d..0de6c33ad716 100644
--- a/src/Common/Commands.Common/Common/ManagementConstants.cs
+++ b/src/Common/Commands.Common/Common/ManagementConstants.cs
@@ -119,5 +119,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";
}
}
\ No newline at end of file
diff --git a/src/Common/Commands.Common/Common/ConfigurationConstants.cs b/src/Common/Commands.Common/ConfigurationConstants.cs
similarity index 100%
rename from src/Common/Commands.Common/Common/ConfigurationConstants.cs
rename to src/Common/Commands.Common/ConfigurationConstants.cs
diff --git a/src/Common/Commands.Common/Constants.cs b/src/Common/Commands.Common/Constants.cs
new file mode 100644
index 000000000000..33794d1e455d
--- /dev/null
+++ b/src/Common/Commands.Common/Constants.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.
+// ----------------------------------------------------------------------------------
+
+namespace Microsoft.WindowsAzure.Commands.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 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
+ }
+}
diff --git a/src/Common/Commands.Common/Utilities/ConversionUtilities.cs b/src/Common/Commands.Common/ConversionUtilities.cs
similarity index 98%
rename from src/Common/Commands.Common/Utilities/ConversionUtilities.cs
rename to src/Common/Commands.Common/ConversionUtilities.cs
index 464ebd4f59ea..270b4153b08a 100644
--- a/src/Common/Commands.Common/Utilities/ConversionUtilities.cs
+++ b/src/Common/Commands.Common/ConversionUtilities.cs
@@ -20,7 +20,7 @@
using System.Security;
using System.Text;
-namespace Microsoft.WindowsAzure.Commands.Utilities.Common
+namespace Microsoft.WindowsAzure.Commands.Common
{
public static class ConversionUtilities
{
diff --git a/src/Common/Commands.Common/Common/ErrorHelper.cs b/src/Common/Commands.Common/ErrorHelper.cs
similarity index 99%
rename from src/Common/Commands.Common/Common/ErrorHelper.cs
rename to src/Common/Commands.Common/ErrorHelper.cs
index 0b931ec57c58..26cddb43a87a 100644
--- a/src/Common/Commands.Common/Common/ErrorHelper.cs
+++ b/src/Common/Commands.Common/ErrorHelper.cs
@@ -12,11 +12,12 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.WindowsAzure.Commands.Common;
+using Microsoft.WindowsAzure.Commands.ServiceManagement.Model;
using System.IO;
using System.Net;
using System.ServiceModel;
using System.Xml;
-using Microsoft.WindowsAzure.Commands.ServiceManagement.Model;
namespace Microsoft.WindowsAzure.Commands.Utilities.Common
{
diff --git a/src/Common/Commands.Common/Utilities/GeneralUtilities.cs b/src/Common/Commands.Common/GeneralUtilities.cs
similarity index 99%
rename from src/Common/Commands.Common/Utilities/GeneralUtilities.cs
rename to src/Common/Commands.Common/GeneralUtilities.cs
index 02189364034e..04098501bd36 100644
--- a/src/Common/Commands.Common/Utilities/GeneralUtilities.cs
+++ b/src/Common/Commands.Common/GeneralUtilities.cs
@@ -12,10 +12,13 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions;
+using Microsoft.Azure.Common.Extensions.Properties;
+using Microsoft.WindowsAzure.Commands.Common;
+using Microsoft.WindowsAzure.Common.Internals;
using System;
using System.Collections.Generic;
using System.Diagnostics;
-using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
@@ -27,8 +30,6 @@
using System.ServiceModel.Channels;
using System.Text;
using System.Xml;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
-using Microsoft.WindowsAzure.Common.Internals;
namespace Microsoft.WindowsAzure.Commands.Utilities.Common
{
diff --git a/src/Common/Commands.Common/Common/HttpClientExtensions.cs b/src/Common/Commands.Common/HttpClientExtensions.cs
similarity index 96%
rename from src/Common/Commands.Common/Common/HttpClientExtensions.cs
rename to src/Common/Commands.Common/HttpClientExtensions.cs
index b5df42f25c46..1571324e132f 100644
--- a/src/Common/Commands.Common/Common/HttpClientExtensions.cs
+++ b/src/Common/Commands.Common/HttpClientExtensions.cs
@@ -13,13 +13,13 @@
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions;
+using Microsoft.WindowsAzure.Commands.Common;
+using Newtonsoft.Json;
using System;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
-using System.Threading.Tasks;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
namespace Microsoft.WindowsAzure.Commands.Utilities.Common
{
@@ -27,9 +27,9 @@ public static class HttpClientExtensions
{
private static void AddUserAgent(HttpClient client)
{
- if (!client.DefaultRequestHeaders.UserAgent.Contains(ApiConstants.UserAgentValue))
+ if (!client.DefaultRequestHeaders.UserAgent.Contains(AzurePowerShell.UserAgentValue))
{
- client.DefaultRequestHeaders.UserAgent.Add(ApiConstants.UserAgentValue);
+ client.DefaultRequestHeaders.UserAgent.Add(AzurePowerShell.UserAgentValue);
}
}
diff --git a/src/Common/Commands.Common/Common/HttpRestCallLogger.cs b/src/Common/Commands.Common/HttpRestCallLogger.cs
similarity index 100%
rename from src/Common/Commands.Common/Common/HttpRestCallLogger.cs
rename to src/Common/Commands.Common/HttpRestCallLogger.cs
diff --git a/src/Common/Commands.Common/Common/HttpRestMessageInspector.cs b/src/Common/Commands.Common/HttpRestMessageInspector.cs
similarity index 100%
rename from src/Common/Commands.Common/Common/HttpRestMessageInspector.cs
rename to src/Common/Commands.Common/HttpRestMessageInspector.cs
diff --git a/src/Common/Commands.Common/Common/IdnHelper.cs b/src/Common/Commands.Common/IdnHelper.cs
similarity index 100%
rename from src/Common/Commands.Common/Common/IdnHelper.cs
rename to src/Common/Commands.Common/IdnHelper.cs
diff --git a/src/Common/Commands.Common/Common/ManagementOperationContext.cs b/src/Common/Commands.Common/ManagementOperationContext.cs
similarity index 100%
rename from src/Common/Commands.Common/Common/ManagementOperationContext.cs
rename to src/Common/Commands.Common/ManagementOperationContext.cs
diff --git a/src/Common/Commands.Common/Common/PSAzureAccount.cs b/src/Common/Commands.Common/PSAzureAccount.cs
similarity index 94%
rename from src/Common/Commands.Common/Common/PSAzureAccount.cs
rename to src/Common/Commands.Common/PSAzureAccount.cs
index df62a50e8989..f39fcd405d0c 100644
--- a/src/Common/Commands.Common/Common/PSAzureAccount.cs
+++ b/src/Common/Commands.Common/PSAzureAccount.cs
@@ -12,7 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
-namespace Microsoft.WindowsAzure.Commands.Common.Models
+namespace Microsoft.Azure.Common.Extensions.Models
{
public class PSAzureAccount
{
diff --git a/src/Common/Commands.Common/Common/Parameters.cs b/src/Common/Commands.Common/Parameters.cs
similarity index 100%
rename from src/Common/Commands.Common/Common/Parameters.cs
rename to src/Common/Commands.Common/Parameters.cs
diff --git a/src/Common/Commands.Common/Utilities/PowerShellUtilities.cs b/src/Common/Commands.Common/PowerShellUtilities.cs
similarity index 100%
rename from src/Common/Commands.Common/Utilities/PowerShellUtilities.cs
rename to src/Common/Commands.Common/PowerShellUtilities.cs
diff --git a/src/Common/Commands.Common/Common/ProcessHelper.cs b/src/Common/Commands.Common/ProcessHelper.cs
similarity index 100%
rename from src/Common/Commands.Common/Common/ProcessHelper.cs
rename to src/Common/Commands.Common/ProcessHelper.cs
diff --git a/src/Common/Commands.Common/Common/ProfileClientExtensions.cs b/src/Common/Commands.Common/ProfileClientExtensions.cs
similarity index 96%
rename from src/Common/Commands.Common/Common/ProfileClientExtensions.cs
rename to src/Common/Commands.Common/ProfileClientExtensions.cs
index 795eec2bcc99..5a14b5d566c7 100644
--- a/src/Common/Commands.Common/Common/ProfileClientExtensions.cs
+++ b/src/Common/Commands.Common/ProfileClientExtensions.cs
@@ -12,7 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
namespace Microsoft.WindowsAzure.Commands.Common
{
diff --git a/src/Common/Commands.Common/Properties/Resources.Designer.cs b/src/Common/Commands.Common/Properties/Resources.Designer.cs
index 1a8465743d8b..aadcee8cea7b 100644
--- a/src/Common/Commands.Common/Properties/Resources.Designer.cs
+++ b/src/Common/Commands.Common/Properties/Resources.Designer.cs
@@ -8,10 +8,10 @@
//
//------------------------------------------------------------------------------
-namespace Microsoft.WindowsAzure.Commands.Common.Properties {
- using System;
-
-
+namespace Microsoft.WindowsAzure.Commands.Common.Properties
+{
+
+
///
/// A strongly-typed resource class, for looking up localized strings, etc.
///
diff --git a/src/Common/Commands.Common/Models/RecordingTracingInterceptor.cs b/src/Common/Commands.Common/RecordingTracingInterceptor.cs
similarity index 97%
rename from src/Common/Commands.Common/Models/RecordingTracingInterceptor.cs
rename to src/Common/Commands.Common/RecordingTracingInterceptor.cs
index 03b40f1815e7..6cd9ed9406eb 100644
--- a/src/Common/Commands.Common/Models/RecordingTracingInterceptor.cs
+++ b/src/Common/Commands.Common/RecordingTracingInterceptor.cs
@@ -12,13 +12,14 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.WindowsAzure;
+using Microsoft.WindowsAzure.Commands.Utilities.Common;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Net.Http;
-using Microsoft.WindowsAzure.Commands.Utilities.Common;
-namespace Microsoft.WindowsAzure.Commands.Common.Models
+namespace Microsoft.Azure.Common.Extensions.Models
{
public class RecordingTracingInterceptor : ICloudTracingInterceptor
{
@@ -26,7 +27,7 @@ public RecordingTracingInterceptor()
{
MessageQueue = new ConcurrentQueue();
}
-
+
public ConcurrentQueue MessageQueue { get; private set; }
private void Write(string message, params object[] arguments)
diff --git a/src/Common/Commands.Common/Common/ServiceManagementTypes.cs b/src/Common/Commands.Common/ServiceManagementTypes.cs
similarity index 100%
rename from src/Common/Commands.Common/Common/ServiceManagementTypes.cs
rename to src/Common/Commands.Common/ServiceManagementTypes.cs
index b613f7e99ace..b2aeb7aaa4b4 100644
--- a/src/Common/Commands.Common/Common/ServiceManagementTypes.cs
+++ b/src/Common/Commands.Common/ServiceManagementTypes.cs
@@ -14,6 +14,7 @@
//TODO: When transition to SM.NET is completed, rename the namespace to "Microsoft.WindowsAzure.ServiceManagement"
+using Microsoft.WindowsAzure.Commands.Common.Properties;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
@@ -27,7 +28,6 @@
using System.ServiceModel.Web;
using System.Text;
using System.Xml;
-using Microsoft.WindowsAzure.Commands.Common.Properties;
namespace Microsoft.WindowsAzure.Commands.ServiceManagement.Model
{
diff --git a/src/Common/Commands.Common/Common/SubscriptionCmdletBase.cs b/src/Common/Commands.Common/SubscriptionCmdletBase.cs
similarity index 98%
rename from src/Common/Commands.Common/Common/SubscriptionCmdletBase.cs
rename to src/Common/Commands.Common/SubscriptionCmdletBase.cs
index f7860d025ae0..91031a45c851 100644
--- a/src/Common/Commands.Common/Common/SubscriptionCmdletBase.cs
+++ b/src/Common/Commands.Common/SubscriptionCmdletBase.cs
@@ -12,10 +12,10 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
-using System.Management.Automation;
-using Microsoft.WindowsAzure.Commands.Common;
+using Microsoft.Azure.Common.Extensions;
using Microsoft.WindowsAzure.Commands.Common.Properties;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using System.Management.Automation;
namespace Microsoft.WindowsAzure.Commands.Utilities.Profile
{
diff --git a/src/Common/Commands.Common/Common/Tasks.cs b/src/Common/Commands.Common/Tasks.cs
similarity index 100%
rename from src/Common/Commands.Common/Common/Tasks.cs
rename to src/Common/Commands.Common/Tasks.cs
diff --git a/src/Common/Commands.Common/Common/TestMockSupport.cs b/src/Common/Commands.Common/TestMockSupport.cs
similarity index 100%
rename from src/Common/Commands.Common/Common/TestMockSupport.cs
rename to src/Common/Commands.Common/TestMockSupport.cs
diff --git a/src/Common/Commands.Profile/Account/AddAzureAccount.cs b/src/Common/Commands.Profile/Account/AddAzureAccount.cs
index 99027ed9630d..d6793e6522d9 100644
--- a/src/Common/Commands.Profile/Account/AddAzureAccount.cs
+++ b/src/Common/Commands.Profile/Account/AddAzureAccount.cs
@@ -15,7 +15,7 @@
using System.Management.Automation;
using System.Security;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Properties;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Profile;
diff --git a/src/Common/Commands.Profile/Account/GetAzureAccount.cs b/src/Common/Commands.Profile/Account/GetAzureAccount.cs
index 5af5642e9b3a..ad63b8dc70ee 100644
--- a/src/Common/Commands.Profile/Account/GetAzureAccount.cs
+++ b/src/Common/Commands.Profile/Account/GetAzureAccount.cs
@@ -14,7 +14,7 @@
using System.Management.Automation;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Utilities.Profile;
using System.Collections.Generic;
diff --git a/src/Common/Commands.Profile/Account/RemoveAzureAccount.cs b/src/Common/Commands.Profile/Account/RemoveAzureAccount.cs
index 01a103c100ad..5e16e019cf35 100644
--- a/src/Common/Commands.Profile/Account/RemoveAzureAccount.cs
+++ b/src/Common/Commands.Profile/Account/RemoveAzureAccount.cs
@@ -13,7 +13,7 @@
// ----------------------------------------------------------------------------------
using System.Management.Automation;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Properties;
using Microsoft.WindowsAzure.Commands.Utilities.Profile;
diff --git a/src/Common/Commands.Profile/Commands.Profile.csproj b/src/Common/Commands.Profile/Commands.Profile.csproj
index 0b1154c8cefa..c8dfd0f6e933 100644
--- a/src/Common/Commands.Profile/Commands.Profile.csproj
+++ b/src/Common/Commands.Profile/Commands.Profile.csproj
@@ -143,6 +143,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{5ee72c53-1720-4309-b54b-5fb79703195f}
Commands.Common
diff --git a/src/Common/Commands.Profile/Environment/AddAzureEnvironment.cs b/src/Common/Commands.Profile/Environment/AddAzureEnvironment.cs
index 06b42ada3921..1af9a1b1ff14 100644
--- a/src/Common/Commands.Profile/Environment/AddAzureEnvironment.cs
+++ b/src/Common/Commands.Profile/Environment/AddAzureEnvironment.cs
@@ -14,7 +14,7 @@
using System.Management.Automation;
using System.Security.Permissions;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Utilities.Profile;
using System.Collections.Generic;
using System;
@@ -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
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{3b48a77b-5956-4a62-9081-92ba04b02b27}
Commands.Common.Test
diff --git a/src/Common/Commands.ScenarioTest/Common/PowerShellTest.cs b/src/Common/Commands.ScenarioTest/Common/PowerShellTest.cs
index 8408bf5c15d4..27dc682af445 100644
--- a/src/Common/Commands.ScenarioTest/Common/PowerShellTest.cs
+++ b/src/Common/Commands.ScenarioTest/Common/PowerShellTest.cs
@@ -20,6 +20,7 @@
using Microsoft.WindowsAzure.Commands.Common.Test.Common;
using Microsoft.WindowsAzure.Commands.ScenarioTest.Resources;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.ScenarioTest.Common
{
diff --git a/src/Common/Commands.ScenarioTest/Common/ServiceManagementTestEnvironmentFactory.cs b/src/Common/Commands.ScenarioTest/Common/ServiceManagementTestEnvironmentFactory.cs
index 146ecc8bac3b..da5fe60bcfb1 100644
--- a/src/Common/Commands.ScenarioTest/Common/ServiceManagementTestEnvironmentFactory.cs
+++ b/src/Common/Commands.ScenarioTest/Common/ServiceManagementTestEnvironmentFactory.cs
@@ -22,6 +22,8 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema;
using Microsoft.WindowsAzure.Common.Internals;
+using Microsoft.Azure.Common.Extensions;
+using Microsoft.Azure.Common.Extensions.XmlSchema;
namespace Microsoft.WindowsAzure.Commands.ScenarioTest.Common
{
diff --git a/src/Common/Commands.ScenarioTest/Common/WindowsAzurePowerShellCertificateTest.cs b/src/Common/Commands.ScenarioTest/Common/WindowsAzurePowerShellCertificateTest.cs
index 121bba1156f6..1cad2ff4d32f 100644
--- a/src/Common/Commands.ScenarioTest/Common/WindowsAzurePowerShellCertificateTest.cs
+++ b/src/Common/Commands.ScenarioTest/Common/WindowsAzurePowerShellCertificateTest.cs
@@ -22,6 +22,8 @@
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Testing;
+using Microsoft.Azure.Common.Extensions;
+using Microsoft.Azure.Common.Extensions.Models;
namespace Microsoft.WindowsAzure.Commands.ScenarioTest.Common
{
diff --git a/src/Common/Commands.ScenarioTest/CredentialTests/AddAccountForArmTests.cs b/src/Common/Commands.ScenarioTest/CredentialTests/AddAccountForArmTests.cs
index 2ccf8513cb62..c29a3c4f28ad 100644
--- a/src/Common/Commands.ScenarioTest/CredentialTests/AddAccountForArmTests.cs
+++ b/src/Common/Commands.ScenarioTest/CredentialTests/AddAccountForArmTests.cs
@@ -12,6 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Xunit;
using Xunit.Extensions;
diff --git a/src/Common/Commands.ScenarioTest/CredentialTests/CredentialTestBase.cs b/src/Common/Commands.ScenarioTest/CredentialTests/CredentialTestBase.cs
index fd75b199535b..5a6c8dd425c0 100644
--- a/src/Common/Commands.ScenarioTest/CredentialTests/CredentialTestBase.cs
+++ b/src/Common/Commands.ScenarioTest/CredentialTests/CredentialTestBase.cs
@@ -16,6 +16,7 @@
using System.Linq;
using System.Management.Automation;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.ScenarioTest.CredentialTests
{
diff --git a/src/Common/Commands.ScenarioTest/CredentialTests/CredentialTestHelper.cs b/src/Common/Commands.ScenarioTest/CredentialTests/CredentialTestHelper.cs
index 04b590c9d0a0..a764f52988d6 100644
--- a/src/Common/Commands.ScenarioTest/CredentialTests/CredentialTestHelper.cs
+++ b/src/Common/Commands.ScenarioTest/CredentialTests/CredentialTestHelper.cs
@@ -19,6 +19,7 @@
using Microsoft.WindowsAzure.Commands.Common;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.ScenarioTest.CredentialTests
{
diff --git a/src/Common/Commands.ScenarioTest/Scheduler/SchedulerTests.cs b/src/Common/Commands.ScenarioTest/Scheduler/SchedulerTests.cs
index 1051882d468d..2b88c873a64c 100644
--- a/src/Common/Commands.ScenarioTest/Scheduler/SchedulerTests.cs
+++ b/src/Common/Commands.ScenarioTest/Scheduler/SchedulerTests.cs
@@ -20,6 +20,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Testing;
using Xunit;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.ScenarioTest
{
diff --git a/src/Common/Commands.ScenarioTest/TrafficManagerTests/TrafficManagerTests.cs b/src/Common/Commands.ScenarioTest/TrafficManagerTests/TrafficManagerTests.cs
index 3d9213993f26..1b6b5451e141 100644
--- a/src/Common/Commands.ScenarioTest/TrafficManagerTests/TrafficManagerTests.cs
+++ b/src/Common/Commands.ScenarioTest/TrafficManagerTests/TrafficManagerTests.cs
@@ -20,6 +20,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Testing;
using Xunit;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.ScenarioTest
{
diff --git a/src/Common/Commands.ScenarioTest/WebsitesTests/WebsitesTestsBase.cs b/src/Common/Commands.ScenarioTest/WebsitesTests/WebsitesTestsBase.cs
index 43bcb1169aaa..7a68556d1e00 100644
--- a/src/Common/Commands.ScenarioTest/WebsitesTests/WebsitesTestsBase.cs
+++ b/src/Common/Commands.ScenarioTest/WebsitesTests/WebsitesTestsBase.cs
@@ -20,6 +20,7 @@
using Microsoft.WindowsAzure.Management.Storage;
using Microsoft.WindowsAzure.Management.WebSites;
using Microsoft.WindowsAzure.Testing;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.ScenarioTest.WebsitesTests
{
diff --git a/src/Common/Commands.ScenarioTests.Common/Commands.ScenarioTests.Common.csproj b/src/Common/Commands.ScenarioTests.Common/Commands.ScenarioTests.Common.csproj
index 9470c6f55c73..2de84d0e510d 100644
--- a/src/Common/Commands.ScenarioTests.Common/Commands.ScenarioTests.Common.csproj
+++ b/src/Common/Commands.ScenarioTests.Common/Commands.ScenarioTests.Common.csproj
@@ -123,6 +123,10 @@
{bc420543-c04e-4bf3-96e1-cd81b823bdd7}
Commands.Test.Utilities
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{3b48a77b-5956-4a62-9081-92ba04b02b27}
Commands.Common.Test
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/Common/Commands.ScenarioTests.Common/EnvironmentSetupHelper.cs b/src/Common/Commands.ScenarioTests.Common/EnvironmentSetupHelper.cs
index e0839b2350cd..09186ab53cf9 100644
--- a/src/Common/Commands.ScenarioTests.Common/EnvironmentSetupHelper.cs
+++ b/src/Common/Commands.ScenarioTests.Common/EnvironmentSetupHelper.cs
@@ -19,11 +19,12 @@
using System.Security.Cryptography.X509Certificates;
using Microsoft.Azure.Utilities.HttpRecorder;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Testing;
using System.Diagnostics;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.ScenarioTest
{
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/Batch/Commands.Batch.Test/Commands.Batch.Test.csproj b/src/ResourceManager/Batch/Commands.Batch.Test/Commands.Batch.Test.csproj
index da45d376c28e..39fc0f191441 100644
--- a/src/ResourceManager/Batch/Commands.Batch.Test/Commands.Batch.Test.csproj
+++ b/src/ResourceManager/Batch/Commands.Batch.Test/Commands.Batch.Test.csproj
@@ -55,7 +55,7 @@
False
- ..\..\..\packages\Microsoft.Azure.Management.Resources.2.6.0-preview\lib\net40\Microsoft.Azure.ResourceManager.dll
+ ..\..\..\packages\Microsoft.Azure.Management.Resources.2.7.0-preview\lib\net40\Microsoft.Azure.ResourceManager.dll
False
@@ -157,6 +157,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{3b48a77b-5956-4a62-9081-92ba04b02b27}
Commands.Common.Test
diff --git a/src/ResourceManager/Batch/Commands.Batch.Test/ScenarioTests/BatchController.cs b/src/ResourceManager/Batch/Commands.Batch.Test/ScenarioTests/BatchController.cs
index 6e7703f939da..80d7419bd882 100644
--- a/src/ResourceManager/Batch/Commands.Batch.Test/ScenarioTests/BatchController.cs
+++ b/src/ResourceManager/Batch/Commands.Batch.Test/ScenarioTests/BatchController.cs
@@ -12,6 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions;
using Microsoft.Azure.Gallery;
using Microsoft.Azure.Management.Authorization;
using Microsoft.Azure.Management.Batch;
diff --git a/src/ResourceManager/Batch/Commands.Batch.Test/packages.config b/src/ResourceManager/Batch/Commands.Batch.Test/packages.config
index e7a0c36525c5..36f4b333b3be 100644
--- a/src/ResourceManager/Batch/Commands.Batch.Test/packages.config
+++ b/src/ResourceManager/Batch/Commands.Batch.Test/packages.config
@@ -5,7 +5,7 @@
-
+
diff --git a/src/ResourceManager/Batch/Commands.Batch/BatchClient.cs b/src/ResourceManager/Batch/Commands.Batch/BatchClient.cs
index ba26940632e8..7bd6e73ee855 100644
--- a/src/ResourceManager/Batch/Commands.Batch/BatchClient.cs
+++ b/src/ResourceManager/Batch/Commands.Batch/BatchClient.cs
@@ -13,12 +13,13 @@
// ----------------------------------------------------------------------------------
using Microsoft.Azure.Commands.Batch.Properties;
+using Microsoft.Azure.Common.Extensions;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.Azure.Management.Batch;
using Microsoft.Azure.Management.Batch.Models;
using Microsoft.Azure.Management.Resources;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
using System;
using System.Collections;
using System.Collections.Generic;
diff --git a/src/ResourceManager/Batch/Commands.Batch/BatchCmdletBase.cs b/src/ResourceManager/Batch/Commands.Batch/BatchCmdletBase.cs
index 09a2cca6a9cc..74c6e56c1634 100644
--- a/src/ResourceManager/Batch/Commands.Batch/BatchCmdletBase.cs
+++ b/src/ResourceManager/Batch/Commands.Batch/BatchCmdletBase.cs
@@ -12,6 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Common.Internals;
diff --git a/src/ResourceManager/Batch/Commands.Batch/Commands.Batch.csproj b/src/ResourceManager/Batch/Commands.Batch/Commands.Batch.csproj
index d01d791cdd41..049c1f1e4d3b 100644
--- a/src/ResourceManager/Batch/Commands.Batch/Commands.Batch.csproj
+++ b/src/ResourceManager/Batch/Commands.Batch/Commands.Batch.csproj
@@ -47,7 +47,7 @@
False
- ..\..\..\packages\Microsoft.Azure.Management.Resources.2.6.0-preview\lib\net40\Microsoft.Azure.ResourceManager.dll
+ ..\..\..\packages\Microsoft.Azure.Management.Resources.2.7.0-preview\lib\net40\Microsoft.Azure.ResourceManager.dll
False
@@ -130,6 +130,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{5ee72c53-1720-4309-b54b-5fb79703195f}
Commands.Common
diff --git a/src/ResourceManager/Batch/Commands.Batch/packages.config b/src/ResourceManager/Batch/Commands.Batch/packages.config
index 9551c518b2b6..fc23e5fd4cc1 100644
--- a/src/ResourceManager/Batch/Commands.Batch/packages.config
+++ b/src/ResourceManager/Batch/Commands.Batch/packages.config
@@ -1,7 +1,7 @@
-
+
diff --git a/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Commands.DataFactories.Test.csproj b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Commands.DataFactories.Test.csproj
index 3b4589012854..a56c340f32ee 100644
--- a/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Commands.DataFactories.Test.csproj
+++ b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/Commands.DataFactories.Test.csproj
@@ -275,6 +275,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{c1bda476-a5cc-4394-914d-48b0ec31a710}
Commands.ScenarioTests.Common
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/ScenarioTests/DataFactoriesScenarioTestsBase.cs b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/ScenarioTests/DataFactoriesScenarioTestsBase.cs
index 0f8a9700bda4..55684c826064 100644
--- a/src/ResourceManager/DataFactories/Commands.DataFactories.Test/ScenarioTests/DataFactoriesScenarioTestsBase.cs
+++ b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/ScenarioTests/DataFactoriesScenarioTestsBase.cs
@@ -12,6 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions;
using Microsoft.Azure.Gallery;
using Microsoft.Azure.Management.Authorization;
using Microsoft.Azure.Management.DataFactories;
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/DataFactories/Commands.DataFactories.Test/UnitTests/NewDataFactoryTests.cs b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/UnitTests/NewDataFactoryTests.cs
index d39c00f72358..0cf5d56959a6 100644
--- a/src/ResourceManager/DataFactories/Commands.DataFactories.Test/UnitTests/NewDataFactoryTests.cs
+++ b/src/ResourceManager/DataFactories/Commands.DataFactories.Test/UnitTests/NewDataFactoryTests.cs
@@ -17,7 +17,7 @@
using Microsoft.Azure.Management.DataFactories.Models;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Commands.ScenarioTest;
-using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.WindowsAzure.Commands.Common;
using Moq;
using Xunit;
diff --git a/src/ResourceManager/DataFactories/Commands.DataFactories/Commands.DataFactories.csproj b/src/ResourceManager/DataFactories/Commands.DataFactories/Commands.DataFactories.csproj
index 8f9119a49e28..e5f9759f391c 100644
--- a/src/ResourceManager/DataFactories/Commands.DataFactories/Commands.DataFactories.csproj
+++ b/src/ResourceManager/DataFactories/Commands.DataFactories/Commands.DataFactories.csproj
@@ -189,6 +189,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{65c3a86a-716d-4e7d-ab67-1db00b3bf72d}
Commands.Common.Storage
diff --git a/src/ResourceManager/DataFactories/Commands.DataFactories/DataFactoryCommonUtilities.cs b/src/ResourceManager/DataFactories/Commands.DataFactories/DataFactoryCommonUtilities.cs
index cbf016351a4c..d3916e93c8d1 100644
--- a/src/ResourceManager/DataFactories/Commands.DataFactories/DataFactoryCommonUtilities.cs
+++ b/src/ResourceManager/DataFactories/Commands.DataFactories/DataFactoryCommonUtilities.cs
@@ -21,6 +21,7 @@
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Newtonsoft.Json;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.Azure.Commands.DataFactories
{
diff --git a/src/ResourceManager/DataFactories/Commands.DataFactories/Models/DataFactoryClient.cs b/src/ResourceManager/DataFactories/Commands.DataFactories/Models/DataFactoryClient.cs
index e872b5984e22..9de6c60116c6 100644
--- a/src/ResourceManager/DataFactories/Commands.DataFactories/Models/DataFactoryClient.cs
+++ b/src/ResourceManager/DataFactories/Commands.DataFactories/Models/DataFactoryClient.cs
@@ -15,12 +15,13 @@
using System.IO;
using Microsoft.Azure.Management.DataFactories;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.Azure.Commands.DataFactories.Properties;
using System;
using Microsoft.WindowsAzure.Storage.Blob;
using Microsoft.WindowsAzure.Storage;
using System.Net;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.Azure.Commands.DataFactories
{
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/RedisCache/Commands.RedisCache.Test/Commands.RedisCache.Test.csproj b/src/ResourceManager/RedisCache/Commands.RedisCache.Test/Commands.RedisCache.Test.csproj
index 2684f6c3919f..9d97b35690d5 100644
--- a/src/ResourceManager/RedisCache/Commands.RedisCache.Test/Commands.RedisCache.Test.csproj
+++ b/src/ResourceManager/RedisCache/Commands.RedisCache.Test/Commands.RedisCache.Test.csproj
@@ -125,6 +125,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{c1bda476-a5cc-4394-914d-48b0ec31a710}
Commands.ScenarioTests.Common
diff --git a/src/ResourceManager/RedisCache/Commands.RedisCache.Test/ScenarioTests/RedisCacheTestsBase.cs b/src/ResourceManager/RedisCache/Commands.RedisCache.Test/ScenarioTests/RedisCacheTestsBase.cs
index 50e707b8874d..c6519b8ab712 100644
--- a/src/ResourceManager/RedisCache/Commands.RedisCache.Test/ScenarioTests/RedisCacheTestsBase.cs
+++ b/src/ResourceManager/RedisCache/Commands.RedisCache.Test/ScenarioTests/RedisCacheTestsBase.cs
@@ -19,6 +19,7 @@ namespace Microsoft.Azure.Commands.RedisCache.Test.ScenarioTests
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Testing;
using Microsoft.Azure.Management.Redis;
+ using Microsoft.Azure.Common.Extensions;
public abstract class RedisCacheTestsBase : IDisposable
{
diff --git a/src/ResourceManager/RedisCache/Commands.RedisCache/Commands.RedisCache.csproj b/src/ResourceManager/RedisCache/Commands.RedisCache/Commands.RedisCache.csproj
index 42ff601e2e7a..49d934539a72 100644
--- a/src/ResourceManager/RedisCache/Commands.RedisCache/Commands.RedisCache.csproj
+++ b/src/ResourceManager/RedisCache/Commands.RedisCache/Commands.RedisCache.csproj
@@ -123,6 +123,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{5ee72c53-1720-4309-b54b-5fb79703195f}
Commands.Common
diff --git a/src/ResourceManager/RedisCache/Commands.RedisCache/Models/RedisCacheClient.cs b/src/ResourceManager/RedisCache/Commands.RedisCache/Models/RedisCacheClient.cs
index 03ad3bd6740f..5260bdc592be 100644
--- a/src/ResourceManager/RedisCache/Commands.RedisCache/Models/RedisCacheClient.cs
+++ b/src/ResourceManager/RedisCache/Commands.RedisCache/Models/RedisCacheClient.cs
@@ -14,11 +14,12 @@
namespace Microsoft.Azure.Commands.RedisCache
{
+ using Microsoft.Azure.Common.Extensions;
+ using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.Azure.Management.Redis;
using Microsoft.Azure.Management.Redis.Models;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Commands.Common;
- using Microsoft.WindowsAzure.Commands.Common.Models;
public class RedisCacheClient
{
diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/Commands.Resources.Test.csproj b/src/ResourceManager/Resources/Commands.Resources.Test/Commands.Resources.Test.csproj
index 975cf29e00b3..960fccd5f28c 100644
--- a/src/ResourceManager/Resources/Commands.Resources.Test/Commands.Resources.Test.csproj
+++ b/src/ResourceManager/Resources/Commands.Resources.Test/Commands.Resources.Test.csproj
@@ -176,6 +176,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{c1bda476-a5cc-4394-914d-48b0ec31a710}
Commands.ScenarioTests.Common
@@ -246,6 +250,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest
diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/Models.ResourceGroups/ResourceClientTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/Models.ResourceGroups/ResourceClientTests.cs
index 36294e0a7132..24d28101b7ce 100644
--- a/src/ResourceManager/Resources/Commands.Resources.Test/Models.ResourceGroups/ResourceClientTests.cs
+++ b/src/ResourceManager/Resources/Commands.Resources.Test/Models.ResourceGroups/ResourceClientTests.cs
@@ -40,6 +40,7 @@
using Xunit;
using Xunit.Extensions;
using System.Diagnostics;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.Azure.Commands.Resources.Test.Models
{
diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/Resources/NewAzureResourceCommandTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/Resources/NewAzureResourceCommandTests.cs
index faa6bf162921..71553f72ec02 100644
--- a/src/ResourceManager/Resources/Commands.Resources.Test/Resources/NewAzureResourceCommandTests.cs
+++ b/src/ResourceManager/Resources/Commands.Resources.Test/Resources/NewAzureResourceCommandTests.cs
@@ -17,7 +17,7 @@
using System.Management.Automation;
using Microsoft.Azure.Commands.Resources.Models;
using Microsoft.WindowsAzure.Commands.ScenarioTest;
-using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.WindowsAzure.Commands.Common;
using Moq;
using Xunit;
diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/Resources/SetAzureResourceCommandTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/Resources/SetAzureResourceCommandTests.cs
index 50dad9739fa9..691c80133c4e 100644
--- a/src/ResourceManager/Resources/Commands.Resources.Test/Resources/SetAzureResourceCommandTests.cs
+++ b/src/ResourceManager/Resources/Commands.Resources.Test/Resources/SetAzureResourceCommandTests.cs
@@ -16,7 +16,7 @@
using System.Management.Automation;
using Microsoft.Azure.Commands.Resources.Models;
using Microsoft.WindowsAzure.Commands.ScenarioTest;
-using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.WindowsAzure.Commands.Common;
using Moq;
using Xunit;
diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ActiveDirectoryTests.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ActiveDirectoryTests.cs
index a0fb4863640c..a338336cb3ec 100644
--- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ActiveDirectoryTests.cs
+++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ActiveDirectoryTests.cs
@@ -424,6 +424,32 @@ public void TestGetADUserWithObjectId()
TestUtilities.GetCurrentMethodName());
}
+ [Fact]
+ [Trait(Category.AcceptanceType, Category.CheckIn)]
+ public void TestGetADUserWithMail()
+ {
+ const string scriptMethod = "Test-GetADUserWithMail '{0}'";
+ User newUser = null;
+ var controllerAdmin = ResourcesController.NewInstance;
+
+ controllerAdmin.RunPsTestWorkflow(
+ // scriptBuilder
+ () =>
+ {
+ newUser = CreateNewAdUser(controllerAdmin);
+ return new[] { string.Format(scriptMethod, newUser.UserPrincipalName) };
+ },
+ // initialize
+ null,
+ // cleanup
+ () =>
+ {
+ DeleteAdUser(controllerAdmin, newUser);
+ },
+ TestUtilities.GetCallingClass(),
+ TestUtilities.GetCurrentMethodName());
+ }
+
[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestGetADUserWithBadObjectId()
diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ActiveDirectoryTests.ps1 b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ActiveDirectoryTests.ps1
index a9050daad84d..31264e97f1ae 100644
--- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ActiveDirectoryTests.ps1
+++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ActiveDirectoryTests.ps1
@@ -306,6 +306,25 @@ function Test-GetADUserWithObjectId
Assert-NotNull($users[0].UserPrincipalName)
}
+
+<#
+.SYNOPSIS
+Tests getting Active Directory users by mail.
+#>
+function Test-GetADUserWithMail
+{
+ param([string]$mail)
+
+ # Test
+ $users = Get-AzureADUser -Mail $mail
+
+ # Assert
+ Assert-AreEqual $users.Count 1
+ Assert-AreEqual $users[0].Mail $mail
+ Assert-NotNull($users[0].DisplayName)
+ Assert-NotNull($users[0].UserPrincipalName)
+}
+
<#
.SYNOPSIS
Tests getting Active Directory users.
diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourcesController.cs b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourcesController.cs
index e29eda280d29..3174a07ce596 100644
--- a/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourcesController.cs
+++ b/src/ResourceManager/Resources/Commands.Resources.Test/ScenarioTests/ResourcesController.cs
@@ -12,6 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions;
using Microsoft.Azure.Gallery;
using Microsoft.Azure.Graph.RBAC;
using Microsoft.Azure.Management.Authorization;
diff --git a/src/ResourceManager/Resources/Commands.Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ActiveDirectoryTests/TestGetADUserWithMail.json b/src/ResourceManager/Resources/Commands.Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ActiveDirectoryTests/TestGetADUserWithMail.json
new file mode 100644
index 000000000000..7a364fe4da80
--- /dev/null
+++ b/src/ResourceManager/Resources/Commands.Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.ActiveDirectoryTests/TestGetADUserWithMail.json
@@ -0,0 +1,228 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "/1449d5b7-8a83-47db-ae4c-9b03e888bad0/users?api-version=1.42-previewInternal",
+ "EncodedRequestUri": "LzE0NDlkNWI3LThhODMtNDdkYi1hZTRjLTliMDNlODg4YmFkMC91c2Vycz9hcGktdmVyc2lvbj0xLjQyLXByZXZpZXdJbnRlcm5hbA==",
+ "RequestMethod": "POST",
+ "RequestBody": "{\r\n \"userPrincipalName\": \"aduser6859@rbactest.onmicrosoft.com\",\r\n \"accountEnabled\": true,\r\n \"displayName\": \"aduser6859\",\r\n \"mailNickname\": \"aduser6859test\",\r\n \"passwordProfile\": {\r\n \"password\": \"adpass39990#$\",\r\n \"forceChangePasswordNextLogin\": false\r\n }\r\n}",
+ "RequestHeaders": {
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Content-Length": [
+ "269"
+ ],
+ "User-Agent": [
+ "Microsoft.Azure.Graph.RBAC.GraphRbacManagementClient/1.0.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"odata.metadata\": \"https://graph.windows.net/1449d5b7-8a83-47db-ae4c-9b03e888bad0/$metadata#directoryObjects/Microsoft.WindowsAzure.ActiveDirectory.User/@Element\",\r\n \"odata.type\": \"Microsoft.WindowsAzure.ActiveDirectory.User\",\r\n \"objectType\": \"User\",\r\n \"objectId\": \"624fb7e1-f0e9-4bd0-94e4-6be174330d7a\",\r\n \"softDeletionTimestamp\": null,\r\n \"acceptedAs\": null,\r\n \"acceptedOn\": null,\r\n \"accountEnabled\": true,\r\n \"alternativeSecurityIds\": [],\r\n \"appMetadata\": null,\r\n \"assignedLicenses\": [],\r\n \"assignedPlans\": [],\r\n \"city\": null,\r\n \"country\": null,\r\n \"creationType\": null,\r\n \"department\": null,\r\n \"dirSyncEnabled\": null,\r\n \"displayName\": \"aduser6859\",\r\n \"extensionAttribute1\": null,\r\n \"extensionAttribute2\": null,\r\n \"extensionAttribute3\": null,\r\n \"extensionAttribute4\": null,\r\n \"extensionAttribute5\": null,\r\n \"extensionAttribute6\": null,\r\n \"extensionAttribute7\": null,\r\n \"extensionAttribute8\": null,\r\n \"extensionAttribute9\": null,\r\n \"extensionAttribute10\": null,\r\n \"extensionAttribute11\": null,\r\n \"extensionAttribute12\": null,\r\n \"extensionAttribute13\": null,\r\n \"extensionAttribute14\": null,\r\n \"extensionAttribute15\": null,\r\n \"facsimileTelephoneNumber\": null,\r\n \"givenName\": null,\r\n \"immutableId\": null,\r\n \"invitedOn\": null,\r\n \"inviteReplyUrl\": [],\r\n \"inviteResources\": [],\r\n \"inviteTicket\": [],\r\n \"isCompromised\": null,\r\n \"jobTitle\": null,\r\n \"jrnlAddress\": null,\r\n \"lastDirSyncTime\": null,\r\n \"logonIdentifiers\": [],\r\n \"mail\": null,\r\n \"mailNickname\": \"aduser6859test\",\r\n \"mobile\": null,\r\n \"netId\": \"1003BFFD8CE8F616\",\r\n \"onPremiseSecurityIdentifier\": null,\r\n \"otherMails\": [],\r\n \"passwordPolicies\": null,\r\n \"passwordProfile\": null,\r\n \"physicalDeliveryOfficeName\": null,\r\n \"postalCode\": null,\r\n \"preferredLanguage\": null,\r\n \"primarySMTPAddress\": null,\r\n \"provisionedPlans\": [],\r\n \"provisioningErrors\": [],\r\n \"proxyAddresses\": [],\r\n \"searchableDeviceKey\": [],\r\n \"selfServePasswordResetData\": null,\r\n \"signInName\": \"aduser6859@rbactest.onmicrosoft.com\",\r\n \"sipProxyAddress\": null,\r\n \"smtpAddresses\": [],\r\n \"state\": null,\r\n \"streetAddress\": null,\r\n \"surname\": null,\r\n \"telephoneNumber\": null,\r\n \"usageLocation\": null,\r\n \"userPrincipalName\": \"aduser6859@rbactest.onmicrosoft.com\",\r\n \"userState\": null,\r\n \"userStateChangedOn\": null,\r\n \"userType\": \"Member\"\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "1955"
+ ],
+ "Content-Type": [
+ "application/json; odata=minimalmetadata; streaming=true; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "ocp-aad-diagnostics-server-name": [
+ "VbwAPpHBrDNXWFpR18OzHh/NfNdUKGwRD1NUkhGV+bc="
+ ],
+ "request-id": [
+ "515f205d-bfa4-43d9-8e8c-0efcc12628e5"
+ ],
+ "client-request-id": [
+ "ee413c51-7f45-4f90-9ea2-9fe81a052b35"
+ ],
+ "x-ms-gateway-rewrite": [
+ "false"
+ ],
+ "x-ms-dirapi-data-contract-version": [
+ "1.42-previewInternal"
+ ],
+ "ocp-aad-session-key": [
+ "7pQeXZlxkCDyFVMe9qlvVNcY1zjLI89KWuj5wy4_7s_J8zs7sTod6U8rZqUcKE7Vckag9APQpW7mjnS3_SlRN4cMrAQtIMeVsdhGmcREH3BF5GF7ITYtkVDqOMw56FczqCcGeLyKhHEcK_k_5n_NmA.hMGeoesuXuqu5sM0QGtrgvAc2dPtLGyJ8bDadv01RoM"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "DataServiceVersion": [
+ "3.0;"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=15724800; includeSubDomains"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Location": [
+ "https://graph.windows.net/1449d5b7-8a83-47db-ae4c-9b03e888bad0/directoryObjects/624fb7e1-f0e9-4bd0-94e4-6be174330d7a/Microsoft.WindowsAzure.ActiveDirectory.User"
+ ],
+ "Server": [
+ "Microsoft-IIS/8.5"
+ ],
+ "X-AspNet-Version": [
+ "4.0.30319"
+ ],
+ "X-Powered-By": [
+ "ASP.NET",
+ "ASP.NET"
+ ],
+ "Date": [
+ "Fri, 12 Dec 2014 19:50:12 GMT"
+ ]
+ },
+ "StatusCode": 201
+ },
+ {
+ "RequestUri": "/1449d5b7-8a83-47db-ae4c-9b03e888bad0/users?$filter=signInName%20eq%20'aduser6859%40rbactest.onmicrosoft.com'&api-version=1.42-previewInternal",
+ "EncodedRequestUri": "LzE0NDlkNWI3LThhODMtNDdkYi1hZTRjLTliMDNlODg4YmFkMC91c2Vycz8kZmlsdGVyPXNpZ25Jbk5hbWUlMjBlcSUyMCdhZHVzZXI2ODU5JTQwcmJhY3Rlc3Qub25taWNyb3NvZnQuY29tJyZhcGktdmVyc2lvbj0xLjQyLXByZXZpZXdJbnRlcm5hbA==",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "User-Agent": [
+ "Microsoft.Azure.Graph.RBAC.GraphRbacManagementClient/1.0.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"odata.metadata\": \"https://graph.windows.net/1449d5b7-8a83-47db-ae4c-9b03e888bad0/$metadata#directoryObjects/Microsoft.WindowsAzure.ActiveDirectory.User\",\r\n \"value\": [\r\n {\r\n \"odata.type\": \"Microsoft.WindowsAzure.ActiveDirectory.User\",\r\n \"objectType\": \"User\",\r\n \"objectId\": \"624fb7e1-f0e9-4bd0-94e4-6be174330d7a\",\r\n \"softDeletionTimestamp\": null,\r\n \"acceptedAs\": null,\r\n \"acceptedOn\": null,\r\n \"accountEnabled\": true,\r\n \"alternativeSecurityIds\": [],\r\n \"appMetadata\": null,\r\n \"assignedLicenses\": [],\r\n \"assignedPlans\": [],\r\n \"city\": null,\r\n \"country\": null,\r\n \"creationType\": null,\r\n \"department\": null,\r\n \"dirSyncEnabled\": null,\r\n \"displayName\": \"aduser6859\",\r\n \"extensionAttribute1\": null,\r\n \"extensionAttribute2\": null,\r\n \"extensionAttribute3\": null,\r\n \"extensionAttribute4\": null,\r\n \"extensionAttribute5\": null,\r\n \"extensionAttribute6\": null,\r\n \"extensionAttribute7\": null,\r\n \"extensionAttribute8\": null,\r\n \"extensionAttribute9\": null,\r\n \"extensionAttribute10\": null,\r\n \"extensionAttribute11\": null,\r\n \"extensionAttribute12\": null,\r\n \"extensionAttribute13\": null,\r\n \"extensionAttribute14\": null,\r\n \"extensionAttribute15\": null,\r\n \"facsimileTelephoneNumber\": null,\r\n \"givenName\": null,\r\n \"immutableId\": null,\r\n \"invitedOn\": null,\r\n \"inviteReplyUrl\": [],\r\n \"inviteResources\": [],\r\n \"inviteTicket\": [],\r\n \"isCompromised\": null,\r\n \"jobTitle\": null,\r\n \"jrnlAddress\": null,\r\n \"lastDirSyncTime\": null,\r\n \"logonIdentifiers\": [],\r\n \"mail\": null,\r\n \"mailNickname\": \"aduser6859test\",\r\n \"mobile\": null,\r\n \"netId\": \"1003BFFD8CE8F616\",\r\n \"onPremiseSecurityIdentifier\": null,\r\n \"otherMails\": [],\r\n \"passwordPolicies\": null,\r\n \"passwordProfile\": null,\r\n \"physicalDeliveryOfficeName\": null,\r\n \"postalCode\": null,\r\n \"preferredLanguage\": null,\r\n \"primarySMTPAddress\": null,\r\n \"provisionedPlans\": [],\r\n \"provisioningErrors\": [],\r\n \"proxyAddresses\": [],\r\n \"searchableDeviceKey\": [],\r\n \"selfServePasswordResetData\": null,\r\n \"signInName\": \"aduser6859@rbactest.onmicrosoft.com\",\r\n \"sipProxyAddress\": null,\r\n \"smtpAddresses\": [],\r\n \"state\": null,\r\n \"streetAddress\": null,\r\n \"surname\": null,\r\n \"telephoneNumber\": null,\r\n \"usageLocation\": null,\r\n \"userPrincipalName\": \"aduser6859@rbactest.onmicrosoft.com\",\r\n \"userState\": null,\r\n \"userStateChangedOn\": null,\r\n \"userType\": \"Member\"\r\n }\r\n ]\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "1958"
+ ],
+ "Content-Type": [
+ "application/json; odata=minimalmetadata; streaming=true; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "ocp-aad-diagnostics-server-name": [
+ "VbwAPpHBrDNXWFpR18OzHh/NfNdUKGwRD1NUkhGV+bc="
+ ],
+ "request-id": [
+ "b0d0b4b3-4455-46fc-81ee-53152a0302c3"
+ ],
+ "client-request-id": [
+ "5009830e-a05a-495f-80d6-6505e91eca79"
+ ],
+ "x-ms-gateway-rewrite": [
+ "false"
+ ],
+ "x-ms-dirapi-data-contract-version": [
+ "1.42-previewInternal"
+ ],
+ "ocp-aad-session-key": [
+ "2KTRY1wJ6jc3C2KvLU-HPLXlHPSSLnwVl6erB6dGxlcUiieIf8wHyqtlMhR7MAPzV7ZO1OB2QWbCqgSZ4QlMITokGSuJDLf8upMI0ZS6bgP7U23x0paEGaN_Xq_VB8FnMLBNWydY3yJ5pdGaEDKp2A.moFqgqvaMEXVR4QXDiWPbSaEvBsMDyvyKU7SI3fKyMc"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "DataServiceVersion": [
+ "3.0;"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=15724800; includeSubDomains"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-IIS/8.5"
+ ],
+ "X-AspNet-Version": [
+ "4.0.30319"
+ ],
+ "X-Powered-By": [
+ "ASP.NET",
+ "ASP.NET"
+ ],
+ "Date": [
+ "Fri, 12 Dec 2014 19:50:14 GMT"
+ ]
+ },
+ "StatusCode": 200
+ },
+ {
+ "RequestUri": "/1449d5b7-8a83-47db-ae4c-9b03e888bad0/users/624fb7e1-f0e9-4bd0-94e4-6be174330d7a?api-version=1.42-previewInternal",
+ "EncodedRequestUri": "LzE0NDlkNWI3LThhODMtNDdkYi1hZTRjLTliMDNlODg4YmFkMC91c2Vycy82MjRmYjdlMS1mMGU5LTRiZDAtOTRlNC02YmUxNzQzMzBkN2E/YXBpLXZlcnNpb249MS40Mi1wcmV2aWV3SW50ZXJuYWw=",
+ "RequestMethod": "DELETE",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "User-Agent": [
+ "Microsoft.Azure.Graph.RBAC.GraphRbacManagementClient/1.0.0.0"
+ ]
+ },
+ "ResponseBody": "",
+ "ResponseHeaders": {
+ "Expires": [
+ "-1"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "ocp-aad-diagnostics-server-name": [
+ "VbwAPpHBrDNXWFpR18OzHh/NfNdUKGwRD1NUkhGV+bc="
+ ],
+ "request-id": [
+ "136e45ca-4a69-44e9-8cd2-4371aef57868"
+ ],
+ "client-request-id": [
+ "1da1480a-638f-47d8-b6f2-8ed4e6980027"
+ ],
+ "x-ms-gateway-rewrite": [
+ "false"
+ ],
+ "x-ms-dirapi-data-contract-version": [
+ "1.42-previewInternal"
+ ],
+ "ocp-aad-session-key": [
+ "HolbQidtxArNqvDuekS9inE2xJViCAJ8wwVq-HOxPCIEEaeXhvkcqJOuuzATNwpX7g6ECj5TTIYM4IQtJMfR4hO9hySjQXS-yVwR4UBwHvliCqYkLFql_BdMnxmpSs6Txd8CvUByIHz-J_xdPTy6Kw.S_dVfFzvVrqJMiERTrn-T8-h8eTXiBM2RgDogdfVEFc"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ],
+ "DataServiceVersion": [
+ "1.0;"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=15724800; includeSubDomains"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-IIS/8.5"
+ ],
+ "X-AspNet-Version": [
+ "4.0.30319"
+ ],
+ "X-Powered-By": [
+ "ASP.NET",
+ "ASP.NET"
+ ],
+ "Date": [
+ "Fri, 12 Dec 2014 19:50:16 GMT"
+ ]
+ },
+ "StatusCode": 204
+ }
+ ],
+ "Names": {
+ "CreateNewAdUser": [
+ "aduser6859",
+ "adpass3999"
+ ]
+ },
+ "Variables": {
+ "SubscriptionId": "3ca49042-782a-4cc9-89b5-ee1b487fe115",
+ "TenantId": "1449d5b7-8a83-47db-ae4c-9b03e888bad0",
+ "Domain": "rbactest.onmicrosoft.com"
+ }
+}
\ 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/ActiveDirectory/GetAzureADUserCommand.cs b/src/ResourceManager/Resources/Commands.Resources/ActiveDirectory/GetAzureADUserCommand.cs
index d94f4c669fe9..7b567893647e 100644
--- a/src/ResourceManager/Resources/Commands.Resources/ActiveDirectory/GetAzureADUserCommand.cs
+++ b/src/ResourceManager/Resources/Commands.Resources/ActiveDirectory/GetAzureADUserCommand.cs
@@ -44,6 +44,11 @@ public class GetAzureADUserCommand : ActiveDirectoryBaseCmdlet
[Alias("UPN")]
public string UserPrincipalName { get; set; }
+ [Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true, ParameterSetName = ParameterSet.Mail,
+ HelpMessage = "The user mail.")]
+ [ValidateNotNullOrEmpty]
+ public string Mail { get; set; }
+
public override void ExecuteCmdlet()
{
ADObjectFilterOptions options = new ADObjectFilterOptions
@@ -51,7 +56,8 @@ public override void ExecuteCmdlet()
SearchString = SearchString,
UPN = UserPrincipalName,
Id = ObjectId == Guid.Empty ? null : ObjectId.ToString(),
- Paging = true
+ Paging = true,
+ Mail = Mail
};
do
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 4acac539e020..fa7b88269758 100644
--- a/src/ResourceManager/Resources/Commands.Resources/Commands.Resources.csproj
+++ b/src/ResourceManager/Resources/Commands.Resources/Commands.Resources.csproj
@@ -210,6 +210,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{5ee72c53-1720-4309-b54b-5fb79703195f}
Commands.Common
@@ -222,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/ResourceManager/Resources/Commands.Resources/Models.ActiveDirectory/ActiveDirectoryClient.cs b/src/ResourceManager/Resources/Commands.Resources/Models.ActiveDirectory/ActiveDirectoryClient.cs
index b7475ca21fcc..483a39ff5381 100644
--- a/src/ResourceManager/Resources/Commands.Resources/Models.ActiveDirectory/ActiveDirectoryClient.cs
+++ b/src/ResourceManager/Resources/Commands.Resources/Models.ActiveDirectory/ActiveDirectoryClient.cs
@@ -15,12 +15,13 @@
using Microsoft.Azure.Graph.RBAC;
using Microsoft.Azure.Graph.RBAC.Models;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
+using Microsoft.Azure.Common.Extensions.Models;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
+using Microsoft.Azure.Common.Extensions.Authentication;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.Azure.Commands.Resources.Models.ActiveDirectory
{
diff --git a/src/ResourceManager/Resources/Commands.Resources/Models.ActiveDirectory/PSADObject.cs b/src/ResourceManager/Resources/Commands.Resources/Models.ActiveDirectory/PSADObject.cs
index 493ca15dd90e..ba9ddd9ddd69 100644
--- a/src/ResourceManager/Resources/Commands.Resources/Models.ActiveDirectory/PSADObject.cs
+++ b/src/ResourceManager/Resources/Commands.Resources/Models.ActiveDirectory/PSADObject.cs
@@ -15,7 +15,6 @@
using System;
using System.Collections.Generic;
using System.Management.Automation;
-using Microsoft.WindowsAzure.Commands.Common.Utilities;
namespace Microsoft.Azure.Commands.Resources.Models.ActiveDirectory
{
diff --git a/src/ResourceManager/Resources/Commands.Resources/Models.Authorization/AuthorizationClient.cs b/src/ResourceManager/Resources/Commands.Resources/Models.Authorization/AuthorizationClient.cs
index 6ef94d622729..abfa4fefdb75 100644
--- a/src/ResourceManager/Resources/Commands.Resources/Models.Authorization/AuthorizationClient.cs
+++ b/src/ResourceManager/Resources/Commands.Resources/Models.Authorization/AuthorizationClient.cs
@@ -16,12 +16,13 @@
using Microsoft.Azure.Management.Authorization;
using Microsoft.Azure.Management.Authorization.Models;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using ProjectResources = Microsoft.Azure.Commands.Resources.Properties.Resources;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.Azure.Commands.Resources.Models.Authorization
{
diff --git a/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/GalleryTemplatesClient.cs b/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/GalleryTemplatesClient.cs
index dbe14c7bbeba..8b887a0e560b 100644
--- a/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/GalleryTemplatesClient.cs
+++ b/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/GalleryTemplatesClient.cs
@@ -27,11 +27,12 @@
using Microsoft.Azure.Gallery.Models;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Common.OData;
using Newtonsoft.Json;
using ProjectResources = Microsoft.Azure.Commands.Resources.Properties.Resources;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.Azure.Commands.Resources.Models
{
diff --git a/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/ResourceClient.cs b/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/ResourceClient.cs
index 1111d933e694..6d93e9741201 100644
--- a/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/ResourceClient.cs
+++ b/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/ResourceClient.cs
@@ -24,7 +24,7 @@
using Microsoft.Azure.Management.Resources.Models;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Management.Monitoring.Events;
using Newtonsoft.Json;
@@ -33,6 +33,7 @@
using Microsoft.Azure.Management.Authorization.Models;
using Microsoft.Azure.Commands.Resources.Models.Authorization;
using System.Diagnostics;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.Azure.Commands.Resources.Models
{
diff --git a/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/ResourceWithParameterBaseCmdlet.cs b/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/ResourceWithParameterBaseCmdlet.cs
index da0d9563989a..bba855dffd90 100644
--- a/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/ResourceWithParameterBaseCmdlet.cs
+++ b/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/ResourceWithParameterBaseCmdlet.cs
@@ -22,6 +22,7 @@
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.Azure.Commands.Resources.Models;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.Azure.Commands.Resources
{
diff --git a/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/ResourcesExtensions.cs b/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/ResourcesExtensions.cs
index 76bec9fdb307..2624717f4f1b 100644
--- a/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/ResourcesExtensions.cs
+++ b/src/ResourceManager/Resources/Commands.Resources/Models.ResourceGroups/ResourcesExtensions.cs
@@ -26,6 +26,7 @@
using Newtonsoft.Json;
using Microsoft.Azure.Commands.Resources.Models.Authorization;
using Microsoft.Azure.Management.Authorization.Models;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.Azure.Commands.Resources.Models
{
diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/Commands.Sql.Test.csproj b/src/ResourceManager/Sql/Commands.Sql.Test/Commands.Sql.Test.csproj
index 5d3c2588d0e7..0cd13b1779c8 100644
--- a/src/ResourceManager/Sql/Commands.Sql.Test/Commands.Sql.Test.csproj
+++ b/src/ResourceManager/Sql/Commands.Sql.Test/Commands.Sql.Test.csproj
@@ -44,7 +44,7 @@
False
- ..\..\..\packages\Microsoft.Azure.Gallery.2.2.1-preview\lib\net40\Microsoft.Azure.Gallery.dll
+ ..\..\..\packages\Microsoft.Azure.Gallery.2.2.0-preview\lib\net40\Microsoft.Azure.Gallery.dll
False
@@ -52,11 +52,11 @@
False
- ..\..\..\packages\Microsoft.Azure.Monitoring.2.2.1-preview\lib\net40\Microsoft.Azure.Monitoring.dll
+ ..\..\..\packages\Microsoft.Azure.Monitoring.2.2.0-preview\lib\net40\Microsoft.Azure.Monitoring.dll
False
- ..\..\..\packages\Microsoft.Azure.Management.Resources.2.7.1-preview\lib\net40\Microsoft.Azure.ResourceManager.dll
+ ..\..\..\packages\Microsoft.Azure.Management.Resources.2.7.0-preview\lib\net40\Microsoft.Azure.ResourceManager.dll
False
@@ -146,6 +146,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{c1bda476-a5cc-4394-914d-48b0ec31a710}
Commands.ScenarioTests.Common
diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/SqlTestsBase.cs b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/SqlTestsBase.cs
index 132bcad207cb..de54e30bd5f6 100644
--- a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/SqlTestsBase.cs
+++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/SqlTestsBase.cs
@@ -18,6 +18,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Management.Storage;
using Microsoft.WindowsAzure.Testing;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.Azure.Commands.ScenarioTest.SqlTests
{
diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/packages.config b/src/ResourceManager/Sql/Commands.Sql.Test/packages.config
index b8d8b347c578..e071300410fb 100644
--- a/src/ResourceManager/Sql/Commands.Sql.Test/packages.config
+++ b/src/ResourceManager/Sql/Commands.Sql.Test/packages.config
@@ -1,11 +1,11 @@
-
-
-
-
+
+
+
+
-
+
diff --git a/src/ResourceManager/Sql/Commands.Sql/Commands.Sql.csproj b/src/ResourceManager/Sql/Commands.Sql/Commands.Sql.csproj
index dbabb3532ef8..5197bce544c7 100644
--- a/src/ResourceManager/Sql/Commands.Sql/Commands.Sql.csproj
+++ b/src/ResourceManager/Sql/Commands.Sql/Commands.Sql.csproj
@@ -161,6 +161,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{5ee72c53-1720-4309-b54b-5fb79703195f}
Commands.Common
diff --git a/src/ResourceManager/Sql/Commands.Sql/Security/Services/EndpointsCommunicator.cs b/src/ResourceManager/Sql/Commands.Sql/Security/Services/EndpointsCommunicator.cs
index 241f3315f915..cfd90d3c7c12 100644
--- a/src/ResourceManager/Sql/Commands.Sql/Security/Services/EndpointsCommunicator.cs
+++ b/src/ResourceManager/Sql/Commands.Sql/Security/Services/EndpointsCommunicator.cs
@@ -14,13 +14,14 @@
using Microsoft.Azure.Commands.Sql.Security.Model;
using Microsoft.Azure.Commands.Sql.Services;
+using Microsoft.Azure.Common.Extensions;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.Azure.Management.Resources;
using Microsoft.Azure.Management.Resources.Models;
using Microsoft.Azure.Management.Sql;
using Microsoft.Azure.Management.Sql.Models;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
using Microsoft.WindowsAzure.Management.Storage;
using Microsoft.WindowsAzure.Management.Storage.Models;
using Newtonsoft.Json.Linq;
diff --git a/src/ResourceManager/Sql/Commands.Sql/Security/Services/SqlClient.cs b/src/ResourceManager/Sql/Commands.Sql/Security/Services/SqlClient.cs
index 19e4ef8e7732..377978ed9ed3 100644
--- a/src/ResourceManager/Sql/Commands.Sql/Security/Services/SqlClient.cs
+++ b/src/ResourceManager/Sql/Commands.Sql/Security/Services/SqlClient.cs
@@ -13,8 +13,8 @@
// ----------------------------------------------------------------------------------
using Microsoft.Azure.Commands.Sql.Security.Model;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.Azure.Management.Sql.Models;
-using Microsoft.WindowsAzure.Commands.Common.Models;
using System;
using System.Collections.Generic;
using System.Linq;
diff --git a/src/ResourceManager/Sql/Commands.Sql/packages.config b/src/ResourceManager/Sql/Commands.Sql/packages.config
index 8fa0fe0627c6..bec74499d637 100644
--- a/src/ResourceManager/Sql/Commands.Sql/packages.config
+++ b/src/ResourceManager/Sql/Commands.Sql/packages.config
@@ -16,5 +16,5 @@
-
+
\ No newline at end of file
diff --git a/src/ResourceManager/StreamAnalytics/Commands.StreamAnalytics.Test/Commands.StreamAnalytics.Test.csproj b/src/ResourceManager/StreamAnalytics/Commands.StreamAnalytics.Test/Commands.StreamAnalytics.Test.csproj
index 8040e1151acc..c6695d4763fd 100644
--- a/src/ResourceManager/StreamAnalytics/Commands.StreamAnalytics.Test/Commands.StreamAnalytics.Test.csproj
+++ b/src/ResourceManager/StreamAnalytics/Commands.StreamAnalytics.Test/Commands.StreamAnalytics.Test.csproj
@@ -14,7 +14,6 @@
512
..\..\..\
true
- 7f789c0b
true
@@ -26,7 +25,7 @@
4
- true
+ true
MSSharedLibKey.snk
true
true
@@ -135,6 +134,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{c1bda476-a5cc-4394-914d-48b0ec31a710}
Commands.ScenarioTests.Common
@@ -202,7 +205,12 @@
This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
+
+
+
+
+
+
+
+ Reset-AzureVNetGateway
+
+ Reset the provided virtual network gateway.
+
+
+
+
+ Reset
+ AzureVNetGateway
+
+
+
+
+ Reset the provided virtual network gateway.
+
+
+
+ Reset-AzureVNetGateway
+
+ VNetName
+
+
+
+ String
+
+
+
+
+
+ VNetName
+
+
+
+ String
+
+ String
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Resize-AzureVNetGateway
diff --git a/src/ServiceManagement/Network/Commands.Network/NetworkClient.cs b/src/ServiceManagement/Network/Commands.Network/NetworkClient.cs
index b30adf66c3b6..d6b7ae04bf8f 100644
--- a/src/ServiceManagement/Network/Commands.Network/NetworkClient.cs
+++ b/src/ServiceManagement/Network/Commands.Network/NetworkClient.cs
@@ -24,7 +24,6 @@ namespace Microsoft.Azure.Commands.Network
using Routes.Model;
using WindowsAzure;
using WindowsAzure.Commands.Common;
- using WindowsAzure.Commands.Common.Models;
using WindowsAzure.Commands.Common.Storage;
using WindowsAzure.Commands.Utilities.Common;
using WindowsAzure.Common;
@@ -32,6 +31,8 @@ namespace Microsoft.Azure.Commands.Network
using WindowsAzure.Management.Network;
using WindowsAzure.Management.Network.Models;
using WindowsAzure.Storage.Auth;
+ using Microsoft.Azure.Common.Extensions.Models;
+ using Microsoft.Azure.Common.Extensions;
public class NetworkClient
{
@@ -154,6 +155,12 @@ public GatewayGetOperationStatusResponse DeleteGateway(string vnetName)
return client.Gateways.Delete(vnetName);
}
+ public GatewayGetOperationStatusResponse ResetGateway(string vnetName)
+ {
+ ResetGatewayParameters parameters = new ResetGatewayParameters();
+ return client.Gateways.Reset(vnetName, parameters);
+ }
+
public GatewayGetOperationStatusResponse ResizeGateway(string vnetName, string gatewaySKU)
{
ResizeGatewayParameters parameters = new ResizeGatewayParameters()
diff --git a/src/ServiceManagement/Network/Commands.Network/NetworkCmdletBase.cs b/src/ServiceManagement/Network/Commands.Network/NetworkCmdletBase.cs
index bb0016f16b72..87c8b563ba2c 100644
--- a/src/ServiceManagement/Network/Commands.Network/NetworkCmdletBase.cs
+++ b/src/ServiceManagement/Network/Commands.Network/NetworkCmdletBase.cs
@@ -14,8 +14,9 @@
namespace Microsoft.Azure.Commands.Network
{
+ using Microsoft.Azure.Common.Extensions;
+ using Microsoft.Azure.Common.Extensions.Models;
using WindowsAzure.Commands.Common;
- using WindowsAzure.Commands.Common.Models;
using WindowsAzure.Commands.Utilities.Common;
using WindowsAzure.Commands.Utilities.Profile;
diff --git a/src/ServiceManagement/Network/Commands.Network/packages.config b/src/ServiceManagement/Network/Commands.Network/packages.config
index 82b77cc182ba..58914c942665 100644
--- a/src/ServiceManagement/Network/Commands.Network/packages.config
+++ b/src/ServiceManagement/Network/Commands.Network/packages.config
@@ -10,9 +10,9 @@
-
+
-
+
diff --git a/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices.Test/Commands.RecoveryServices.Test.csproj b/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices.Test/Commands.RecoveryServices.Test.csproj
index 7ddf3858b47e..9987efb08bd7 100644
--- a/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices.Test/Commands.RecoveryServices.Test.csproj
+++ b/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices.Test/Commands.RecoveryServices.Test.csproj
@@ -1,6 +1,5 @@
-
Debug
@@ -15,6 +14,7 @@
..\..\..\
true
+ fe60daf2
true
@@ -63,8 +63,9 @@
..\..\..\packages\Microsoft.WindowsAzure.Common.1.4.1\lib\net45\Microsoft.WindowsAzure.Common.NetFramework.dll
-
- ..\..\..\packages\Microsoft.Azure.Management.RecoveryServices.0.1.0-preview\lib\net40\Microsoft.WindowsAzure.Management.SiteRecovery.dll
+
+ False
+ ..\..\..\packages\Microsoft.Azure.Management.RecoveryServices.0.1.1-preview\lib\net40\Microsoft.WindowsAzure.Management.SiteRecovery.dll
False
@@ -96,14 +97,9 @@
-
- ..\..\..\packages\xunit.abstractions.2.0.0-beta4-build2738\lib\net35\xunit.abstractions.dll
-
-
- ..\..\..\packages\xunit.assert.2.0.0-beta4-build2738\lib\portable-net45+win+wpa81+wp80+monoandroid+monotouch10\xunit.assert.dll
-
-
- ..\..\..\packages\xunit.core.2.0.0-beta4-build2738\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid\xunit.core.dll
+
+ False
+ ..\..\..\packages\xunit.1.9.2\lib\net20\xunit.dll
@@ -127,6 +123,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{5ee72c53-1720-4309-b54b-5fb79703195f}
Commands.Common
@@ -150,7 +150,6 @@
This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
diff --git a/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices.Test/ScenarioTests/RecoveryServicesTestsBase.cs b/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices.Test/ScenarioTests/RecoveryServicesTestsBase.cs
index f18cf116a2ce..222d7f6a6c23 100644
--- a/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices.Test/ScenarioTests/RecoveryServicesTestsBase.cs
+++ b/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices.Test/ScenarioTests/RecoveryServicesTestsBase.cs
@@ -27,7 +27,8 @@
using Microsoft.WindowsAzure.Management.SiteRecovery;
using Microsoft.WindowsAzure.Testing;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.Azure.Commands.RecoveryServices.Test.ScenarioTests
{
diff --git a/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices.Test/packages.config b/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices.Test/packages.config
index a3efc42ba1b2..855688631e33 100644
--- a/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices.Test/packages.config
+++ b/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices.Test/packages.config
@@ -2,7 +2,7 @@
-
+
@@ -11,8 +11,5 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices/Commands.RecoveryServices.csproj b/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices/Commands.RecoveryServices.csproj
index 8d5e36cfa7d0..ffeeac1d9294 100644
--- a/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices/Commands.RecoveryServices.csproj
+++ b/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices/Commands.RecoveryServices.csproj
@@ -141,6 +141,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{5ee72c53-1720-4309-b54b-5fb79703195f}
Commands.Common
diff --git a/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices/PSRecoveryServicesClient/PSRecoveryServicesClient.cs b/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices/PSRecoveryServicesClient/PSRecoveryServicesClient.cs
index 8ba046e6aa49..1e30a45dd38f 100644
--- a/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices/PSRecoveryServicesClient/PSRecoveryServicesClient.cs
+++ b/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices/PSRecoveryServicesClient/PSRecoveryServicesClient.cs
@@ -26,14 +26,14 @@
using Microsoft.Azure.Portal.RecoveryServices.Models.Common;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Factories;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Management.RecoveryServices;
using Microsoft.WindowsAzure.Management.RecoveryServices.Models;
using Microsoft.WindowsAzure.Management.SiteRecovery;
using Microsoft.WindowsAzure.Management.SiteRecovery.Models;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
+using Microsoft.Azure.Common.Extensions.Models;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.Azure.Commands.RecoveryServices
{
@@ -187,7 +187,7 @@ public string GenerateAgentAuthenticationHeader(string clientRequestId)
/// Custom request headers
public CustomRequestHeaders GetRequestHeaders()
{
- this.ClientRequestId = Guid.NewGuid().ToString() + "-" + DateTime.Now.ToString("yyyy-mm-dd HH:mm:ssZ") + "-P";
+ this.ClientRequestId = Guid.NewGuid().ToString() + "-" + DateTime.Now.ToUniversalTime().ToString("yyyy-MM-dd HH:mm:ssZ") + "-P";
return new CustomRequestHeaders()
{
diff --git a/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices/Service/CreateAzureSiteRecoveryRecoveryPlan.cs b/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices/Service/CreateAzureSiteRecoveryRecoveryPlan.cs
index 7ab4f4bd117c..78d95a792f0f 100644
--- a/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices/Service/CreateAzureSiteRecoveryRecoveryPlan.cs
+++ b/src/ServiceManagement/RecoveryServices/Commands.RecoveryServices/Service/CreateAzureSiteRecoveryRecoveryPlan.cs
@@ -20,6 +20,7 @@
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Management.SiteRecovery.Models;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.Azure.Commands.RecoveryServices
{
diff --git a/src/ServiceManagement/Services/Commands.Test.Utilities/Commands.Test.Utilities.csproj b/src/ServiceManagement/Services/Commands.Test.Utilities/Commands.Test.Utilities.csproj
index 7f6ed2882fc6..8c6f57f6736a 100644
--- a/src/ServiceManagement/Services/Commands.Test.Utilities/Commands.Test.Utilities.csproj
+++ b/src/ServiceManagement/Services/Commands.Test.Utilities/Commands.Test.Utilities.csproj
@@ -129,6 +129,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{e1ca72ba-8374-45f6-904d-fd34ecdf5b6f}
Commands.ServiceManagement
diff --git a/src/ServiceManagement/Services/Commands.Test.Utilities/Common/AzureAssert.cs b/src/ServiceManagement/Services/Commands.Test.Utilities/Common/AzureAssert.cs
index d3e215eae724..b7450a09710d 100644
--- a/src/ServiceManagement/Services/Commands.Test.Utilities/Common/AzureAssert.cs
+++ b/src/ServiceManagement/Services/Commands.Test.Utilities/Common/AzureAssert.cs
@@ -26,6 +26,7 @@ namespace Microsoft.WindowsAzure.Commands.Test.Utilities.Common
{
using ConfigConfigurationSetting = Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema.ConfigurationSetting;
using DefinitionConfigurationSetting = Commands.Utilities.Common.XmlSchema.ServiceDefinitionSchema.ConfigurationSetting;
+ using Microsoft.Azure.Common.Extensions;
public static class AzureAssert
{
diff --git a/src/ServiceManagement/Services/Commands.Test.Utilities/Common/FakeAccessToken.cs b/src/ServiceManagement/Services/Commands.Test.Utilities/Common/FakeAccessToken.cs
index 2790d8cf256d..242371ecf20d 100644
--- a/src/ServiceManagement/Services/Commands.Test.Utilities/Common/FakeAccessToken.cs
+++ b/src/ServiceManagement/Services/Commands.Test.Utilities/Common/FakeAccessToken.cs
@@ -13,7 +13,7 @@
// ----------------------------------------------------------------------------------
using System;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
+using Microsoft.Azure.Common.Extensions.Authentication;
namespace Microsoft.WindowsAzure.Commands.Test.Utilities.Common
{
diff --git a/src/ServiceManagement/Services/Commands.Test.Utilities/Common/FakeAccessTokenProvider.cs b/src/ServiceManagement/Services/Commands.Test.Utilities/Common/FakeAccessTokenProvider.cs
index 2166aae9ecdc..f240e0c9bc32 100644
--- a/src/ServiceManagement/Services/Commands.Test.Utilities/Common/FakeAccessTokenProvider.cs
+++ b/src/ServiceManagement/Services/Commands.Test.Utilities/Common/FakeAccessTokenProvider.cs
@@ -13,9 +13,9 @@
// ----------------------------------------------------------------------------------
using System.Security;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
-using Microsoft.WindowsAzure.Commands.Utilities.Common.Authentication;
+using Microsoft.Azure.Common.Extensions.Authentication;
namespace Microsoft.WindowsAzure.Commands.Test.Utilities.Common
{
diff --git a/src/ServiceManagement/Services/Commands.Test.Utilities/Common/FileSystemHelper.cs b/src/ServiceManagement/Services/Commands.Test.Utilities/Common/FileSystemHelper.cs
index f3b310d1abb7..6dba8bed3435 100644
--- a/src/ServiceManagement/Services/Commands.Test.Utilities/Common/FileSystemHelper.cs
+++ b/src/ServiceManagement/Services/Commands.Test.Utilities/Common/FileSystemHelper.cs
@@ -18,6 +18,7 @@
using Microsoft.WindowsAzure.Commands.Common;
using Microsoft.WindowsAzure.Commands.Utilities.CloudService;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Utilities.Common
{
diff --git a/src/ServiceManagement/Services/Commands.Test/CloudService/Development/DisableAzureRemoteDesktopCommandTest.cs b/src/ServiceManagement/Services/Commands.Test/CloudService/Development/DisableAzureRemoteDesktopCommandTest.cs
index 8b269008b892..f936935a51b8 100644
--- a/src/ServiceManagement/Services/Commands.Test/CloudService/Development/DisableAzureRemoteDesktopCommandTest.cs
+++ b/src/ServiceManagement/Services/Commands.Test/CloudService/Development/DisableAzureRemoteDesktopCommandTest.cs
@@ -23,6 +23,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema;
using Microsoft.WindowsAzure.Commands.Common;
using Xunit;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.CloudService.Development
{
diff --git a/src/ServiceManagement/Services/Commands.Test/CloudService/Development/EnableAzureMemcacheRoleTests.cs b/src/ServiceManagement/Services/Commands.Test/CloudService/Development/EnableAzureMemcacheRoleTests.cs
index 27f967e5350c..3c2c0d037247 100644
--- a/src/ServiceManagement/Services/Commands.Test/CloudService/Development/EnableAzureMemcacheRoleTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/CloudService/Development/EnableAzureMemcacheRoleTests.cs
@@ -34,6 +34,7 @@ namespace Microsoft.WindowsAzure.Commands.Test.CloudService.Development.Tests
using ConfigConfigurationSetting = Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema.ConfigurationSetting;
using DefinitionConfigurationSetting = Commands.Utilities.Common.XmlSchema.ServiceDefinitionSchema.ConfigurationSetting;
using TestResources = Commands.Common.Test.Properties.Resources;
+ using Microsoft.Azure.Common.Extensions;
public class EnableAzureMemcacheRoleTests : TestBase
{
diff --git a/src/ServiceManagement/Services/Commands.Test/CloudService/Development/EnableAzureRemoteDesktopCommandTest.cs b/src/ServiceManagement/Services/Commands.Test/CloudService/Development/EnableAzureRemoteDesktopCommandTest.cs
index 75fd05db5a10..8f4463b5a538 100644
--- a/src/ServiceManagement/Services/Commands.Test/CloudService/Development/EnableAzureRemoteDesktopCommandTest.cs
+++ b/src/ServiceManagement/Services/Commands.Test/CloudService/Development/EnableAzureRemoteDesktopCommandTest.cs
@@ -26,6 +26,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceDefinitionSchema;
using Microsoft.WindowsAzure.Commands.Common;
using Xunit;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.CloudService.Development
{
diff --git a/src/ServiceManagement/Services/Commands.Test/CloudService/Development/SaveAzureServiceProjectPackageTests.cs b/src/ServiceManagement/Services/Commands.Test/CloudService/Development/SaveAzureServiceProjectPackageTests.cs
index b5851fa57a2c..ead84c2be6ca 100644
--- a/src/ServiceManagement/Services/Commands.Test/CloudService/Development/SaveAzureServiceProjectPackageTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/CloudService/Development/SaveAzureServiceProjectPackageTests.cs
@@ -24,6 +24,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
using Microsoft.WindowsAzure.Commands.Common;
using Xunit;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.CloudService.Development
{
diff --git a/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/AzureServiceTests.cs b/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/AzureServiceTests.cs
index 34fd2df6c4f7..40c618e12f2a 100644
--- a/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/AzureServiceTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/AzureServiceTests.cs
@@ -26,6 +26,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
using Microsoft.WindowsAzure.Commands.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.CloudService.Utilities
{
diff --git a/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/CloudServiceClientTests.cs b/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/CloudServiceClientTests.cs
index 3ff4662130e6..4ca15015db45 100644
--- a/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/CloudServiceClientTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/CloudServiceClientTests.cs
@@ -18,7 +18,7 @@
using System.Net;
using System.Threading;
using Xunit;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.CloudService;
@@ -31,6 +31,7 @@
using Moq;
using MockStorageService = Microsoft.WindowsAzure.Commands.Test.Utilities.Common.MockStorageService;
using Microsoft.WindowsAzure.Commands.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.CloudService.Utilities
{
diff --git a/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/CsPackTests.cs b/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/CsPackTests.cs
index 4763a411a036..720f06a3ee32 100644
--- a/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/CsPackTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/CsPackTests.cs
@@ -20,6 +20,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.CloudService;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.Test.CloudService.Utilities
{
diff --git a/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/CsPackUtilTests.cs b/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/CsPackUtilTests.cs
index d5bffb1bceca..89fb42c90666 100644
--- a/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/CsPackUtilTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/CsPackUtilTests.cs
@@ -12,6 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.WindowsAzure.Commands.Common;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.CloudService;
using Microsoft.WindowsAzure.Commands.Utilities.CloudService.AzureTools;
diff --git a/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/GeneralTests.cs b/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/GeneralTests.cs
index 31425f73bd46..67b990cbd864 100644
--- a/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/GeneralTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/GeneralTests.cs
@@ -18,6 +18,7 @@
using Microsoft.WindowsAzure.Commands.Test.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceDefinitionSchema;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.CloudService.Utilities
{
diff --git a/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/PublishContextTests.cs b/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/PublishContextTests.cs
index 996c4b7bd747..cc4939661291 100644
--- a/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/PublishContextTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/PublishContextTests.cs
@@ -23,6 +23,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.CloudService;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.CloudService.Utilities
{
diff --git a/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/ScaffoldTests.cs b/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/ScaffoldTests.cs
index 1a85239d1612..3114798e5b92 100644
--- a/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/ScaffoldTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/CloudService/Utilities/ScaffoldTests.cs
@@ -17,6 +17,7 @@
using Microsoft.WindowsAzure.Commands.Test.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.CloudService.Scaffolding;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.CloudService.Utilities
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Commands.Test.csproj b/src/ServiceManagement/Services/Commands.Test/Commands.Test.csproj
index a9602f005626..7f8081662820 100644
--- a/src/ServiceManagement/Services/Commands.Test/Commands.Test.csproj
+++ b/src/ServiceManagement/Services/Commands.Test/Commands.Test.csproj
@@ -97,7 +97,7 @@
False
- ..\..\..\packages\Microsoft.WindowsAzure.Management.ExpressRoute.0.16.2-preview\lib\net40\Microsoft.WindowsAzure.Management.ExpressRoute.dll
+ ..\..\..\packages\Microsoft.WindowsAzure.Management.ExpressRoute.0.15.0-preview\lib\net40\Microsoft.WindowsAzure.Management.ExpressRoute.dll
..\..\..\packages\Microsoft.WindowsAzure.Management.MediaServices.1.2.0\lib\net40\Microsoft.WindowsAzure.Management.MediaServices.dll
@@ -334,6 +334,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{e1ca72ba-8374-45f6-904d-fd34ecdf5b6f}
Commands.ServiceManagement
diff --git a/src/ServiceManagement/Services/Commands.Test/Environment/AddAzureEnvironmentTests.cs b/src/ServiceManagement/Services/Commands.Test/Environment/AddAzureEnvironmentTests.cs
index 0a18681f19cd..dbae4495621c 100644
--- a/src/ServiceManagement/Services/Commands.Test/Environment/AddAzureEnvironmentTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Environment/AddAzureEnvironmentTests.cs
@@ -16,13 +16,14 @@
using System.Management.Automation;
using System.Reflection;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Profile;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Moq;
using Xunit;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Environment
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Environment/GetAzureEnvironmentTests.cs b/src/ServiceManagement/Services/Commands.Test/Environment/GetAzureEnvironmentTests.cs
index 86cd58ef51b7..0382d1202d30 100644
--- a/src/ServiceManagement/Services/Commands.Test/Environment/GetAzureEnvironmentTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Environment/GetAzureEnvironmentTests.cs
@@ -15,13 +15,14 @@
using System.Collections.Generic;
using System.Management.Automation;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Profile;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Moq;
using Xunit;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Environment
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Environment/RemoveAzureEnvironmentTests.cs b/src/ServiceManagement/Services/Commands.Test/Environment/RemoveAzureEnvironmentTests.cs
index bb5af475b2be..ad1085a6af8f 100644
--- a/src/ServiceManagement/Services/Commands.Test/Environment/RemoveAzureEnvironmentTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Environment/RemoveAzureEnvironmentTests.cs
@@ -16,13 +16,14 @@
using System.Collections.Generic;
using System.Management.Automation;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Profile;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Moq;
using Xunit;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Environment
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Environment/SetAzureEnvironmentTests.cs b/src/ServiceManagement/Services/Commands.Test/Environment/SetAzureEnvironmentTests.cs
index c98fbb613994..25587ec8616b 100644
--- a/src/ServiceManagement/Services/Commands.Test/Environment/SetAzureEnvironmentTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Environment/SetAzureEnvironmentTests.cs
@@ -18,12 +18,13 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Profile;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Environment
{
diff --git a/src/ServiceManagement/Services/Commands.Test/MediaServices/GetAzureMediaServicesTests.cs b/src/ServiceManagement/Services/Commands.Test/MediaServices/GetAzureMediaServicesTests.cs
index c582d6eedc9a..dd00777e74fb 100644
--- a/src/ServiceManagement/Services/Commands.Test/MediaServices/GetAzureMediaServicesTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/MediaServices/GetAzureMediaServicesTests.cs
@@ -17,7 +17,7 @@
using System.Threading.Tasks;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.MediaServices;
using Microsoft.WindowsAzure.Commands.ServiceManagement.Model;
@@ -26,6 +26,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.MediaServices.Services.Entities;
using Microsoft.WindowsAzure.Management.MediaServices.Models;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.MediaServices
{
diff --git a/src/ServiceManagement/Services/Commands.Test/MediaServices/MediaServicesClientTests.cs b/src/ServiceManagement/Services/Commands.Test/MediaServices/MediaServicesClientTests.cs
index 7a32a10f6d40..c40cb015bafc 100644
--- a/src/ServiceManagement/Services/Commands.Test/MediaServices/MediaServicesClientTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/MediaServices/MediaServicesClientTests.cs
@@ -6,7 +6,7 @@
using System.Threading;
using System.Threading.Tasks;
using Xunit;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Utilities.MediaServices;
using Microsoft.WindowsAzure.Management.MediaServices;
using Microsoft.WindowsAzure.Management.MediaServices.Models;
diff --git a/src/ServiceManagement/Services/Commands.Test/Profile/GetAzurePublishSettingsFileTests.cs b/src/ServiceManagement/Services/Commands.Test/Profile/GetAzurePublishSettingsFileTests.cs
index dc826e3222c1..a053082992b8 100644
--- a/src/ServiceManagement/Services/Commands.Test/Profile/GetAzurePublishSettingsFileTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Profile/GetAzurePublishSettingsFileTests.cs
@@ -19,6 +19,8 @@
using Microsoft.WindowsAzure.Commands.Profile;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Moq;
+using Microsoft.Azure.Common.Extensions;
+using Microsoft.Azure.Common.Extensions.Models;
namespace Microsoft.WindowsAzure.Commands.Test.Profile
{
diff --git a/src/ServiceManagement/Services/Commands.Test/ServiceBus/GetAzureSBNamespaceTest.cs b/src/ServiceManagement/Services/Commands.Test/ServiceBus/GetAzureSBNamespaceTest.cs
index fa71b952eaab..d1c170b9786b 100644
--- a/src/ServiceManagement/Services/Commands.Test/ServiceBus/GetAzureSBNamespaceTest.cs
+++ b/src/ServiceManagement/Services/Commands.Test/ServiceBus/GetAzureSBNamespaceTest.cs
@@ -22,6 +22,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
using Microsoft.WindowsAzure.Commands.Utilities.ServiceBus;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.ServiceBus
{
diff --git a/src/ServiceManagement/Services/Commands.Test/WAPackIaaS/WebClient/GetAbsoluteUriTests.cs b/src/ServiceManagement/Services/Commands.Test/WAPackIaaS/WebClient/GetAbsoluteUriTests.cs
index 4c2e6dbc79c2..9600f704a96c 100644
--- a/src/ServiceManagement/Services/Commands.Test/WAPackIaaS/WebClient/GetAbsoluteUriTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/WAPackIaaS/WebClient/GetAbsoluteUriTests.cs
@@ -15,7 +15,7 @@
using System;
using System.Text;
using Xunit;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Utilities.WAPackIaaS.WebClient;
namespace Microsoft.WindowsAzure.Commands.Test.WAPackIaaS.WebClient
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/DisableAzureWebsiteDiagnosticTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/DisableAzureWebsiteDiagnosticTests.cs
index dd6330e9c20b..765191222d13 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/DisableAzureWebsiteDiagnosticTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/DisableAzureWebsiteDiagnosticTests.cs
@@ -14,12 +14,13 @@
using System.Management.Automation;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Websites;
using Moq;
using Xunit;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/EnableAzureWebsiteDiagnosticTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/EnableAzureWebsiteDiagnosticTests.cs
index af3db57ecc19..18fa8a81eb9d 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/EnableAzureWebsiteDiagnosticTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/EnableAzureWebsiteDiagnosticTests.cs
@@ -15,13 +15,14 @@
using System.Collections.Generic;
using System.Management.Automation;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.DeploymentEntities;
using Microsoft.WindowsAzure.Commands.Websites;
using Moq;
using Xunit;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/GetAzureWebSiteMetricsTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/GetAzureWebSiteMetricsTests.cs
index cb619b5d506f..97b27ddd563d 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/GetAzureWebSiteMetricsTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/GetAzureWebSiteMetricsTests.cs
@@ -17,13 +17,14 @@
using System.Linq;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities;
using Microsoft.WindowsAzure.Commands.Websites;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/GetAzureWebSiteTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/GetAzureWebSiteTests.cs
index b00c5f774dc9..466f519b4e57 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/GetAzureWebSiteTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/GetAzureWebSiteTests.cs
@@ -17,7 +17,7 @@
using System.Linq;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Properties;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Common;
@@ -26,6 +26,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities;
using Microsoft.WindowsAzure.Commands.Websites;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/GetAzureWebsiteDeploymentTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/GetAzureWebsiteDeploymentTests.cs
index 7043b0d44993..148fa84cd857 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/GetAzureWebsiteDeploymentTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/GetAzureWebsiteDeploymentTests.cs
@@ -17,7 +17,7 @@
using System.Linq;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
@@ -25,6 +25,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities;
using Microsoft.WindowsAzure.Commands.Websites;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/NewAzureWebSiteTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/NewAzureWebSiteTests.cs
index 8a3f66fcac03..2670efa213db 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/NewAzureWebSiteTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/NewAzureWebSiteTests.cs
@@ -15,7 +15,7 @@
using System;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
@@ -23,6 +23,7 @@
using Microsoft.WindowsAzure.Commands.Websites;
using Microsoft.WindowsAzure.Management.WebSites.Models;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/RemoveAzureWebSiteTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/RemoveAzureWebSiteTests.cs
index 8f86e922c0fb..7d92d34adc01 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/RemoveAzureWebSiteTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/RemoveAzureWebSiteTests.cs
@@ -15,13 +15,14 @@
using System;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities;
using Microsoft.WindowsAzure.Commands.Websites;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/RestartAzureWebsiteTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/RestartAzureWebsiteTests.cs
index 58e1a9099ef3..e952048e6e09 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/RestartAzureWebsiteTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/RestartAzureWebsiteTests.cs
@@ -15,12 +15,13 @@
using System;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Websites;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/RestoreAzureWebsiteDeploymentTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/RestoreAzureWebsiteDeploymentTests.cs
index b9aac67c3acf..114c851d2b8f 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/RestoreAzureWebsiteDeploymentTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/RestoreAzureWebsiteDeploymentTests.cs
@@ -17,7 +17,7 @@
using System.Linq;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
@@ -25,6 +25,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities;
using Microsoft.WindowsAzure.Commands.Websites;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/SaveAzureWebsiteLogTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/SaveAzureWebsiteLogTests.cs
index c6471e90303a..0c878701c3c2 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/SaveAzureWebsiteLogTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/SaveAzureWebsiteLogTests.cs
@@ -18,7 +18,7 @@
using System.Text;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
@@ -26,6 +26,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities;
using Microsoft.WindowsAzure.Commands.Websites;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/SetAzureWebSiteTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/SetAzureWebSiteTests.cs
index baab7d646f42..290079cb57d5 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/SetAzureWebSiteTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/SetAzureWebSiteTests.cs
@@ -17,13 +17,14 @@
using System.Linq;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities;
using Microsoft.WindowsAzure.Commands.Websites;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/ShowAzurePortalTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/ShowAzurePortalTests.cs
index 37c350772665..f60098e641f8 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/ShowAzurePortalTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/ShowAzurePortalTests.cs
@@ -16,6 +16,7 @@
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Websites;
+using Microsoft.Azure.Common.Extensions.Models;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/ShowAzureWebsiteTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/ShowAzureWebsiteTests.cs
index 4a569bc82829..ab3c9b5129e4 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/ShowAzureWebsiteTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/ShowAzureWebsiteTests.cs
@@ -15,13 +15,14 @@
using System;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities;
using Microsoft.WindowsAzure.Commands.Websites;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/StartAzureWebSiteTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/StartAzureWebSiteTests.cs
index 79d60d38c04c..df9dee13dc96 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/StartAzureWebSiteTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/StartAzureWebSiteTests.cs
@@ -15,12 +15,13 @@
using System;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Websites;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/StopAzureWebSiteTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/StopAzureWebSiteTests.cs
index 7a2f97ebbc06..58c7f1acbc4b 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/StopAzureWebSiteTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/StopAzureWebSiteTests.cs
@@ -15,12 +15,13 @@
using System;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Websites;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/SwitchAzureWebSiteSlotTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/SwitchAzureWebSiteSlotTests.cs
index badb4ec73a60..099cbf223ca9 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/SwitchAzureWebSiteSlotTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/SwitchAzureWebSiteSlotTests.cs
@@ -16,13 +16,14 @@
using System.Collections.Generic;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities;
using Microsoft.WindowsAzure.Commands.Websites;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/UpdateAzureWebsiteRepositoryTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/UpdateAzureWebsiteRepositoryTests.cs
index bb2a8517f450..5210c9759ced 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/UpdateAzureWebsiteRepositoryTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/UpdateAzureWebsiteRepositoryTests.cs
@@ -16,13 +16,14 @@
using System.Collections.Generic;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities;
using Microsoft.WindowsAzure.Commands.Websites;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Test/Websites/WebHostingPlans/GetAzureWebHostingPlanTests.cs b/src/ServiceManagement/Services/Commands.Test/Websites/WebHostingPlans/GetAzureWebHostingPlanTests.cs
index df0b53b9e1a4..52c4c19a050c 100644
--- a/src/ServiceManagement/Services/Commands.Test/Websites/WebHostingPlans/GetAzureWebHostingPlanTests.cs
+++ b/src/ServiceManagement/Services/Commands.Test/Websites/WebHostingPlans/GetAzureWebHostingPlanTests.cs
@@ -18,13 +18,14 @@
using System.Linq;
using Xunit;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
using Microsoft.WindowsAzure.Commands.Test.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities;
using Microsoft.WindowsAzure.Commands.Websites.WebHostingPlan;
using Moq;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Test.Websites.WebHostingPlans
{
diff --git a/src/ServiceManagement/Services/Commands.Test/packages.config b/src/ServiceManagement/Services/Commands.Test/packages.config
index 7c8c4eb2d264..cb47c9297057 100644
--- a/src/ServiceManagement/Services/Commands.Test/packages.config
+++ b/src/ServiceManagement/Services/Commands.Test/packages.config
@@ -12,7 +12,7 @@
-
+
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/Services/Commands.Utilities/CloudService/CacheConfigurationFactory.cs b/src/ServiceManagement/Services/Commands.Utilities/CloudService/CacheConfigurationFactory.cs
index e163c564997e..233c833f8ac7 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/CloudService/CacheConfigurationFactory.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/CloudService/CacheConfigurationFactory.cs
@@ -27,6 +27,7 @@ namespace Microsoft.WindowsAzure.Commands.Utilities.CloudService
{
using ConfigConfigurationSetting = Common.XmlSchema.ServiceConfigurationSchema.ConfigurationSetting;
using DefinitionConfigurationSetting = Common.XmlSchema.ServiceDefinitionSchema.ConfigurationSetting;
+ using Microsoft.WindowsAzure.Commands.Common;
static class CacheConfigurationFactory
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/CloudService/CloudServiceClient.cs b/src/ServiceManagement/Services/Commands.Utilities/CloudService/CloudServiceClient.cs
index 1b97290245a7..b07ffad44cf0 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/CloudService/CloudServiceClient.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/CloudService/CloudServiceClient.cs
@@ -22,7 +22,7 @@
using System.Security.Cryptography.X509Certificates;
using System.Threading;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Storage;
using Microsoft.WindowsAzure.Commands.Utilities.CloudService.AzureTools;
using Microsoft.WindowsAzure.Commands.Utilities.CloudService.Model;
@@ -41,6 +41,8 @@ namespace Microsoft.WindowsAzure.Commands.Utilities.CloudService
{
using ConfigCertificate = Common.XmlSchema.ServiceConfigurationSchema.Certificate;
using ConfigConfigurationSetting = Common.XmlSchema.ServiceConfigurationSchema.ConfigurationSetting;
+ using Microsoft.Azure.Common.Extensions.Models;
+ using Microsoft.Azure.Common.Extensions;
public class CloudServiceClient : ICloudServiceClient
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Commands.Utilities.csproj b/src/ServiceManagement/Services/Commands.Utilities/Commands.Utilities.csproj
index 6c07157c35e7..e481763fe692 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Commands.Utilities.csproj
+++ b/src/ServiceManagement/Services/Commands.Utilities/Commands.Utilities.csproj
@@ -105,17 +105,13 @@
False
..\..\..\packages\Microsoft.WindowsAzure.Management.Compute.6.1.2\lib\net40\Microsoft.WindowsAzure.Management.Compute.dll
-
- False
- ..\..\..\packages\Microsoft.WindowsAzure.Management.ExpressRoute.0.11.2-preview\lib\net40\Microsoft.WindowsAzure.Management.ExpressRoute.dll
-
False
..\..\..\packages\Microsoft.WindowsAzure.Management.MediaServices.1.2.0\lib\net40\Microsoft.WindowsAzure.Management.MediaServices.dll
False
- ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.4.1.0\lib\net40\Microsoft.WindowsAzure.Management.Network.dll
+ ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.4.3.0\lib\net40\Microsoft.WindowsAzure.Management.Network.dll
False
@@ -223,6 +219,8 @@
+
+
@@ -720,6 +718,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{65c3a86a-716d-4e7d-ab67-1db00b3bf72d}
Commands.Common.Storage
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/AzureTools/CsPack.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/AzureTools/CsPack.cs
index 5ac3c6ec6c3d..40ef0cb6d6e2 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/AzureTools/CsPack.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/AzureTools/CsPack.cs
@@ -22,6 +22,8 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceDefinitionSchema;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.WindowsAzure.Commands.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.CloudService.AzureTools
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/CloudRuntime.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/CloudRuntime.cs
index f21e0f7f0910..10f309b6141f 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/CloudRuntime.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/CloudRuntime.cs
@@ -22,6 +22,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceDefinitionSchema;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.Utilities.CloudService
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/CloudRuntimeCollection.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/CloudRuntimeCollection.cs
index 6a192a0ff497..9b853562becf 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/CloudRuntimeCollection.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/CloudRuntimeCollection.cs
@@ -18,6 +18,7 @@
using System.Xml;
using Microsoft.WindowsAzure.Commands.Common.Properties;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.Utilities.CloudService
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/CloudRuntimePackage.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/CloudRuntimePackage.cs
index d4aca37d73a4..0c193412dd3a 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/CloudRuntimePackage.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/CloudRuntimePackage.cs
@@ -17,6 +17,7 @@
using System.Xml;
using Microsoft.WindowsAzure.Commands.Common.Properties;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.Utilities.CloudService
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/CloudServicePathInfo.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/CloudServicePathInfo.cs
index ad7c9c27ff49..c21ea4fdb4aa 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/CloudServicePathInfo.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/CloudServicePathInfo.cs
@@ -12,6 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions;
using Microsoft.WindowsAzure.Commands.Common.Properties;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/CloudServiceProject.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/CloudServiceProject.cs
index 3a14d0c9c888..ffd12d3e6550 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/CloudServiceProject.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/CloudServiceProject.cs
@@ -26,6 +26,8 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceDefinitionSchema;
using Microsoft.WindowsAzure.Commands.Utilities;
+using Microsoft.WindowsAzure.Commands.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.CloudService
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/CommonUtilities.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/CommonUtilities.cs
index 40e59f90c5ac..dfff278043ad 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/CommonUtilities.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/CommonUtilities.cs
@@ -17,6 +17,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.CloudService;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.Common
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/JavaScriptPackageHelpers.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/JavaScriptPackageHelpers.cs
index c6d1b7f10d3e..d5a00b52369b 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/JavaScriptPackageHelpers.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/JavaScriptPackageHelpers.cs
@@ -18,6 +18,7 @@
using System.Web.Script.Serialization;
using Microsoft.WindowsAzure.Commands.Common.Properties;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.CloudService
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/PublishContext.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/PublishContext.cs
index 136cc8de3401..efd3f357acd2 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/PublishContext.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/PublishContext.cs
@@ -18,6 +18,7 @@
using Microsoft.WindowsAzure.Commands.Common;
using Microsoft.WindowsAzure.Commands.Common.Properties;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.CloudService
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/RoleInfo.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/RoleInfo.cs
index 60b8ea583165..f6fd5477ba61 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/RoleInfo.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/RoleInfo.cs
@@ -12,6 +12,7 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Common.Extensions;
using Microsoft.WindowsAzure.Commands.Common.Properties;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema;
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/NodeRules.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/NodeRules.cs
index 5116a9d19305..4d3077897178 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/NodeRules.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/NodeRules.cs
@@ -17,6 +17,8 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceDefinitionSchema;
+using Microsoft.WindowsAzure.Commands.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.CloudService.Scaffolding
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/PHPRules.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/PHPRules.cs
index 98a087815da9..67d0f22aab6a 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/PHPRules.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/PHPRules.cs
@@ -17,6 +17,8 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceDefinitionSchema;
+using Microsoft.Azure.Common.Extensions;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.Utilities.CloudService.Scaffolding
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/PythonRules.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/PythonRules.cs
index df0e6b8021f0..2d347a777af9 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/PythonRules.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/PythonRules.cs
@@ -17,6 +17,8 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceDefinitionSchema;
+using Microsoft.Azure.Common.Extensions;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.Utilities.CloudService.Scaffolding
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/Scaffold.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/Scaffold.cs
index a1cd70481fc8..9eae6d86279d 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/Scaffold.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/Scaffolding/Scaffold.cs
@@ -20,6 +20,7 @@
using System.Xml.Linq;
using Microsoft.WindowsAzure.Commands.Common.Properties;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.CloudService.Scaffolding
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceComponents.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceComponents.cs
index 59c0b53c06e4..8a71dd4d11f4 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceComponents.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceComponents.cs
@@ -21,6 +21,8 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceDefinitionSchema;
+using Microsoft.WindowsAzure.Commands.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.CloudService
{
diff --git a/src/Common/Commands.Common/XmlSchema/ServiceConfigurationSchema.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceConfigurationSchema.cs
similarity index 99%
rename from src/Common/Commands.Common/XmlSchema/ServiceConfigurationSchema.cs
rename to src/ServiceManagement/Services/Commands.Utilities/Common/ServiceConfigurationSchema.cs
index b7dbffe076b9..9c2e9a899813 100644
--- a/src/Common/Commands.Common/XmlSchema/ServiceConfigurationSchema.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceConfigurationSchema.cs
@@ -10,7 +10,7 @@
// This source code was auto-generated by xsd, Version=4.0.30319.34014 using command:
// xsd.exe "C:\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.5\schemas\ServiceConfigurationSchema.xsd"
-// /c /namespace:Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema
+// /c /namespace:Microsoft.Azure.Common.Extensions.XmlSchema.ServiceConfigurationSchema
// /language:cs
namespace Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema
{
diff --git a/src/Common/Commands.Common/XmlSchema/ServiceDefinitionSchema.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceDefinitionSchema.cs
similarity index 99%
rename from src/Common/Commands.Common/XmlSchema/ServiceDefinitionSchema.cs
rename to src/ServiceManagement/Services/Commands.Utilities/Common/ServiceDefinitionSchema.cs
index 522b146a9758..0141831de1f5 100644
--- a/src/Common/Commands.Common/XmlSchema/ServiceDefinitionSchema.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceDefinitionSchema.cs
@@ -10,7 +10,7 @@
// This source code was auto-generated by xsd, Version=4.0.30319.34014 using command:
// xsd.exe "C:\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.5\schemas\ServiceDefinitionSchema.xsd"
-// /c /namespace:Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceDefinitionSchema
+// /c /namespace:Microsoft.Azure.Common.Extensions.XmlSchema.ServiceDefinitionSchema
// /language:cs
namespace Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceDefinitionSchema
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceManagementBaseCmdlet.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceManagementBaseCmdlet.cs
index 204253015b96..5febc9e247ab 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceManagementBaseCmdlet.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceManagementBaseCmdlet.cs
@@ -21,13 +21,14 @@
using System.ServiceModel.Dispatcher;
using AutoMapper;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.ServiceManagement.Model;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
using Microsoft.WindowsAzure.Management;
using Microsoft.WindowsAzure.Management.Compute;
using Microsoft.WindowsAzure.Management.Network;
using Microsoft.WindowsAzure.Management.Storage;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.Common
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceSettings.cs b/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceSettings.cs
index 30d06f454e59..b1db82219311 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceSettings.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Common/ServiceSettings.cs
@@ -21,6 +21,7 @@
using Microsoft.WindowsAzure.Commands.Common.Properties;
using Microsoft.WindowsAzure.Commands.ServiceManagement.Model;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.CloudService
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/MediaServices/MediaServicesClient.cs b/src/ServiceManagement/Services/Commands.Utilities/MediaServices/MediaServicesClient.cs
index 9886c252fd42..8115b61589d0 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/MediaServices/MediaServicesClient.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/MediaServices/MediaServicesClient.cs
@@ -22,7 +22,7 @@
using System.Xml;
using System.Xml.Serialization;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.ServiceManagement.Model;
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services;
using Microsoft.WindowsAzure.Management.MediaServices;
@@ -30,6 +30,7 @@
using Microsoft.WindowsAzure.Management.Storage;
using Microsoft.WindowsAzure.Management.Storage.Models;
using Newtonsoft.Json;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.MediaServices
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Scheduler/SchedulerMgmntClient.CreateJobs.cs b/src/ServiceManagement/Services/Commands.Utilities/Scheduler/SchedulerMgmntClient.CreateJobs.cs
index 99d104d97491..c678fe40b48c 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Scheduler/SchedulerMgmntClient.CreateJobs.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Scheduler/SchedulerMgmntClient.CreateJobs.cs
@@ -20,6 +20,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Scheduler.Model;
using Microsoft.WindowsAzure.Scheduler;
using Microsoft.WindowsAzure.Scheduler.Models;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.Scheduler
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Scheduler/SchedulerMgmntClient.cs b/src/ServiceManagement/Services/Commands.Utilities/Scheduler/SchedulerMgmntClient.cs
index 728b6c902af8..0eb9d533ad57 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Scheduler/SchedulerMgmntClient.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Scheduler/SchedulerMgmntClient.cs
@@ -16,7 +16,7 @@
using System.Collections.Generic;
using System.Linq;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
using Microsoft.WindowsAzure.Commands.Utilities.Scheduler.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Scheduler.Model;
@@ -24,6 +24,7 @@
using Microsoft.WindowsAzure.Management.Scheduler.Models;
using Microsoft.WindowsAzure.Scheduler;
using Microsoft.WindowsAzure.Scheduler.Models;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.Scheduler
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/ServiceBus/ServiceBusClientExtensions.cs b/src/ServiceManagement/Services/Commands.Utilities/ServiceBus/ServiceBusClientExtensions.cs
index dd353879c61f..9e8c4ca20910 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/ServiceBus/ServiceBusClientExtensions.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/ServiceBus/ServiceBusClientExtensions.cs
@@ -22,7 +22,7 @@
using Microsoft.ServiceBus.Messaging;
using Microsoft.ServiceBus.Notifications;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
using Microsoft.WindowsAzure.Management.ServiceBus;
using Microsoft.WindowsAzure.Management.ServiceBus.Models;
@@ -30,6 +30,8 @@
namespace Microsoft.WindowsAzure.Commands.Utilities.ServiceBus
{
using ServiceBusNamespaceDescription = Management.ServiceBus.Models.NamespaceDescription;
+ using Microsoft.Azure.Common.Extensions.Models;
+ using Microsoft.Azure.Common.Extensions;
public class ServiceBusClientExtensions
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Store/StoreClient.cs b/src/ServiceManagement/Services/Commands.Utilities/Store/StoreClient.cs
index 47655197556f..dfa975d3c4f0 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Store/StoreClient.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Store/StoreClient.cs
@@ -19,7 +19,7 @@
using System.Security.Cryptography;
using System.Text;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.MarketplaceServiceReference;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
@@ -32,6 +32,8 @@
namespace Microsoft.WindowsAzure.Commands.Utilities.Store
{
using Resource = Management.Store.Models.CloudServiceListResponse.CloudService.AddOnResource;
+ using Microsoft.Azure.Common.Extensions.Models;
+ using Microsoft.Azure.Common.Extensions;
public class StoreClient
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/WAPackIaaS/WebClient/Subscription.cs b/src/ServiceManagement/Services/Commands.Utilities/WAPackIaaS/WebClient/Subscription.cs
index f33e2b1afa0d..c8b00a60b2f0 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/WAPackIaaS/WebClient/Subscription.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/WAPackIaaS/WebClient/Subscription.cs
@@ -17,8 +17,9 @@
using System.Security;
using System.Security.Cryptography.X509Certificates;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.WAPackIaaS.WebClient
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Websites/KuduRemoteClientBase.cs b/src/ServiceManagement/Services/Commands.Utilities/Websites/KuduRemoteClientBase.cs
index 6443c16e7204..d01d08427868 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Websites/KuduRemoteClientBase.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Websites/KuduRemoteClientBase.cs
@@ -16,8 +16,9 @@
using System.Net;
using System.Net.Http;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Factories;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.Azure.Common.Extensions;
+using Microsoft.Azure.Common.Extensions.Factories;
namespace Microsoft.WindowsAzure.Commands.Utilities.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Websites/RemoteLogStreamManager.cs b/src/ServiceManagement/Services/Commands.Utilities/Websites/RemoteLogStreamManager.cs
index 72e84b42ff81..db9701c0cc22 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Websites/RemoteLogStreamManager.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Websites/RemoteLogStreamManager.cs
@@ -18,6 +18,7 @@
using System.Text;
using System.Threading.Tasks;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.Utilities.Websites
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Websites/Services/Cache.cs b/src/ServiceManagement/Services/Commands.Utilities/Websites/Services/Cache.cs
index 74cf334bcdee..b5c18f3badee 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Websites/Services/Cache.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Websites/Services/Cache.cs
@@ -19,6 +19,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities;
using Microsoft.WindowsAzure.Commands.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.Websites.Services
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Websites/Services/LinkedRevisionControl.cs b/src/ServiceManagement/Services/Commands.Utilities/Websites/Services/LinkedRevisionControl.cs
index 6895ef105b6c..2a9b78ac97af 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Websites/Services/LinkedRevisionControl.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Websites/Services/LinkedRevisionControl.cs
@@ -17,6 +17,7 @@
using System.Linq;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Utilities.Websites.Services
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/Websites/WebsitesClient.cs b/src/ServiceManagement/Services/Commands.Utilities/Websites/WebsitesClient.cs
index a11fc02974d4..8dc3a6897bc1 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/Websites/WebsitesClient.cs
+++ b/src/ServiceManagement/Services/Commands.Utilities/Websites/WebsitesClient.cs
@@ -27,7 +27,7 @@
using Microsoft.Build.Logging;
using Microsoft.Web.Deployment;
using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Common.Storage;
using Microsoft.WindowsAzure.Commands.Utilities.CloudService;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
@@ -47,6 +47,8 @@
namespace Microsoft.WindowsAzure.Commands.Utilities.Websites
{
using Utilities = Services.WebEntities;
+ using Microsoft.Azure.Common.Extensions.Models;
+ using Microsoft.Azure.Common.Extensions;
public class WebsitesClient : IWebsitesClient
{
diff --git a/src/ServiceManagement/Services/Commands.Utilities/packages.config b/src/ServiceManagement/Services/Commands.Utilities/packages.config
index 887ed5820018..e37a49cce74a 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/packages.config
+++ b/src/ServiceManagement/Services/Commands.Utilities/packages.config
@@ -13,9 +13,8 @@
-
-
+
diff --git a/src/ServiceManagement/Services/Commands/CloudService/Development/EnableAzureMemcacheRole.cs b/src/ServiceManagement/Services/Commands/CloudService/Development/EnableAzureMemcacheRole.cs
index e28a437e4eb0..8c4fda353f15 100644
--- a/src/ServiceManagement/Services/Commands/CloudService/Development/EnableAzureMemcacheRole.cs
+++ b/src/ServiceManagement/Services/Commands/CloudService/Development/EnableAzureMemcacheRole.cs
@@ -32,6 +32,7 @@ namespace Microsoft.WindowsAzure.Commands.CloudService.Development
{
using ConfigConfigurationSetting = Utilities.Common.XmlSchema.ServiceConfigurationSchema.ConfigurationSetting;
using DefinitionConfigurationSetting = Utilities.Common.XmlSchema.ServiceDefinitionSchema.ConfigurationSetting;
+ using Microsoft.WindowsAzure.Commands.Common;
///
/// Enables memcache for specific role.
diff --git a/src/ServiceManagement/Services/Commands/CloudService/Development/EnableAzureRemoteDesktop.cs b/src/ServiceManagement/Services/Commands/CloudService/Development/EnableAzureRemoteDesktop.cs
index 2f7d9865e3c9..cf1eb84ce317 100644
--- a/src/ServiceManagement/Services/Commands/CloudService/Development/EnableAzureRemoteDesktop.cs
+++ b/src/ServiceManagement/Services/Commands/CloudService/Development/EnableAzureRemoteDesktop.cs
@@ -30,6 +30,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
using Certificate = Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema.Certificate;
using ConfigurationSetting = Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema.ConfigurationSetting;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.CloudService.Development
{
diff --git a/src/ServiceManagement/Services/Commands/CloudService/Development/SaveAzureServiceProjectPackage.cs b/src/ServiceManagement/Services/Commands/CloudService/Development/SaveAzureServiceProjectPackage.cs
index 9b87d6cdbcfd..44776a935b79 100644
--- a/src/ServiceManagement/Services/Commands/CloudService/Development/SaveAzureServiceProjectPackage.cs
+++ b/src/ServiceManagement/Services/Commands/CloudService/Development/SaveAzureServiceProjectPackage.cs
@@ -19,6 +19,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.CloudService.AzureTools;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.CloudService.Development
{
diff --git a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureCacheWorkerRole.cs b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureCacheWorkerRole.cs
index e9194c082ca0..bf88da4f4c45 100644
--- a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureCacheWorkerRole.cs
+++ b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureCacheWorkerRole.cs
@@ -21,6 +21,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceDefinitionSchema;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.CloudService.Development.Scaffolding
{
diff --git a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureDjangoWebRole.cs b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureDjangoWebRole.cs
index e23145fdf384..03fc10eb49c8 100644
--- a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureDjangoWebRole.cs
+++ b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureDjangoWebRole.cs
@@ -20,6 +20,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.CloudService.Development.Scaffolding
{
diff --git a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureNodeWebRole.cs b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureNodeWebRole.cs
index 14bff8bd55a2..1a858fa26df9 100644
--- a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureNodeWebRole.cs
+++ b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureNodeWebRole.cs
@@ -18,6 +18,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.CloudService.Development.Scaffolding
{
diff --git a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureNodeWorkerRole.cs b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureNodeWorkerRole.cs
index ff6cf0b50a7d..7ba23f1d3683 100644
--- a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureNodeWorkerRole.cs
+++ b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureNodeWorkerRole.cs
@@ -18,6 +18,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.CloudService.Development.Scaffolding
{
diff --git a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzurePHPWebRole.cs b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzurePHPWebRole.cs
index 1ad9bdc7e4bf..61984d0b30ce 100644
--- a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzurePHPWebRole.cs
+++ b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzurePHPWebRole.cs
@@ -18,6 +18,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.CloudService.Development.Scaffolding
{
diff --git a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzurePHPWorkerRole.cs b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzurePHPWorkerRole.cs
index d68c2f8b9a3f..07e5dae3b05b 100644
--- a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzurePHPWorkerRole.cs
+++ b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzurePHPWorkerRole.cs
@@ -18,6 +18,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.CloudService.Development.Scaffolding
{
diff --git a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureWebRole.cs b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureWebRole.cs
index ae68a1ddabbe..b61c7ce13f61 100644
--- a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureWebRole.cs
+++ b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureWebRole.cs
@@ -20,6 +20,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.CloudService.Development.Scaffolding
{
diff --git a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureWorkerRole.cs b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureWorkerRole.cs
index 0dfd9eba9228..bb52897a934b 100644
--- a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureWorkerRole.cs
+++ b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/AddAzureWorkerRole.cs
@@ -19,6 +19,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Common.XmlSchema.ServiceConfigurationSchema;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.CloudService.Development.Scaffolding
{
diff --git a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/NewAzureRoleTemplate.cs b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/NewAzureRoleTemplate.cs
index 0b3616e50565..18fe8452fa07 100644
--- a/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/NewAzureRoleTemplate.cs
+++ b/src/ServiceManagement/Services/Commands/CloudService/Development/Scaffolding/NewAzureRoleTemplate.cs
@@ -19,6 +19,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.CloudService;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.CloudService.Development.Scaffolding
{
diff --git a/src/ServiceManagement/Services/Commands/CloudService/Development/StartAzureEmulator.cs b/src/ServiceManagement/Services/Commands/CloudService/Development/StartAzureEmulator.cs
index c30480f3a02c..24685533648b 100644
--- a/src/ServiceManagement/Services/Commands/CloudService/Development/StartAzureEmulator.cs
+++ b/src/ServiceManagement/Services/Commands/CloudService/Development/StartAzureEmulator.cs
@@ -21,6 +21,7 @@
using Microsoft.WindowsAzure.Commands.Utilities.CloudService.AzureTools;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.WindowsAzure.Commands.Common;
namespace Microsoft.WindowsAzure.Commands.CloudService.Development
{
diff --git a/src/ServiceManagement/Services/Commands/CloudService/TestAzureName.cs b/src/ServiceManagement/Services/Commands/CloudService/TestAzureName.cs
index 9d9a8c088b56..1c8f38e2ebc9 100644
--- a/src/ServiceManagement/Services/Commands/CloudService/TestAzureName.cs
+++ b/src/ServiceManagement/Services/Commands/CloudService/TestAzureName.cs
@@ -14,11 +14,12 @@
using System.IO;
using System.Management.Automation;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Utilities.CloudService;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.ServiceBus;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.CloudService
{
diff --git a/src/ServiceManagement/Services/Commands/Commands.csproj b/src/ServiceManagement/Services/Commands/Commands.csproj
index 7f7d503574c4..207e963871ff 100644
--- a/src/ServiceManagement/Services/Commands/Commands.csproj
+++ b/src/ServiceManagement/Services/Commands/Commands.csproj
@@ -115,7 +115,7 @@
False
- ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.4.1.0\lib\net40\Microsoft.WindowsAzure.Management.Network.dll
+ ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.4.3.0\lib\net40\Microsoft.WindowsAzure.Management.Network.dll
..\..\..\packages\Microsoft.WindowsAzure.Management.Scheduler.4.1.0\lib\net40\Microsoft.WindowsAzure.Management.Scheduler.dll
@@ -336,6 +336,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{4900ec4e-8deb-4412-9108-0bc52f81d457}
Commands.Utilities
diff --git a/src/ServiceManagement/Services/Commands/MediaServices/AzureMediaServicesHttpClientCommandBase.cs b/src/ServiceManagement/Services/Commands/MediaServices/AzureMediaServicesHttpClientCommandBase.cs
index de42618d3072..9f32f435bd8d 100644
--- a/src/ServiceManagement/Services/Commands/MediaServices/AzureMediaServicesHttpClientCommandBase.cs
+++ b/src/ServiceManagement/Services/Commands/MediaServices/AzureMediaServicesHttpClientCommandBase.cs
@@ -14,6 +14,7 @@
using System;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.MediaServices
{
diff --git a/src/ServiceManagement/Services/Commands/Websites/EnableAzureWebsiteDiagnostic.cs b/src/ServiceManagement/Services/Commands/Websites/EnableAzureWebsiteDiagnostic.cs
index 105ddd37a2c2..503cc72e53c5 100644
--- a/src/ServiceManagement/Services/Commands/Websites/EnableAzureWebsiteDiagnostic.cs
+++ b/src/ServiceManagement/Services/Commands/Websites/EnableAzureWebsiteDiagnostic.cs
@@ -14,7 +14,7 @@
using System.Collections.Generic;
using System.Management.Automation;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Utilities.Websites;
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.DeploymentEntities;
diff --git a/src/ServiceManagement/Services/Commands/Websites/NewAzureWebSite.cs b/src/ServiceManagement/Services/Commands/Websites/NewAzureWebSite.cs
index 12c7b2baee7e..f3a1ad735844 100644
--- a/src/ServiceManagement/Services/Commands/Websites/NewAzureWebSite.cs
+++ b/src/ServiceManagement/Services/Commands/Websites/NewAzureWebSite.cs
@@ -32,6 +32,7 @@
namespace Microsoft.WindowsAzure.Commands.Websites
{
using GitClass = Utilities.Websites.Services.Git;
+ using Microsoft.Azure.Common.Extensions;
///
/// Creates a new azure website.
diff --git a/src/ServiceManagement/Services/Commands/Websites/ShowAzurePortal.cs b/src/ServiceManagement/Services/Commands/Websites/ShowAzurePortal.cs
index 0f05ce9d378b..38c49306e520 100644
--- a/src/ServiceManagement/Services/Commands/Websites/ShowAzurePortal.cs
+++ b/src/ServiceManagement/Services/Commands/Websites/ShowAzurePortal.cs
@@ -14,10 +14,10 @@
using System.Management.Automation;
using System.Security.Permissions;
-using Microsoft.WindowsAzure.Commands.Common;
-using Microsoft.WindowsAzure.Commands.Common.Models;
+using Microsoft.Azure.Common.Extensions.Models;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Commands.Utilities.Properties;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.Websites
{
diff --git a/src/ServiceManagement/Services/Commands/packages.config b/src/ServiceManagement/Services/Commands/packages.config
index 9da3054ed4d8..6e53e1f698dd 100644
--- a/src/ServiceManagement/Services/Commands/packages.config
+++ b/src/ServiceManagement/Services/Commands/packages.config
@@ -14,7 +14,7 @@
-
+
diff --git a/src/ServiceManagement/Sql/Commands.SqlDatabase.Test/Commands.SqlDatabase.Test.csproj b/src/ServiceManagement/Sql/Commands.SqlDatabase.Test/Commands.SqlDatabase.Test.csproj
index 9219943795cb..0480193a3d80 100644
--- a/src/ServiceManagement/Sql/Commands.SqlDatabase.Test/Commands.SqlDatabase.Test.csproj
+++ b/src/ServiceManagement/Sql/Commands.SqlDatabase.Test/Commands.SqlDatabase.Test.csproj
@@ -196,6 +196,10 @@
+
+ {b95c489c-8cb7-4dcf-8d5f-b9aebdbbaf89}
+ Common.Extensions
+
{DDF5D225-C9C5-42B7-BDB5-2C3646E479AA}
Commands.SqlDatabase
diff --git a/src/ServiceManagement/Sql/Commands.SqlDatabase.Test/FunctionalTests/OutputFormatValidator.cs b/src/ServiceManagement/Sql/Commands.SqlDatabase.Test/FunctionalTests/OutputFormatValidator.cs
index 361a3282f3c4..f95acb7f8976 100644
--- a/src/ServiceManagement/Sql/Commands.SqlDatabase.Test/FunctionalTests/OutputFormatValidator.cs
+++ b/src/ServiceManagement/Sql/Commands.SqlDatabase.Test/FunctionalTests/OutputFormatValidator.cs
@@ -16,6 +16,7 @@
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
+using Microsoft.Azure.Common.Extensions;
namespace Microsoft.WindowsAzure.Commands.SqlDatabase.Test.FunctionalTests
{
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