diff --git a/src/ResourceManager/Resources/Commands.Resources/AzureResourceManager.psd1 b/src/ResourceManager/Resources/Commands.Resources/AzureResourceManager.psd1 index 3cb5633edfd6..ae14cbff45f4 100644 --- a/src/ResourceManager/Resources/Commands.Resources/AzureResourceManager.psd1 +++ b/src/ResourceManager/Resources/Commands.Resources/AzureResourceManager.psd1 @@ -72,10 +72,11 @@ FormatsToProcess = @( '.\Compute\Microsoft.Azure.Commands.Compute.format.generated.ps1xml', '.\Network\Microsoft.Azure.Commands.Network.format.ps1xml', '.\Storage\Microsoft.WindowsAzure.Commands.Storage.format.ps1xml', - '.\StorageManagement\Microsoft.Azure.Commands.Management.Storage.format.ps1xml', + '.\StorageManagement\Microsoft.Azure.Commands.Management.Storage.format.ps1xml', '.\OperationalInsights\Microsoft.Azure.Commands.OperationalInsights.format.ps1xml', '.\AzureBackup\Microsoft.Azure.Commands.AzureBackup.format.ps1xml', - '.\UsageAggregates\Microsoft.Azure.Commands.UsageAggregates.Format.ps1xml' + '.\UsageAggregates\Microsoft.Azure.Commands.UsageAggregates.Format.ps1xml', + '.\Sql\Microsoft.Azure.Commands.Sql.format.ps1xml' ) # Modules to import as nested modules of the module specified in ModuleToProcess 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 e3a73b077cb3..8bcc1aacb2b5 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/Commands.Sql.Test.csproj +++ b/src/ResourceManager/Sql/Commands.Sql.Test/Commands.Sql.Test.csproj @@ -51,9 +51,6 @@ False ..\..\..\packages\Microsoft.Azure.Management.Authorization.0.19.2-preview\lib\net40\Microsoft.Azure.Management.Authorization.dll - - ..\..\..\packages\Microsoft.Azure.Management.Sql.0.29.0-prerelease\lib\net40\Microsoft.Azure.Management.Sql.dll - ..\..\..\packages\Microsoft.Azure.Common.2.1.0\lib\net45\Microsoft.Azure.Common.dll @@ -72,7 +69,7 @@ ..\..\..\packages\Microsoft.Azure.Graph.RBAC.1.7.0-preview\lib\net40\Microsoft.Azure.Graph.RBAC.dll - ..\..\..\packages\Microsoft.Azure.Management.Sql.0.36.0-prerelease\lib\net40\Microsoft.Azure.Management.Sql.dll + ..\..\..\packages\Microsoft.Azure.Management.Sql.0.37.0-prerelease\lib\net40\Microsoft.Azure.Management.Sql.dll ..\..\..\packages\Microsoft.Azure.Management.Storage.2.4.0-preview\lib\net40\Microsoft.Azure.Management.Storage.dll @@ -192,6 +189,9 @@ + + Always + PreserveNewest @@ -210,6 +210,7 @@ Always + @@ -228,6 +229,7 @@ + @@ -489,6 +491,9 @@ Always + + Always + PreserveNewest diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/AuditingTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/AuditingTests.cs index f084b9948cd4..c6bf513ae7ab 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/AuditingTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/AuditingTests.cs @@ -44,182 +44,182 @@ protected override void SetupManagementClients() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingDatabaseUpdatePolicyWithStorage() { RunPowerShellTest("Test-AuditingDatabaseUpdatePolicyWithStorage"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingDatabaseUpdatePolicyWithStorageV2() { RunPowerShellTest("Test-AuditingDatabaseUpdatePolicyWithStorageV2"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingServerUpdatePolicyWithStorage() { RunPowerShellTest("Test-AuditingServerUpdatePolicyWithStorage"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingDatabaseUpdatePolicyWithEventTypes() { RunPowerShellTest("Test-AuditingDatabaseUpdatePolicyWithEventTypes"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingServerUpdatePolicyWithEventTypes() { RunPowerShellTest("Test-AuditingServerUpdatePolicyWithEventTypes"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingDisableDatabaseAuditing() { RunPowerShellTest("Test-AuditingDisableDatabaseAuditing"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingDisableServerAuditing() { RunPowerShellTest("Test-AuditingDisableServerAuditing"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingDatabaseDisableEnableKeepProperties() { RunPowerShellTest("Test-AuditingDatabaseDisableEnableKeepProperties"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingServerDisableEnableKeepProperties() { RunPowerShellTest("Test-AuditingServerDisableEnableKeepProperties"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingUseServerDefault() { RunPowerShellTest("Test-AuditingUseServerDefault"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingFailedDatabaseUpdatePolicyWithNoStorage() { RunPowerShellTest("Test-AuditingFailedDatabaseUpdatePolicyWithNoStorage"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingFailedServerUpdatePolicyWithNoStorage() { RunPowerShellTest("Test-AuditingFailedServerUpdatePolicyWithNoStorage"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingFailedUseServerDefault() { RunPowerShellTest("Test-AuditingFailedUseServerDefault"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingDatabaseUpdatePolicyWithEventTypeShortcuts() { RunPowerShellTest("Test-AuditingDatabaseUpdatePolicyWithEventTypeShortcuts"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingServerUpdatePolicyWithEventTypeShortcuts() { RunPowerShellTest("Test-AuditingServerUpdatePolicyWithEventTypeShortcuts"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingDatabaseUpdatePolicyKeepPreviousStorage() { RunPowerShellTest("Test-AuditingDatabaseUpdatePolicyKeepPreviousStorage"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingServerUpdatePolicyKeepPreviousStorage() { RunPowerShellTest("Test-AuditingServerUpdatePolicyKeepPreviousStorage"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingFailWithBadDatabaseIndentity() { RunPowerShellTest("Test-AuditingFailWithBadDatabaseIndentity"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingFailWithBadServerIndentity() { RunPowerShellTest("Test-AuditingFailWithBadServerIndentity"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingDatabaseStorageKeyRotation() { RunPowerShellTest("Test-AuditingDatabaseStorageKeyRotation"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingServerStorageKeyRotation() { RunPowerShellTest("Test-AuditingServerStorageKeyRotation"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingServerUpdatePolicyWithRetention() { RunPowerShellTest("Test-AuditingServerUpdatePolicyWithRetention"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingDatabaseUpdatePolicyWithRetention() { RunPowerShellTest("Test-AuditingDatabaseUpdatePolicyWithRetention"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingServerRetentionKeepProperties() { RunPowerShellTest("Test-AuditingServerRetentionKeepProperties"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingDatabaseRetentionKeepProperties() { RunPowerShellTest("Test-AuditingDatabaseRetentionKeepProperties"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.Sql)] public void TestAuditingDatabaseUpdatePolicyWithSameNameStorageOnDifferentRegion() { RunPowerShellTest("Test-AuditingDatabaseUpdatePolicyWithSameNameStorageOnDifferentRegion"); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/Common.ps1 b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/Common.ps1 index db018d20c055..b52116cb13d4 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/Common.ps1 +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/Common.ps1 @@ -171,7 +171,6 @@ function Create-ResourceGroupForTest () return $rg } - <# .SYNOPSIS removes a resource group that was used for testing diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DataMaskingTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DataMaskingTests.cs index e42e87c6f920..45966ecabf5a 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DataMaskingTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DataMaskingTests.cs @@ -22,49 +22,49 @@ public class DataMaskingTests : SqlTestsBase { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseDataMaskingPolicyEnablementToggling() { RunPowerShellTest("Test-DatabaseDataMaskingPolicyEnablementToggling"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseDataMaskingPrivilegedLoginsChanges() { RunPowerShellTest("Test-DatabaseDataMaskingPrivilegedLoginsChanges"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseDataMaskingBasicRuleLifecycle() { RunPowerShellTest("Test-DatabaseDataMaskingBasicRuleLifecycle"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseDataMaskingNumberRuleLifecycle() { RunPowerShellTest("Test-DatabaseDataMaskingNumberRuleLifecycle"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseDataMaskingTextRuleLifecycle() { RunPowerShellTest("Test-DatabaseDataMaskingTextRuleLifecycle"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseDataMaskingRuleCreationFailures() { RunPowerShellTest("Test-DatabaseDataMaskingRuleCreationFailures"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseDataMaskingRuleCreationWithoutPolicy() { RunPowerShellTest("Test-DatabaseDataMaskingRuleCreationWithoutPolicy"); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DatabaseActivationTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DatabaseActivationTests.cs index 636e9fca1c92..68d7866fd7f1 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DatabaseActivationTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DatabaseActivationTests.cs @@ -21,14 +21,14 @@ namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests public class DatabaseActivationTests : SqlTestsBase { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabasePauseResume() { RunPowerShellTest("Test-DatabasePauseResume"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabasePauseResumePiped() { RunPowerShellTest("Test-DatabasePauseResumePiped"); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DatabaseBackupTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DatabaseBackupTests.cs index e85c4ae2773d..36a4bb78d185 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DatabaseBackupTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DatabaseBackupTests.cs @@ -21,7 +21,7 @@ namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests public class DatabaseBackupTests : SqlTestsBase { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestListDatabaseRestorePoints() { RunPowerShellTest("Test-ListDatabaseRestorePoints"); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DatabaseCrudTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DatabaseCrudTests.cs index 97530df919c9..9a23b6e80a9b 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DatabaseCrudTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/DatabaseCrudTests.cs @@ -21,56 +21,56 @@ namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests public class DatabaseCrudTests : SqlTestsBase { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseCreate() { RunPowerShellTest("Test-CreateDatabase"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseUpdate() { RunPowerShellTest("Test-UpdateDatabase"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseGet() { RunPowerShellTest("Test-GetDatabase"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseRemove() { RunPowerShellTest("Test-RemoveDatabase"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseCreateV2() { RunPowerShellTest("Test-CreateDatabaseV2"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseUpdateV2() { RunPowerShellTest("Test-UpdateDatabaseV2"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseGetV2() { RunPowerShellTest("Test-GetDatabaseV2"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseRemoveV2() { RunPowerShellTest("Test-RemoveDatabaseV2"); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ElasticPoolCrudTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ElasticPoolCrudTests.cs index 3b5b030343c4..edb3f4b6136b 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ElasticPoolCrudTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ElasticPoolCrudTests.cs @@ -20,36 +20,36 @@ namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests { public class ElasticPoolCrudTests : SqlTestsBase { + // Currently the test runs too long to be marked as a check-in test. [Fact] - [Trait(Category.Sql, Category.CheckIn)] public void TestElasticPoolCreate() { RunPowerShellTest("Test-CreateElasticPool"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestElasticPoolUpdate() { RunPowerShellTest("Test-UpdateElasticPool"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestElasticPoolGet() { RunPowerShellTest("Test-GetElasticPool"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestElasticPoolMetricGet() { RunPowerShellTest("Test-GetElasticPoolMetric"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestElasticPoolRemove() { RunPowerShellTest("Test-RemoveElasticPool"); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/IndexRecommendationTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/IndexRecommendationTests.cs index 628e740dc997..ff5a2a424e94 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/IndexRecommendationTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/IndexRecommendationTests.cs @@ -21,14 +21,14 @@ namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests public class IndexRecommendationTests : SqlTestsBase { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetIndexRecommendation() { RunPowerShellTest("Test-GetIndexRecommendations"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestCreateIndex() { RunPowerShellTest("Test-CreateIndex"); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/LocationCapabilitiesTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/LocationCapabilitiesTests.cs new file mode 100644 index 000000000000..5928f25d5c9b --- /dev/null +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/LocationCapabilitiesTests.cs @@ -0,0 +1,30 @@ +// ---------------------------------------------------------------------------------- +// +// 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.ScenarioTest.SqlTests; +using Microsoft.WindowsAzure.Commands.ScenarioTest; +using Xunit; + +namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests +{ + public class LocationCapabilitiesTests : SqlTestsBase + { + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void TestLocationCapabilities() + { + RunPowerShellTest("Test-Capabilities"); + } + } +} diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/LocationCapabilitiesTests.ps1 b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/LocationCapabilitiesTests.ps1 new file mode 100644 index 000000000000..96f467cea1fb --- /dev/null +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/LocationCapabilitiesTests.ps1 @@ -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. +# ---------------------------------------------------------------------------------- + +<# + .SYNOPSIS + Tests the Get-AzureSqlCapability cmdlet +#> +function Test-Capabilities +{ + $location = "North Europe" + $all = Get-AzureSqlCapability $location + Validate-Capabilities $all + + $default = Get-AzureSqlCapability $location -Defaults + Validate-Capabilities $default + + $version = Get-AzureSqlCapability $location -ServerVersionName "12.0" + Validate-Capabilities $default + + $edition = Get-AzureSqlCapability $location -EditionName "Premium" + Validate-Capabilities $default + + $so = Get-AzureSqlCapability $location -ServiceObjectiveName "S3" + Validate-Capabilities $default + +} + +<# + .SYNOPSIS + Validates that a LocationCapabilities object is valid and has all properties filled out +#> +function Validate-Capabilities ($capabilities) +{ + Assert-NotNull $capabilities + Assert-AreEqual $capabilities.Status "Available" + Assert-True {$capabilities.SupportedServerVersions.Count -gt 0} + + foreach($version in $capabilities.SupportedServerVersions) { + Assert-NotNull $version + Assert-NotNull $version.ServerVersionName + Assert-NotNull $version.Status + Assert-True {$version.SupportedEditions.Count -gt 0} + + foreach($edition in $version.SupportedEditions) { + Assert-NotNull $edition + Assert-NotNull $edition.EditionName + Assert-NotNull $edition.Status + Assert-True {$edition.SupportedServiceObjectives.Count -gt 0} + + foreach($so in $edition.SupportedServiceObjectives) { + Assert-NotNull $so + Assert-NotNull $so.ServiceObjectiveName + Assert-NotNull $so.Status + Assert-NotNull $so.Id + Assert-AreNotEqual $so.Id [System.Guid]::Empty + Assert-True {$so.SupportedMaxSizes.Count -gt 0} + + foreach($size in $so.SupportedMaxSizes) { + Assert-NotNull $size + Assert-NotNull $size.Limit + Assert-True { $size.Limit -gt 0 } + Assert-NotNull $size.Unit + Assert-NotNull $size.Status + } + } + } + } +} diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/RecommendedElasticPoolTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/RecommendedElasticPoolTests.cs index 4d36ad820cec..68ebde253e6e 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/RecommendedElasticPoolTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/RecommendedElasticPoolTests.cs @@ -21,7 +21,7 @@ namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests public class RecommendedElasticPoolTests : SqlTestsBase { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void ListRecommendedElasticPools() { RunPowerShellTest("Test-ElasticPoolRecommendation"); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServerActiveDirectoryAdministratorTest.cs b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServerActiveDirectoryAdministratorTest.cs index 486b8a4eedce..838166176e7c 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServerActiveDirectoryAdministratorTest.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServerActiveDirectoryAdministratorTest.cs @@ -21,7 +21,7 @@ namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests public class ServerActiveDirectoryAdministratorTest : SqlTestsBase { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestServerActiveDirectoryAdministratorCRUD() { RunPowerShellTest("Test-ServerActiveDirectoryAdministrator"); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServerCrudTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServerCrudTests.cs index 410ef64590cf..40dc86c04a32 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServerCrudTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServerCrudTests.cs @@ -21,28 +21,28 @@ namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests public class ServerCrudTests : SqlTestsBase { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestServerCreate() { RunPowerShellTest("Test-CreateServer"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestServerUpdate() { RunPowerShellTest("Test-UpdateServer"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestServerGet() { RunPowerShellTest("Test-GetServer"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestServerRemove() { RunPowerShellTest("Test-RemoveServer"); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServerUpgradeTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServerUpgradeTests.cs index 4a8a547ff192..4b0747da07f9 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServerUpgradeTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServerUpgradeTests.cs @@ -21,21 +21,21 @@ namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests public class ServerUpgradeTests : SqlTestsBase { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestServerUpgradeWithUpgradeHint() { RunPowerShellTest("Test-ServerUpgradeWithUpgradeHint"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestServerUpgradeAndCancel() { RunPowerShellTest("Test-ServerUpgradeAndCancel"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestServerUpgradeNegative() { RunPowerShellTest("Test-ServerUpgradeNegative"); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServiceTierAdvisorTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServiceTierAdvisorTests.cs index 23a8b965ff57..32dd9fc956f3 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServiceTierAdvisorTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/ServiceTierAdvisorTests.cs @@ -21,14 +21,14 @@ namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests public class ServiceTierAdvisorTests : SqlTestsBase { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void GetUpgradeDatabaseHint() { RunPowerShellTest("Test-GetUpgradeDatabaseHint"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void GetUpgradeServerHint() { RunPowerShellTest("Test-GetUpgradeServerHint"); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/TransparentDataEncryptionCrudTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/TransparentDataEncryptionCrudTests.cs index d79a412c911c..7f292f591ad5 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/TransparentDataEncryptionCrudTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/TransparentDataEncryptionCrudTests.cs @@ -21,14 +21,14 @@ namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests public class TransparentDataEncryptionCrudTests : SqlTestsBase { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseTransparentDataEncryptionUpdate() { RunPowerShellTest("Test-UpdateTransparentDataEncryption"); } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestDatabaseTransparentDataEncryptionGet() { RunPowerShellTest("Test-GetTransparentDataEncryption"); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/SessionRecords/Microsoft.Azure.Commands.Sql.Test.ScenarioTests.LocationCapabilitiesTests/TestLocationCapabilities.json b/src/ResourceManager/Sql/Commands.Sql.Test/SessionRecords/Microsoft.Azure.Commands.Sql.Test.ScenarioTests.LocationCapabilitiesTests/TestLocationCapabilities.json new file mode 100644 index 000000000000..8192e55c7044 --- /dev/null +++ b/src/ResourceManager/Sql/Commands.Sql.Test/SessionRecords/Microsoft.Azure.Commands.Sql.Test.ScenarioTests.LocationCapabilitiesTests/TestLocationCapabilities.json @@ -0,0 +1,281 @@ +{ + "Entries": [ + { + "RequestUri": "/subscriptions/a4d55cc0-84ec-49a6-84fd-ac40300fe684/providers/Microsoft.Sql/locations/North%20Europe/capabilities?api-version=2014-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYTRkNTVjYzAtODRlYy00OWE2LTg0ZmQtYWM0MDMwMGZlNjg0L3Byb3ZpZGVycy9NaWNyb3NvZnQuU3FsL2xvY2F0aW9ucy9Ob3J0aCUyMEV1cm9wZS9jYXBhYmlsaXRpZXM/YXBpLXZlcnNpb249MjAxNC0wNC0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "Microsoft.Azure.Management.Sql.SqlManagementClient/0.9.0.0" + ], + "x-ms-client-request-id": [ + "4b52a261-ea8f-4e05-8441-c0c13db8c9ac" + ] + }, + "ResponseBody": "{\r\n \"name\": \"North Europe\",\r\n \"status\": \"Available\",\r\n \"supportedServerVersions\": [\r\n {\r\n \"name\": \"12.0\",\r\n \"status\": \"Default\",\r\n \"supportedEditions\": [\r\n {\r\n \"name\": \"Basic\",\r\n \"status\": \"Available\",\r\n \"supportedServiceLevelObjectives\": [\r\n {\r\n \"id\": \"dd6d99bb-f193-4ec1-86f2-43d3bccbc49c\",\r\n \"name\": \"Basic\",\r\n \"status\": \"Default\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Standard\",\r\n \"status\": \"Default\",\r\n \"supportedServiceLevelObjectives\": [\r\n {\r\n \"id\": \"f1173c43-91bd-4aaa-973c-54e79e15235b\",\r\n \"name\": \"S0\",\r\n \"status\": \"Default\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"1b1ebd4d-d903-4baa-97f9-4ea675f5e928\",\r\n \"name\": \"S1\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"455330e1-00cd-488b-b5fa-177c226f28b7\",\r\n \"name\": \"S2\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Premium\",\r\n \"status\": \"Available\",\r\n \"supportedServiceLevelObjectives\": [\r\n {\r\n \"id\": \"7203483a-c4fb-4304-9e9f-17c71c904f5d\",\r\n \"name\": \"P1\",\r\n \"status\": \"Default\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"a7d1b92d-c987-4375-b54d-2b1d0e0f5bb0\",\r\n \"name\": \"P2\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"a7c4c615-cfb1-464b-b252-925be0a19446\",\r\n \"name\": \"P3\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"afe1eee1-1f12-4e5f-9ad6-2de9c12cb4dc\",\r\n \"name\": \"P4\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"43940481-9191-475a-9dba-6b505615b9aa\",\r\n \"name\": \"P6\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"dd00d544-bbc0-4f61-ba60-cdce0c410288\",\r\n \"name\": \"P11\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 750,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1000,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1024,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "9395" + ], + "Content-Type": [ + "application/json; odata=minimalmetadata; streaming=true; charset=utf-8" + ], + "x-ms-request-id": [ + "068312c4-ed1b-4e78-8034-71a017961d4d" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "DataServiceVersion": [ + "3.0;" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "14998" + ], + "x-ms-correlation-request-id": [ + "2a75aa79-d999-4e28-a551-ff343f95b2ed" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20150820T214432Z:2a75aa79-d999-4e28-a551-ff343f95b2ed" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-store, no-cache" + ], + "Date": [ + "Thu, 20 Aug 2015 21:44:31 GMT" + ], + "Server": [ + "Microsoft-HTTPAPI/2.0" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/a4d55cc0-84ec-49a6-84fd-ac40300fe684/providers/Microsoft.Sql/locations/North%20Europe/capabilities?api-version=2014-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYTRkNTVjYzAtODRlYy00OWE2LTg0ZmQtYWM0MDMwMGZlNjg0L3Byb3ZpZGVycy9NaWNyb3NvZnQuU3FsL2xvY2F0aW9ucy9Ob3J0aCUyMEV1cm9wZS9jYXBhYmlsaXRpZXM/YXBpLXZlcnNpb249MjAxNC0wNC0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "Microsoft.Azure.Management.Sql.SqlManagementClient/0.9.0.0" + ], + "x-ms-client-request-id": [ + "2f73464f-9a4a-4d8f-87ec-f8c5245ff35e" + ] + }, + "ResponseBody": "{\r\n \"name\": \"North Europe\",\r\n \"status\": \"Available\",\r\n \"supportedServerVersions\": [\r\n {\r\n \"name\": \"12.0\",\r\n \"status\": \"Default\",\r\n \"supportedEditions\": [\r\n {\r\n \"name\": \"Basic\",\r\n \"status\": \"Available\",\r\n \"supportedServiceLevelObjectives\": [\r\n {\r\n \"id\": \"dd6d99bb-f193-4ec1-86f2-43d3bccbc49c\",\r\n \"name\": \"Basic\",\r\n \"status\": \"Default\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Standard\",\r\n \"status\": \"Default\",\r\n \"supportedServiceLevelObjectives\": [\r\n {\r\n \"id\": \"f1173c43-91bd-4aaa-973c-54e79e15235b\",\r\n \"name\": \"S0\",\r\n \"status\": \"Default\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"1b1ebd4d-d903-4baa-97f9-4ea675f5e928\",\r\n \"name\": \"S1\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"455330e1-00cd-488b-b5fa-177c226f28b7\",\r\n \"name\": \"S2\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Premium\",\r\n \"status\": \"Available\",\r\n \"supportedServiceLevelObjectives\": [\r\n {\r\n \"id\": \"7203483a-c4fb-4304-9e9f-17c71c904f5d\",\r\n \"name\": \"P1\",\r\n \"status\": \"Default\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"a7d1b92d-c987-4375-b54d-2b1d0e0f5bb0\",\r\n \"name\": \"P2\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"a7c4c615-cfb1-464b-b252-925be0a19446\",\r\n \"name\": \"P3\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"afe1eee1-1f12-4e5f-9ad6-2de9c12cb4dc\",\r\n \"name\": \"P4\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"43940481-9191-475a-9dba-6b505615b9aa\",\r\n \"name\": \"P6\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"dd00d544-bbc0-4f61-ba60-cdce0c410288\",\r\n \"name\": \"P11\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 750,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1000,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1024,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "9395" + ], + "Content-Type": [ + "application/json; odata=minimalmetadata; streaming=true; charset=utf-8" + ], + "x-ms-request-id": [ + "3338f322-da34-4b6c-b184-f08a27f7316f" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "DataServiceVersion": [ + "3.0;" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "14997" + ], + "x-ms-correlation-request-id": [ + "d0a6651c-f859-4166-9461-1f4952e5dac6" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20150820T214433Z:d0a6651c-f859-4166-9461-1f4952e5dac6" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-store, no-cache" + ], + "Date": [ + "Thu, 20 Aug 2015 21:44:32 GMT" + ], + "Server": [ + "Microsoft-HTTPAPI/2.0" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/a4d55cc0-84ec-49a6-84fd-ac40300fe684/providers/Microsoft.Sql/locations/North%20Europe/capabilities?api-version=2014-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYTRkNTVjYzAtODRlYy00OWE2LTg0ZmQtYWM0MDMwMGZlNjg0L3Byb3ZpZGVycy9NaWNyb3NvZnQuU3FsL2xvY2F0aW9ucy9Ob3J0aCUyMEV1cm9wZS9jYXBhYmlsaXRpZXM/YXBpLXZlcnNpb249MjAxNC0wNC0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "Microsoft.Azure.Management.Sql.SqlManagementClient/0.9.0.0" + ], + "x-ms-client-request-id": [ + "5aaa561d-ea7b-445e-b533-45d15a7aa055" + ] + }, + "ResponseBody": "{\r\n \"name\": \"North Europe\",\r\n \"status\": \"Available\",\r\n \"supportedServerVersions\": [\r\n {\r\n \"name\": \"12.0\",\r\n \"status\": \"Default\",\r\n \"supportedEditions\": [\r\n {\r\n \"name\": \"Basic\",\r\n \"status\": \"Available\",\r\n \"supportedServiceLevelObjectives\": [\r\n {\r\n \"id\": \"dd6d99bb-f193-4ec1-86f2-43d3bccbc49c\",\r\n \"name\": \"Basic\",\r\n \"status\": \"Default\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Standard\",\r\n \"status\": \"Default\",\r\n \"supportedServiceLevelObjectives\": [\r\n {\r\n \"id\": \"f1173c43-91bd-4aaa-973c-54e79e15235b\",\r\n \"name\": \"S0\",\r\n \"status\": \"Default\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"1b1ebd4d-d903-4baa-97f9-4ea675f5e928\",\r\n \"name\": \"S1\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"455330e1-00cd-488b-b5fa-177c226f28b7\",\r\n \"name\": \"S2\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Premium\",\r\n \"status\": \"Available\",\r\n \"supportedServiceLevelObjectives\": [\r\n {\r\n \"id\": \"7203483a-c4fb-4304-9e9f-17c71c904f5d\",\r\n \"name\": \"P1\",\r\n \"status\": \"Default\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"a7d1b92d-c987-4375-b54d-2b1d0e0f5bb0\",\r\n \"name\": \"P2\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"a7c4c615-cfb1-464b-b252-925be0a19446\",\r\n \"name\": \"P3\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"afe1eee1-1f12-4e5f-9ad6-2de9c12cb4dc\",\r\n \"name\": \"P4\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"43940481-9191-475a-9dba-6b505615b9aa\",\r\n \"name\": \"P6\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"dd00d544-bbc0-4f61-ba60-cdce0c410288\",\r\n \"name\": \"P11\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 750,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1000,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1024,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "9395" + ], + "Content-Type": [ + "application/json; odata=minimalmetadata; streaming=true; charset=utf-8" + ], + "x-ms-request-id": [ + "13dadfe9-da25-4672-9f31-bf54103a9928" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "DataServiceVersion": [ + "3.0;" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "14996" + ], + "x-ms-correlation-request-id": [ + "1da78283-c63b-48be-9d14-3a81650afe1b" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20150820T214433Z:1da78283-c63b-48be-9d14-3a81650afe1b" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-store, no-cache" + ], + "Date": [ + "Thu, 20 Aug 2015 21:44:32 GMT" + ], + "Server": [ + "Microsoft-HTTPAPI/2.0" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/a4d55cc0-84ec-49a6-84fd-ac40300fe684/providers/Microsoft.Sql/locations/North%20Europe/capabilities?api-version=2014-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYTRkNTVjYzAtODRlYy00OWE2LTg0ZmQtYWM0MDMwMGZlNjg0L3Byb3ZpZGVycy9NaWNyb3NvZnQuU3FsL2xvY2F0aW9ucy9Ob3J0aCUyMEV1cm9wZS9jYXBhYmlsaXRpZXM/YXBpLXZlcnNpb249MjAxNC0wNC0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "Microsoft.Azure.Management.Sql.SqlManagementClient/0.9.0.0" + ], + "x-ms-client-request-id": [ + "c5142f90-e0bd-4341-b7d5-058c7357977d" + ] + }, + "ResponseBody": "{\r\n \"name\": \"North Europe\",\r\n \"status\": \"Available\",\r\n \"supportedServerVersions\": [\r\n {\r\n \"name\": \"12.0\",\r\n \"status\": \"Default\",\r\n \"supportedEditions\": [\r\n {\r\n \"name\": \"Basic\",\r\n \"status\": \"Available\",\r\n \"supportedServiceLevelObjectives\": [\r\n {\r\n \"id\": \"dd6d99bb-f193-4ec1-86f2-43d3bccbc49c\",\r\n \"name\": \"Basic\",\r\n \"status\": \"Default\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Standard\",\r\n \"status\": \"Default\",\r\n \"supportedServiceLevelObjectives\": [\r\n {\r\n \"id\": \"f1173c43-91bd-4aaa-973c-54e79e15235b\",\r\n \"name\": \"S0\",\r\n \"status\": \"Default\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"1b1ebd4d-d903-4baa-97f9-4ea675f5e928\",\r\n \"name\": \"S1\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"455330e1-00cd-488b-b5fa-177c226f28b7\",\r\n \"name\": \"S2\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Premium\",\r\n \"status\": \"Available\",\r\n \"supportedServiceLevelObjectives\": [\r\n {\r\n \"id\": \"7203483a-c4fb-4304-9e9f-17c71c904f5d\",\r\n \"name\": \"P1\",\r\n \"status\": \"Default\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"a7d1b92d-c987-4375-b54d-2b1d0e0f5bb0\",\r\n \"name\": \"P2\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"a7c4c615-cfb1-464b-b252-925be0a19446\",\r\n \"name\": \"P3\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"afe1eee1-1f12-4e5f-9ad6-2de9c12cb4dc\",\r\n \"name\": \"P4\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"43940481-9191-475a-9dba-6b505615b9aa\",\r\n \"name\": \"P6\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"dd00d544-bbc0-4f61-ba60-cdce0c410288\",\r\n \"name\": \"P11\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 750,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1000,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1024,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "9395" + ], + "Content-Type": [ + "application/json; odata=minimalmetadata; streaming=true; charset=utf-8" + ], + "x-ms-request-id": [ + "a89210eb-3817-4dae-a509-6ca597d15f5c" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "DataServiceVersion": [ + "3.0;" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "14995" + ], + "x-ms-correlation-request-id": [ + "a3417bc5-d4b9-4eab-967b-e376b2621204" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20150820T214433Z:a3417bc5-d4b9-4eab-967b-e376b2621204" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-store, no-cache" + ], + "Date": [ + "Thu, 20 Aug 2015 21:44:32 GMT" + ], + "Server": [ + "Microsoft-HTTPAPI/2.0" + ] + }, + "StatusCode": 200 + }, + { + "RequestUri": "/subscriptions/a4d55cc0-84ec-49a6-84fd-ac40300fe684/providers/Microsoft.Sql/locations/North%20Europe/capabilities?api-version=2014-04-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYTRkNTVjYzAtODRlYy00OWE2LTg0ZmQtYWM0MDMwMGZlNjg0L3Byb3ZpZGVycy9NaWNyb3NvZnQuU3FsL2xvY2F0aW9ucy9Ob3J0aCUyMEV1cm9wZS9jYXBhYmlsaXRpZXM/YXBpLXZlcnNpb249MjAxNC0wNC0wMQ==", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "User-Agent": [ + "Microsoft.Azure.Management.Sql.SqlManagementClient/0.9.0.0" + ], + "x-ms-client-request-id": [ + "3f6a0cb7-822b-44ee-af7a-a6f67e0fb877" + ] + }, + "ResponseBody": "{\r\n \"name\": \"North Europe\",\r\n \"status\": \"Available\",\r\n \"supportedServerVersions\": [\r\n {\r\n \"name\": \"12.0\",\r\n \"status\": \"Default\",\r\n \"supportedEditions\": [\r\n {\r\n \"name\": \"Basic\",\r\n \"status\": \"Available\",\r\n \"supportedServiceLevelObjectives\": [\r\n {\r\n \"id\": \"dd6d99bb-f193-4ec1-86f2-43d3bccbc49c\",\r\n \"name\": \"Basic\",\r\n \"status\": \"Default\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Standard\",\r\n \"status\": \"Default\",\r\n \"supportedServiceLevelObjectives\": [\r\n {\r\n \"id\": \"f1173c43-91bd-4aaa-973c-54e79e15235b\",\r\n \"name\": \"S0\",\r\n \"status\": \"Default\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"1b1ebd4d-d903-4baa-97f9-4ea675f5e928\",\r\n \"name\": \"S1\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"455330e1-00cd-488b-b5fa-177c226f28b7\",\r\n \"name\": \"S2\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Premium\",\r\n \"status\": \"Available\",\r\n \"supportedServiceLevelObjectives\": [\r\n {\r\n \"id\": \"7203483a-c4fb-4304-9e9f-17c71c904f5d\",\r\n \"name\": \"P1\",\r\n \"status\": \"Default\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"a7d1b92d-c987-4375-b54d-2b1d0e0f5bb0\",\r\n \"name\": \"P2\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"a7c4c615-cfb1-464b-b252-925be0a19446\",\r\n \"name\": \"P3\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"afe1eee1-1f12-4e5f-9ad6-2de9c12cb4dc\",\r\n \"name\": \"P4\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"43940481-9191-475a-9dba-6b505615b9aa\",\r\n \"name\": \"P6\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"dd00d544-bbc0-4f61-ba60-cdce0c410288\",\r\n \"name\": \"P11\",\r\n \"status\": \"Available\",\r\n \"supportedMaxSizes\": [\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Megabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 2,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 5,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 10,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 20,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 30,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 40,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 50,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 100,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 150,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 200,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 250,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 300,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 400,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 500,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 750,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1000,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Available\"\r\n },\r\n {\r\n \"limit\": 1024,\r\n \"unit\": \"Gigabytes\",\r\n \"status\": \"Default\"\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n}", + "ResponseHeaders": { + "Content-Length": [ + "9395" + ], + "Content-Type": [ + "application/json; odata=minimalmetadata; streaming=true; charset=utf-8" + ], + "x-ms-request-id": [ + "7f27c6fe-c0b4-4c78-897b-f445aef08485" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "DataServiceVersion": [ + "3.0;" + ], + "x-ms-ratelimit-remaining-subscription-reads": [ + "14994" + ], + "x-ms-correlation-request-id": [ + "ac87f35a-510e-480a-9895-4cfedfdfa940" + ], + "x-ms-routing-request-id": [ + "CENTRALUS:20150820T214433Z:ac87f35a-510e-480a-9895-4cfedfdfa940" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Cache-Control": [ + "no-store, no-cache" + ], + "Date": [ + "Thu, 20 Aug 2015 21:44:32 GMT" + ], + "Server": [ + "Microsoft-HTTPAPI/2.0" + ] + }, + "StatusCode": 200 + } + ], + "Names": {}, + "Variables": { + "SubscriptionId": "a4d55cc0-84ec-49a6-84fd-ac40300fe684", + "TenantId": "d4880c76-2879-4dbe-9ea1-762bc7d5b2e5", + "Domain": "aad251.ccsctp.net", + "User": "admin@aad251.ccsctp.net" + } +} \ No newline at end of file diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlCapabilityAttributeTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlCapabilityAttributeTests.cs new file mode 100644 index 000000000000..5d067b0e3a98 --- /dev/null +++ b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlCapabilityAttributeTests.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 System; +using Microsoft.Azure.Commands.Sql.Location_Capabilities.Cmdlet; +using Microsoft.Azure.Commands.Sql.Test.Utilities; +using Microsoft.WindowsAzure.Commands.ScenarioTest; +using Xunit; + +namespace Microsoft.Azure.Commands.Sql.Test.UnitTests +{ + public class AzureSqlCapabilityAttributeTests + { + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void GetAzureSqlCapabilityAttributes() + { + Type type = typeof(GetAzureSqlCapability); + UnitTestHelper.CheckCmdletModifiesData(type, supportsShouldProcess: false); + UnitTestHelper.CheckConfirmImpact(type, System.Management.Automation.ConfirmImpact.None); + + UnitTestHelper.CheckCmdletParameterAttributes(type, "LocationName", isMandatory: true, valueFromPipelineByName: true); + UnitTestHelper.CheckCmdletParameterAttributes(type, "ServerVersionName", isMandatory: false, valueFromPipelineByName: true); + UnitTestHelper.CheckCmdletParameterAttributes(type, "EditionName", isMandatory: false, valueFromPipelineByName: true); + UnitTestHelper.CheckCmdletParameterAttributes(type, "ServiceObjectiveName", isMandatory: false, valueFromPipelineByName: true); + UnitTestHelper.CheckCmdletParameterAttributes(type, "Defaults", isMandatory: false, valueFromPipelineByName: false); + } + } +} diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseActivationAttributeTest.cs b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseActivationAttributeTest.cs index 640bbaabb930..c720b121c854 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseActivationAttributeTest.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseActivationAttributeTest.cs @@ -25,7 +25,7 @@ namespace Microsoft.Azure.Commands.Sql.Test.UnitTests public class AzureSqlDatabaseActivationAttributeTests { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void SuspendAzureSqlDatabaseAttributes() { Type type = typeof(SuspendAzureSqlDatabase); @@ -37,7 +37,7 @@ public void SuspendAzureSqlDatabaseAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void ResumeAzureSqlDatabaseAttributes() { Type type = typeof(ResumeAzureSqlDatabase); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseAttributeTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseAttributeTests.cs index efe3e4fff9b4..9b33db8af177 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseAttributeTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseAttributeTests.cs @@ -23,7 +23,7 @@ namespace Microsoft.Azure.Commands.Sql.Test.UnitTests public class AzureSqlDatabaseAttributeTests { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void NewAzureSqlDatabaseAttributes() { Type type = typeof(NewAzureSqlDatabase); @@ -41,7 +41,7 @@ public void NewAzureSqlDatabaseAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void SetAzureSqlDatabaseAttributes() { Type type = typeof(SetAzureSqlDatabase); @@ -57,7 +57,7 @@ public void SetAzureSqlDatabaseAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void RemoveAzureSqlDatabaseAttributes() { Type type = typeof(RemoveAzureSqlDatabase); @@ -69,7 +69,7 @@ public void RemoveAzureSqlDatabaseAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void GetAzureSqlDatabaseAttributes() { Type type = typeof(GetAzureSqlDatabase); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseBackupAttributeTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseBackupAttributeTests.cs index 808798500c87..3a3b4ee93025 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseBackupAttributeTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseBackupAttributeTests.cs @@ -25,7 +25,7 @@ namespace Microsoft.Azure.Commands.Sql.Test.UnitTests public class AzureSqlDatabaseBackupAttributeTests { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void GetAzureSqlDatabaseRestorePointsAttributes() { Type type = typeof(GetAzureSqlDatabaseRestorePoints); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseIndexRecommendationAttributeTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseIndexRecommendationAttributeTests.cs index a06adc85302c..99dc103fb6d9 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseIndexRecommendationAttributeTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseIndexRecommendationAttributeTests.cs @@ -25,7 +25,7 @@ namespace Microsoft.Azure.Commands.Sql.Test.UnitTests public class AzureSqlDatabaseIndexRecommendationAttributeTests { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void GetAzureSqlIndexRecommendationAttributes() { Type type = typeof(GetAzureSqlDatabaseIndexRecommendations); @@ -37,7 +37,7 @@ public void GetAzureSqlIndexRecommendationAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void StartAzureSqlDatabaseExecuteIndexRecommendationAttributes() { Type type = typeof(StartAzureSqlDatabaseExecuteIndexRecommendation); @@ -49,7 +49,7 @@ public void StartAzureSqlDatabaseExecuteIndexRecommendationAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void StopAzureSqlDatabaseExecuteIndexRecommendationAttributes() { Type type = typeof(StopAzureSqlDatabaseExecuteIndexRecommendation); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseServerAttributeTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseServerAttributeTests.cs index 3781f14bae93..d1c1b56ab0a3 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseServerAttributeTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseServerAttributeTests.cs @@ -23,7 +23,7 @@ namespace Microsoft.Azure.Commands.Sql.Test.UnitTests public class AzureSqlServerAttributeTests { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void NewAzureSqlServerAttributes() { Type type = typeof(NewAzureSqlServer); @@ -37,7 +37,7 @@ public void NewAzureSqlServerAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void SetAzureSqlServerAttributes() { Type type = typeof(SetAzureSqlServer); @@ -51,7 +51,7 @@ public void SetAzureSqlServerAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void RemoveAzureSqlServerAttributes() { Type type = typeof(RemoveAzureSqlServer); @@ -62,7 +62,7 @@ public void RemoveAzureSqlServerAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void GetAzureSqlServerAttributes() { Type type = typeof(GetAzureSqlServer); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseServerFirewallRuleAttributeTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseServerFirewallRuleAttributeTests.cs index 484959182a4c..5928c85a35bc 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseServerFirewallRuleAttributeTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseServerFirewallRuleAttributeTests.cs @@ -23,7 +23,7 @@ namespace Microsoft.Azure.Commands.Sql.Test.UnitTests public class AzureSqlServerFirewallRuleAttributeTests { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void NewAzureSqlServerFirewallRuleAttributes() { Type type = typeof(NewAzureSqlServerFirewallRule); @@ -38,7 +38,7 @@ public void NewAzureSqlServerFirewallRuleAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void SetAzureSqlServerFirewallRuleAttributes() { Type type = typeof(SetAzureSqlServerFirewallRule); @@ -52,7 +52,7 @@ public void SetAzureSqlServerFirewallRuleAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void RemoveAzureSqlServerFirewallRuleAttributes() { Type type = typeof(RemoveAzureSqlServerFirewallRule); @@ -64,7 +64,7 @@ public void RemoveAzureSqlServerFirewallRuleAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void GetAzureSqlServerFirewallRuleAttributes() { Type type = typeof(GetAzureSqlServerFirewallRule); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseServerServiceObjectiveAttributeTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseServerServiceObjectiveAttributeTests.cs index 17db240a2eab..ae5c3f0cd965 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseServerServiceObjectiveAttributeTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlDatabaseServerServiceObjectiveAttributeTests.cs @@ -24,7 +24,7 @@ namespace Microsoft.Azure.Commands.Sql.Test.UnitTests public class AzureSqlDatabaseServerServiceObjectiveAttributeTests { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void GetAzureSqlDatabaseServerServiceObjectiveAttributes() { Type type = typeof(GetAzureSqlServerServiceObjective); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlServerUpgradeAttributeTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlServerUpgradeAttributeTests.cs index 169c9497f3b6..129dfdb8f082 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlServerUpgradeAttributeTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlServerUpgradeAttributeTests.cs @@ -24,7 +24,7 @@ namespace Microsoft.Azure.Commands.Sql.Test.UnitTests public class AzureSqlServerUpgradeAttributeTests { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void StartAzureSqlServerUpgradeAttributes() { Type type = typeof(StartAzureSqlServerUpgrade); @@ -36,7 +36,7 @@ public void StartAzureSqlServerUpgradeAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void StopAzureSqlServerUpgradeAttributes() { Type type = typeof(StopAzureSqlServerUpgrade); @@ -47,7 +47,7 @@ public void StopAzureSqlServerUpgradeAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void GetAzureSqlServerUpgradeAttributes() { Type type = typeof(GetAzureSqlServerUpgrade); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlServiceTierAdvisorAttributeTests.cs b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlServiceTierAdvisorAttributeTests.cs index 6148ec5dd6dc..25e36a1b55bf 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlServiceTierAdvisorAttributeTests.cs +++ b/src/ResourceManager/Sql/Commands.Sql.Test/UnitTests/AzureSqlServiceTierAdvisorAttributeTests.cs @@ -26,7 +26,7 @@ namespace Microsoft.Azure.Commands.Sql.Test.UnitTests public class AzureSqlServiceTierAdvisorAttributeTests { [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void GetAzureSqlDatabaseUpgradeHintAttributes() { Type type = typeof(GetAzureSqlDatabaseUpgradeHint); @@ -39,7 +39,7 @@ public void GetAzureSqlDatabaseUpgradeHintAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void GetAzureSqlServerUpgradeHintAttributes() { Type type = typeof(GetAzureSqlServerUpgradeHint); @@ -51,7 +51,7 @@ public void GetAzureSqlServerUpgradeHintAttributes() } [Fact] - [Trait(Category.Sql, Category.CheckIn)] + [Trait(Category.AcceptanceType, Category.CheckIn)] public void GetAzureSqlDatabaseExpandedAttributes() { Type type = typeof(GetAzureSqlDatabaseExpanded); diff --git a/src/ResourceManager/Sql/Commands.Sql.Test/packages.config b/src/ResourceManager/Sql/Commands.Sql.Test/packages.config index ef62fa673ae9..b2879cb9da8f 100644 --- a/src/ResourceManager/Sql/Commands.Sql.Test/packages.config +++ b/src/ResourceManager/Sql/Commands.Sql.Test/packages.config @@ -7,7 +7,7 @@ - + diff --git a/src/ResourceManager/Sql/Commands.Sql/Commands.Sql.csproj b/src/ResourceManager/Sql/Commands.Sql/Commands.Sql.csproj index a5ed86ef9b5f..394e47a8b9ce 100644 --- a/src/ResourceManager/Sql/Commands.Sql/Commands.Sql.csproj +++ b/src/ResourceManager/Sql/Commands.Sql/Commands.Sql.csproj @@ -93,6 +93,14 @@ + + + + + + + + @@ -131,6 +139,9 @@ + + Always + @@ -217,10 +228,6 @@ ..\..\..\packages\Microsoft.Azure.Common.Authentication.1.1.3-preview\lib\net45\Microsoft.Azure.Common.Authentication.dll True - - ..\..\..\packages\Microsoft.Azure.Management.Sql.0.36.0-prerelease\lib\net40\Microsoft.Azure.Management.Sql.dll - False - False ..\..\..\packages\Microsoft.Azure.Common.2.1.0\lib\net45\Microsoft.Azure.Common.dll @@ -229,6 +236,10 @@ False ..\..\..\packages\Microsoft.Azure.Common.2.1.0\lib\net45\Microsoft.Azure.Common.NetFramework.dll + + ..\..\..\packages\Microsoft.Azure.Management.Sql.0.37.0-prerelease\lib\net40\Microsoft.Azure.Management.Sql.dll + False + ..\..\..\packages\Microsoft.Azure.Management.Storage.2.4.0-preview\lib\net40\Microsoft.Azure.Management.Storage.dll diff --git a/src/ResourceManager/Sql/Commands.Sql/FirewallRule/Services/AzureSqlServerFirewallRuleAdapter.cs b/src/ResourceManager/Sql/Commands.Sql/FirewallRule/Services/AzureSqlServerFirewallRuleAdapter.cs index e6bc6245980d..7afceaa33737 100644 --- a/src/ResourceManager/Sql/Commands.Sql/FirewallRule/Services/AzureSqlServerFirewallRuleAdapter.cs +++ b/src/ResourceManager/Sql/Commands.Sql/FirewallRule/Services/AzureSqlServerFirewallRuleAdapter.cs @@ -12,15 +12,12 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using System; using System.Collections.Generic; using System.Linq; -using Microsoft.Azure.Commands.Sql.Common; using Microsoft.Azure.Commands.Sql.FirewallRule.Model; using Microsoft.Azure.Commands.Sql.FirewallRule.Services; using Microsoft.Azure.Commands.Sql.Services; using Microsoft.Azure.Common.Authentication.Models; -using Microsoft.Azure.Management.Sql; using Microsoft.Azure.Management.Sql.Models; namespace Microsoft.Azure.Commands.Sql.FirewallRule.Adapter diff --git a/src/ResourceManager/Sql/Commands.Sql/FirewallRule/Services/AzureSqlServerFirewallRuleCommunicator.cs b/src/ResourceManager/Sql/Commands.Sql/FirewallRule/Services/AzureSqlServerFirewallRuleCommunicator.cs index 613a7c7e16b8..4a8b1c86b7b8 100644 --- a/src/ResourceManager/Sql/Commands.Sql/FirewallRule/Services/AzureSqlServerFirewallRuleCommunicator.cs +++ b/src/ResourceManager/Sql/Commands.Sql/FirewallRule/Services/AzureSqlServerFirewallRuleCommunicator.cs @@ -12,15 +12,13 @@ // limitations under the License. // ---------------------------------------------------------------------------------- +using System; +using System.Collections.Generic; +using Microsoft.Azure.Commands.Sql.Common; using Microsoft.Azure.Common.Authentication; using Microsoft.Azure.Common.Authentication.Models; -using Microsoft.Azure.Management.Resources; using Microsoft.Azure.Management.Sql; using Microsoft.Azure.Management.Sql.Models; -using Microsoft.WindowsAzure.Management.Storage; -using System; -using System.Collections.Generic; -using Microsoft.Azure.Commands.Sql.Common; namespace Microsoft.Azure.Commands.Sql.FirewallRule.Services { diff --git a/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Cmdlet/GetAzureSqlCapability.cs b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Cmdlet/GetAzureSqlCapability.cs new file mode 100644 index 000000000000..98f63b5dfb1a --- /dev/null +++ b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Cmdlet/GetAzureSqlCapability.cs @@ -0,0 +1,313 @@ +// ---------------------------------------------------------------------------------- +// +// 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.Management.Automation; +using Microsoft.Azure.Commands.Sql.Location_Capabilities.Model; +using Microsoft.Azure.Commands.Sql.Location_Capabilities.Services; +using Microsoft.WindowsAzure.Commands.Utilities.Common; +using System.Linq; +using System.Text; + +namespace Microsoft.Azure.Commands.Sql.Location_Capabilities.Cmdlet +{ + /// + /// Defines the Get-AzureSqlCapability cmdlet + /// + [Cmdlet(VerbsCommon.Get, "AzureSqlCapability", + ConfirmImpact = ConfirmImpact.None, + DefaultParameterSetName = _filtered)] + public class GetAzureSqlCapability : AzurePSCmdlet + { + /// + /// Parameter set name for when the cmdlet is invoked without specifying -Default + /// + private const string _filtered = "FilterResults"; + + /// + /// Parameter set name for when the cmdlet is invoked with the -Default switch specified + /// + private const string _default = "DefaultResults"; + + /// + /// Gets or sets the name of the Location + /// + [Parameter(Mandatory = true, + ValueFromPipelineByPropertyName = true, + Position = 0, + HelpMessage = "The name of the Location for which to get the capabilities")] + [ValidateNotNullOrEmpty] + public string LocationName { get; set; } + + /// + /// Gets or sets the name of the server version + /// + [Parameter(Mandatory = false, + ValueFromPipelineByPropertyName = true, + HelpMessage = "The name of the server version for which to get the capabilities", + ParameterSetName = _filtered)] + [ValidateNotNullOrEmpty] + public string ServerVersionName { get; set; } + + /// + /// Gets or sets the name of the database edition + /// + [Parameter(Mandatory = false, + ValueFromPipelineByPropertyName = true, + HelpMessage = "The name of the database edition for which to get the capabilities", + ParameterSetName = _filtered)] + [ValidateNotNullOrEmpty] + public string EditionName { get; set; } + + /// + /// Gets or sets the name of the edition service level objective + /// + [Parameter(Mandatory = false, + ValueFromPipelineByPropertyName = true, + HelpMessage = "The name of the edition Service Objective for which to get the capabilities", + ParameterSetName = _filtered)] + [ValidateNotNullOrEmpty] + public string ServiceObjectiveName { get; set; } + + [Parameter(Mandatory = false, + HelpMessage = "Indicates that the results should be filtered such that only defaults are shown", + ParameterSetName = _default)] + public SwitchParameter Defaults { get; set; } + + /// + /// Executes the cmdlet + /// + public override void ExecuteCmdlet() + { + AzureSqlCapabilitiesAdapter adapter = new AzureSqlCapabilitiesAdapter(Profile, Profile.Context.Subscription); + LocationCapabilityModel model = adapter.GetLocationCapabilities(LocationName); + int depth = 0; + + switch(ParameterSetName) + { + case _default: + { + FilterByDefaults(model); + depth = 3; + } + break; + case _filtered: + { + if (this.MyInvocation.BoundParameters.ContainsKey("ServerVersionName")) + { + FilterByServerVersion(model); + depth = 1; + } + if (this.MyInvocation.BoundParameters.ContainsKey("EditionName")) + { + FilterByEditionName(model); + depth = 2; + } + if (this.MyInvocation.BoundParameters.ContainsKey("ServiceObjectiveName")) + { + FilterByServiceObjectiveName(model); + depth = 3; + } + } + break; + } + + if(depth > 0) + { + model.ExpandedDetails = CreateExpandedDetails(model, depth); + } + + this.WriteObject(model, true); + } + + /// + /// Given a constructs a formatted string of its expanded details to the desired depth. + /// + /// The model details + /// The depth to expand to + /// The formatted string containing the model details + private string CreateExpandedDetails(LocationCapabilityModel model, int depth) + { + StringBuilder builder = new StringBuilder(); + + foreach(var version in model.SupportedServerVersions) + { + string versionInfo = GetVersionInformation(version); + + if(depth > 1) + { + ExpandEdition(depth, builder, version, versionInfo); + } + else + { + builder.AppendLine(versionInfo); + } + } + + return builder.ToString(); + } + + /// + /// Formats all the supported editions in as strings prefixed with + /// and appends them to the + /// + /// How deep to expand the information + /// The string builder to append the information + /// The version object to expand and format + /// The prefix to apply to the information strings + private void ExpandEdition(int depth, StringBuilder builder, ServerVersionCapabilityModel version, string prefix) + { + foreach (var edition in version.SupportedEditions) + { + string editionInfo = GetEditionInformation(prefix, edition); + + if (depth > 2) + { + ExpandServiceObjective(builder, edition, editionInfo); + } + else + { + builder.AppendLine(editionInfo); + } + } + } + + /// + /// Formats all the supported service objectives in as strings prefixed with + /// and appends them to the + /// + /// The string building to add the formatted string to + /// The edition containing the supported service objectives + /// The prefix for the formatted string + private void ExpandServiceObjective(StringBuilder builder, EditionCapabilityModel edition, string prefix) + { + foreach (var slo in edition.SupportedServiceObjectives) + { + string serviceObjectiveInfo = GetServiceObjectiveInformation(prefix, slo); + + builder.AppendLine(serviceObjectiveInfo); + } + } + + /// + /// Gets the string formatting of the server version object + /// + /// The server version information to format as a string + /// The formatted string containing the server version information + private string GetVersionInformation(ServerVersionCapabilityModel version) + { + return string.Format("Version: {0} ({1})", version.ServerVersionName, version.Status); + } + + /// + /// Gets the string formatting of the edition object + /// + /// The prefix before the edition information + /// The edition information to format and append to the end of the baseString + /// The formatted string containing the edition information + private string GetEditionInformation(string baseString, EditionCapabilityModel edition) + { + return string.Format("{0} -> Edition: {1} ({2})", baseString, edition.EditionName, edition.Status); + } + + /// + /// Gets the string formatting of the service objective object + /// + /// The prefix before the service objective information + /// The service objective information to append + /// The formatted string containing the service objective information + private string GetServiceObjectiveInformation(string baseString, ServiceObjectiveCapabilityModel objective) + { + return string.Format("{0} -> Service Objective: {1} ({2})", baseString, objective.ServiceObjectiveName, objective.Status); + } + + /// + /// Filter the results based on what is marked as status + /// + /// The model to filter + private void FilterByDefaults(LocationCapabilityModel model) + { + model.SupportedServerVersions = model.SupportedServerVersions.Where(v => { return v.Status == "Default"; }).ToList(); + + // Get all defaults + var defaultVersion = model.SupportedServerVersions; + defaultVersion[0].SupportedEditions = defaultVersion[0].SupportedEditions.Where(v => { return v.Status == "Default"; }).ToList(); + var defaultEdition = defaultVersion[0].SupportedEditions; + defaultEdition[0].SupportedServiceObjectives = defaultEdition[0].SupportedServiceObjectives.Where(v => { return v.Status == "Default"; }).ToList(); + var defaultServiceObjective = defaultEdition[0].SupportedServiceObjectives; + + // Assign defaults back to model. + defaultServiceObjective[0].SupportedMaxSizes = defaultServiceObjective[0].SupportedMaxSizes.Where(v => { return v.Status == "Default"; }).ToList(); + defaultEdition[0].SupportedServiceObjectives = defaultServiceObjective; + defaultVersion[0].SupportedEditions = defaultEdition; + model.SupportedServerVersions = defaultVersion; + } + + /// + /// Filter the results based on the Service Objective Name + /// + /// The model to filter + private void FilterByServiceObjectiveName(LocationCapabilityModel model) + { + foreach (var version in model.SupportedServerVersions) + { + foreach (var edition in version.SupportedEditions) + { + // Remove all service objectives with a name that does not match the desired value + edition.SupportedServiceObjectives = + edition.SupportedServiceObjectives + .Where(slo => { return slo.ServiceObjectiveName == this.ServiceObjectiveName; }) + .ToList(); + } + + // Remove editions that have no supported service objectives after filtering + version.SupportedEditions = version.SupportedEditions.Where(e => e.SupportedServiceObjectives.Count > 0).ToList(); + } + + // Remove server versions that have no supported editions after filtering + model.SupportedServerVersions = model.SupportedServerVersions.Where(v => v.SupportedEditions.Count > 0).ToList(); + } + + /// + /// Filter the results based on the Edition Name + /// + /// The model to filter + private void FilterByEditionName(LocationCapabilityModel model) + { + foreach(var version in model.SupportedServerVersions) + { + // Remove all editions that do not match the desired edition name + version.SupportedEditions = + version.SupportedEditions + .Where(e => { return e.EditionName == this.EditionName; }) + .ToList(); + } + + // Remove server versions that have no supported editions after filtering + model.SupportedServerVersions = model.SupportedServerVersions.Where(v => v.SupportedEditions.Count > 0).ToList(); + } + + /// + /// Filter the results based on the server version name + /// + /// The model to filter + private void FilterByServerVersion(LocationCapabilityModel model) + { + // Remove all server versions that don't match the desired name + model.SupportedServerVersions = + model.SupportedServerVersions + .Where(obj => { return obj.ServerVersionName == this.ServerVersionName; }) + .ToList(); + } + } +} diff --git a/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Model/EditionCapabilityModel.cs b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Model/EditionCapabilityModel.cs new file mode 100644 index 000000000000..0c075896b134 --- /dev/null +++ b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Model/EditionCapabilityModel.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.Collections.Generic; + +namespace Microsoft.Azure.Commands.Sql.Location_Capabilities.Model +{ + /// + /// Represents an Edition for an Azure SQL Database and its capabilities + /// + public class EditionCapabilityModel + { + /// + /// Gets or sets the name of the Edition + /// + public string EditionName { get; set; } + + /// + /// Gets or sets the status of the Edition with respect to Azure SQL Server version for the current subscription + /// + public string Status { get; set; } + + /// + /// Gets or sets the list of supported Service Objectives and their capabilities. + /// + public IList SupportedServiceObjectives { get; set; } + } +} diff --git a/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Model/LocationCapabilityModel.cs b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Model/LocationCapabilityModel.cs new file mode 100644 index 000000000000..72b89198c76d --- /dev/null +++ b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Model/LocationCapabilityModel.cs @@ -0,0 +1,44 @@ +// ---------------------------------------------------------------------------------- +// +// 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; + +namespace Microsoft.Azure.Commands.Sql.Location_Capabilities.Model +{ + /// + /// Represents the capabilities available in a region + /// + public class LocationCapabilityModel + { + /// + /// Gets or sets the name of the region + /// + public string LocationName { get; set; } + + /// + /// Gets or sets the status of the region with respect to Azure SQL for the current subscription + /// + public string Status { get; set; } + + /// + /// Gets or sets a list of all the supported server versions and their capabilities + /// + public IList SupportedServerVersions { get; set; } + + /// + /// Gets or sets a formatted string containing the expanded details of the model + /// + public string ExpandedDetails { get; set; } + } +} diff --git a/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Model/MaxSizeCapabilityModel.cs b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Model/MaxSizeCapabilityModel.cs new file mode 100644 index 000000000000..e606253e0fa8 --- /dev/null +++ b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Model/MaxSizeCapabilityModel.cs @@ -0,0 +1,36 @@ +// +// 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.Sql.Location_Capabilities.Model +{ + /// + /// Represents a supported Azure SQL Database Maximum size + /// + public class MaxSizeCapabilityModel + { + /// + /// Gets or sets the max size limit + /// + public int Limit { get; set; } + + /// + /// Gets or sets the units for the max size limit + /// + public string Unit { get; set; } + + /// + /// Gets or sets the status for this max size for the given: Subscription, Server Version, Edition, Service Level Objective combination. + /// + public string Status { get; set; } + } +} diff --git a/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Model/ServerVersionCapabilityModel.cs b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Model/ServerVersionCapabilityModel.cs new file mode 100644 index 000000000000..eedf012e77e7 --- /dev/null +++ b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Model/ServerVersionCapabilityModel.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.Collections.Generic; + +namespace Microsoft.Azure.Commands.Sql.Location_Capabilities.Model +{ + /// + /// Represents the capabilities of a server version + /// + public class ServerVersionCapabilityModel + { + /// + /// Gets or sets the name of the Server Version + /// + public string ServerVersionName { get; set; } + + /// + /// Gets or sets the status of the Azure SQL Server Version with respect to the current subscription + /// + public string Status { get; set; } + + /// + /// Gets or sets the list of supported datababase Editions and their capabilities + /// + public IList SupportedEditions { get; set; } + } +} diff --git a/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Model/ServiceObjectiveCapabilityModel.cs b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Model/ServiceObjectiveCapabilityModel.cs new file mode 100644 index 000000000000..a25d2bbdfbd8 --- /dev/null +++ b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Model/ServiceObjectiveCapabilityModel.cs @@ -0,0 +1,44 @@ +// +// 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.Sql.Location_Capabilities.Model +{ + /// + /// Represents a Service Level Objective and its capabilities + /// + public class ServiceObjectiveCapabilityModel + { + /// + /// Gets or sets the name of the Service Level Objective + /// + public string ServiceObjectiveName { get; set; } + + /// + /// Gets or sets the status of the Service Level Objective for the given: Subscription, Server Version, Database Edition combination. + /// + public string Status { get; set; } + + /// + /// Gets or sets the unique ID of the Service Level Objecive + /// + public Guid Id { get; set; } + + /// + /// Gets or sets the list of supported max sizes and their capabilities + /// + public IList SupportedMaxSizes { get; internal set; } + } +} diff --git a/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Services/AzureSqlCapabilitiesAdapter.cs b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Services/AzureSqlCapabilitiesAdapter.cs new file mode 100644 index 000000000000..d40b064582f1 --- /dev/null +++ b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Services/AzureSqlCapabilitiesAdapter.cs @@ -0,0 +1,132 @@ +// +// 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; +using Microsoft.Azure.Commands.Sql.Location_Capabilities.Model; +using Microsoft.Azure.Commands.Sql.Services; +using Microsoft.Azure.Common.Authentication.Models; + +namespace Microsoft.Azure.Commands.Sql.Location_Capabilities.Services +{ + public class AzureSqlCapabilitiesAdapter + { + /// + /// The communicator for interacting with the service APIs + /// + private AzureSqlCapabilitiesCommunicator _communicator; + + /// + /// Gets or sets the Azure profile + /// + public AzureProfile Profile { get; set; } + + /// + /// Constructs a firewall rule adapter + /// + /// The current azure profile + /// The current azure subscription + public AzureSqlCapabilitiesAdapter(AzureProfile profile, AzureSubscription subscription) + { + Profile = profile; + _communicator = new AzureSqlCapabilitiesCommunicator(Profile, subscription); + } + + /// + /// Gets the capabilities for the specified location + /// + /// The name of the location for which to get the capabilities + /// + public LocationCapabilityModel GetLocationCapabilities(string locationName) + { + var resp = _communicator.Get(locationName, Util.GenerateTracingId()); + return CreateLocationCapabilityModel(resp); + } + + /// + /// Converts from an API object to a PowerShell object + /// + /// The object to transform + /// The converted location capability model + private LocationCapabilityModel CreateLocationCapabilityModel(Management.Sql.Models.LocationCapability resp) + { + LocationCapabilityModel model = new LocationCapabilityModel(); + model.LocationName = resp.Name; + model.Status = resp.Status; + model.SupportedServerVersions = resp.SupportedServerVersions.Select(v => { return CreateSupportedVersionsModel(v); }).ToList(); + return model; + } + + /// + /// Converts from an API object to a PowerShell object + /// + /// The object to transform + /// The converted server version capability model + private ServerVersionCapabilityModel CreateSupportedVersionsModel(Management.Sql.Models.ServerVersionCapability v) + { + ServerVersionCapabilityModel version = new ServerVersionCapabilityModel(); + version.ServerVersionName = v.Name; + version.Status = v.Status; + version.SupportedEditions = v.SupportedEditions.Select(e => { return CreateSupportedEditionModel(e); }).ToList(); + return version; + } + + /// + /// Converts from an API object to a PowerShell object + /// + /// The object to transform + /// The converted database edition capability model + private EditionCapabilityModel CreateSupportedEditionModel(Management.Sql.Models.EditionCapability e) + { + EditionCapabilityModel edition = new EditionCapabilityModel(); + edition.EditionName = e.Name; + edition.Status = e.Status; + edition.SupportedServiceObjectives = e.SupportedServiceObjectives.Select(slo => { return CreateSupportedSLOModel(slo); }).ToList(); + return edition; + } + + /// + /// Converts from an API object to a PowerShell object + /// + /// The object to transform + /// The converted edition Service Level Objective capability model + private ServiceObjectiveCapabilityModel CreateSupportedSLOModel(Management.Sql.Models.ServiceObjectiveCapability s) + { + ServiceObjectiveCapabilityModel slo = new ServiceObjectiveCapabilityModel(); + + slo.Id = s.Id; + slo.ServiceObjectiveName = s.Name; + slo.Status = s.Status; + slo.SupportedMaxSizes = s.SupportedMaxSizes.Select(m => { return CreateSupportedMaxSizeModel(m); }).ToList(); + + return slo; + } + + /// + /// Converts from an API object to a PowerShell object + /// + /// The object to transform + /// The converted database max size capability model + private MaxSizeCapabilityModel CreateSupportedMaxSizeModel(Management.Sql.Models.MaxSizeCapability m) + { + MaxSizeCapabilityModel maxSize = new MaxSizeCapabilityModel(); + + maxSize.Limit = m.Limit; + maxSize.Status = m.Status; + maxSize.Unit = m.Unit; + + return maxSize; + } + } +} diff --git a/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Services/AzureSqlCapabilitiesCommunicator.cs b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Services/AzureSqlCapabilitiesCommunicator.cs new file mode 100644 index 000000000000..3c9a6309a69e --- /dev/null +++ b/src/ResourceManager/Sql/Commands.Sql/Location Capabilities/Services/AzureSqlCapabilitiesCommunicator.cs @@ -0,0 +1,88 @@ +// +// 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.Sql.Common; +using Microsoft.Azure.Common.Authentication; +using Microsoft.Azure.Common.Authentication.Models; +using Microsoft.Azure.Management.Sql; +using Microsoft.Azure.Management.Sql.Models; + +namespace Microsoft.Azure.Commands.Sql.Location_Capabilities.Services +{ + /// + /// Communicator class for communicating between APIs and powershell cmdlet + /// + public class AzureSqlCapabilitiesCommunicator + { + /// + /// The SQL Management Client to be used by the communicator + /// + private static SqlManagementClient SqlClient { get; set; } + + /// + /// Gets or set the Azure subscription + /// + private static AzureSubscription Subscription { get; set; } + + /// + /// Gets or sets the Azure profile + /// + public AzureProfile Profile { get; set; } + + /// + /// Creates a communicator for Azure Sql Databases FirewallRules + /// + /// + /// + public AzureSqlCapabilitiesCommunicator(AzureProfile profile, AzureSubscription subscription) + { + Profile = profile; + if (subscription != Subscription) + { + Subscription = subscription; + SqlClient = null; + } + } + + /// + /// Gets the Location Capabilities for the specified region for the current subscription. + /// + /// The name of the region for which to get the location capabilities + /// The client request ID to use + /// The location capabilities for the region + public LocationCapability Get(string locationName, string clientRequestId) + { + return GetCurrentSqlClient(clientRequestId).Capabilities.Get(locationName).Capabilities; + } + + /// + /// Retrieve the SQL Management client for the currently selected subscription, adding the session and request + /// id tracing headers for the current cmdlet invocation. + /// + /// The SQL Management client for the currently selected subscription. + private SqlManagementClient GetCurrentSqlClient(String clientRequestId) + { + // Get the SQL management client for the current subscription + if (SqlClient == null) + { + SqlClient = AzureSession.ClientFactory.CreateClient(Profile, Subscription, AzureEnvironment.Endpoint.ResourceManager); + } + + SqlClient.HttpClient.DefaultRequestHeaders.Remove(Constants.ClientRequestIdHeaderName); + SqlClient.HttpClient.DefaultRequestHeaders.Add(Constants.ClientRequestIdHeaderName, clientRequestId); + + return SqlClient; + } + } +} diff --git a/src/ResourceManager/Sql/Commands.Sql/Microsoft.Azure.Commands.Sql.format.ps1xml b/src/ResourceManager/Sql/Commands.Sql/Microsoft.Azure.Commands.Sql.format.ps1xml new file mode 100644 index 000000000000..0429996f5b82 --- /dev/null +++ b/src/ResourceManager/Sql/Commands.Sql/Microsoft.Azure.Commands.Sql.format.ps1xml @@ -0,0 +1,41 @@ + + + + + Microsoft.Azure.Commands.Sql.Location_Capabilities.Model.LocationCapabilityModel + + Microsoft.Azure.Commands.Sql.Location_Capabilities.Model.LocationCapabilityModel + + + + + + + + LocationName + + + + Status + + + + ExpandedDetails + + ExpandedDetails + + + + + SupportedServerVersions + + $_.ExpandedDetails -eq $null + + + + + + + + + diff --git a/src/ResourceManager/Sql/Commands.Sql/packages.config b/src/ResourceManager/Sql/Commands.Sql/packages.config index 921846e9d034..97c8df2ae80d 100644 --- a/src/ResourceManager/Sql/Commands.Sql/packages.config +++ b/src/ResourceManager/Sql/Commands.Sql/packages.config @@ -5,7 +5,7 @@ - +