diff --git a/azure-mgmt-batch/src/test/java/com/microsoft/azure/management/batch/BatchAccountOperationsTests.java b/azure-mgmt-batch/src/test/java/com/microsoft/azure/management/batch/BatchAccountOperationsTests.java index 671eca66c529..a0e182d9943d 100644 --- a/azure-mgmt-batch/src/test/java/com/microsoft/azure/management/batch/BatchAccountOperationsTests.java +++ b/azure-mgmt-batch/src/test/java/com/microsoft/azure/management/batch/BatchAccountOperationsTests.java @@ -165,13 +165,9 @@ public void canCRUDBatchAccount() throws Exception { .parent() .apply(); batchManager.batchAccounts().deleteByGroup(batchAccount.resourceGroupName(), batchAccount.name()); - try { - batchManager.batchAccounts().getById(batchAccount.id()); - Assert.assertTrue(false); - } - catch (CloudException exception) { - Assert.assertEquals(exception.getResponse().code(), 404); - } + + batchAccount = batchManager.batchAccounts().getById(batchAccount.id()); + Assert.assertNull(batchAccount); } @Test @@ -217,12 +213,7 @@ public void canCreateBatchAccountWithApplication() throws Exception { Assert.assertEquals(application.updatesAllowed(), allowUpdates); batchManager.batchAccounts().deleteByGroup(batchAccount.resourceGroupName(), batchAccount.name()); - try { - batchManager.batchAccounts().getById(batchAccount.id()); - Assert.assertTrue(false); - } - catch (CloudException exception) { - Assert.assertEquals(exception.getResponse().code(), 404); - } + batchAccount = batchManager.batchAccounts().getById(batchAccount.id()); + Assert.assertNull(batchAccount); } } diff --git a/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/collection/SupportsDeletingByParent.java b/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/collection/SupportsDeletingByParent.java index cb52ba0cd933..67ba3ead618b 100644 --- a/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/collection/SupportsDeletingByParent.java +++ b/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/collection/SupportsDeletingByParent.java @@ -13,11 +13,9 @@ /** * Provides access to getting a specific Azure resource based on its resource group and parent. - * - * @param the type of the resource collection */ @LangDefinition(ContainerName = "CollectionActions", CreateAsyncMethods = true, MethodConversionType = LangDefinition.MethodConversion.OnlyMethod) -public interface SupportsDeletingByParent { +public interface SupportsDeletingByParent { /** * Deletes a resource from Azure, identifying it by its name and its resource group. * diff --git a/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/collection/implementation/IndependentChildResourcesImpl.java b/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/collection/implementation/IndependentChildResourcesImpl.java index bd9a55eff244..b4207a553284 100644 --- a/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/collection/implementation/IndependentChildResourcesImpl.java +++ b/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/collection/implementation/IndependentChildResourcesImpl.java @@ -41,7 +41,7 @@ public abstract class IndependentChildResourcesImpl< SupportsGettingById, SupportsGettingByParent, SupportsListingByParent, - SupportsDeletingByParent { + SupportsDeletingByParent { protected final InnerCollectionT innerCollection; protected final ManagerT manager; @@ -67,8 +67,6 @@ public PagedList listByParent(GroupableResource parentResource) { return listByParent(parentResource.resourceGroupName(), parentResource.name()); } - - @Override public void deleteByParent(String groupName, String parentName, String name) { deleteByParentAsync(groupName, parentName, name).toBlocking().subscribe(); diff --git a/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/collection/implementation/IndependentChildrenImpl.java b/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/collection/implementation/IndependentChildrenImpl.java index 5ed3f1190eee..8b9341ed5be1 100644 --- a/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/collection/implementation/IndependentChildrenImpl.java +++ b/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/collection/implementation/IndependentChildrenImpl.java @@ -43,7 +43,7 @@ public abstract class IndependentChildrenImpl< SupportsGettingByParent, SupportsListingByParent, SupportsDeletingById, - SupportsDeletingByParent { + SupportsDeletingByParent { protected final InnerCollectionT innerCollection; protected final ManagerT manager; diff --git a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlDatabases.java b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlDatabases.java index c49ee35d0423..b2a51c94b27f 100644 --- a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlDatabases.java +++ b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlDatabases.java @@ -24,7 +24,7 @@ public interface SqlDatabases extends SupportsDeletingById, SupportsGettingById, SupportsBatchCreation, - SupportsDeletingByParent { + SupportsDeletingByParent { /** * Gets the SQLDatabase based on the resource group name, SQLServer name and SQLDatabase name. diff --git a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlElasticPools.java b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlElasticPools.java index b790a7271e4d..cf08999cd825 100644 --- a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlElasticPools.java +++ b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlElasticPools.java @@ -24,7 +24,7 @@ public interface SqlElasticPools extends SupportsDeletingById, SupportsGettingById, SupportsBatchCreation, - SupportsDeletingByParent { + SupportsDeletingByParent { /** * Gets the SQLElasticPool based on the resource group name, SQLServer name and SQLElasticPool name. diff --git a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlFirewallRule.java b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlFirewallRule.java index a60f1a897337..1f4e2ee67d7f 100644 --- a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlFirewallRule.java +++ b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlFirewallRule.java @@ -41,11 +41,13 @@ public interface SqlFirewallRule extends /** * Container interface for all the definitions that need to be implemented. + * @param The final stage for which return creatable for FirewallRule */ - interface Definition extends - SqlFirewallRule.DefinitionStages.Blank, - SqlFirewallRule.DefinitionStages.WithStartIpAddress, - SqlFirewallRule.DefinitionStages.WithEndIpAddress, + interface Definition extends + SqlFirewallRule.DefinitionStages.Blank, + SqlFirewallRule.DefinitionStages.WithStartIpAddress, + SqlFirewallRule.DefinitionStages.WithEndIpAddress, + SqlFirewallRule.DefinitionStages.Parentable, SqlFirewallRule.DefinitionStages.WithCreate { } @@ -55,34 +57,37 @@ interface Definition extends interface DefinitionStages { /** * The first stage of the SQL Server definition. + * @param The final stage for which return creatable for FirewallRule */ - interface Blank extends SqlFirewallRule.DefinitionStages.WithStartIpAddress { + interface Blank extends SqlFirewallRule.DefinitionStages.WithStartIpAddress { } /** * The SQL Firewall Rule definition to set the starting IP Address for the server. + * @param The final stage for which return creatable for FirewallRule */ - interface WithStartIpAddress { + interface WithStartIpAddress { /** * Sets the starting IP address of SQL server's firewall rule. * * @param startIpAddress start IP address in IPv4 format. * @return The next stage of definition. */ - SqlFirewallRule.DefinitionStages.WithEndIpAddress withStartIpAddress(String startIpAddress); + SqlFirewallRule.DefinitionStages.WithEndIpAddress withStartIpAddress(String startIpAddress); } /** * The SQL Firewall Rule definition to set the starting IP Address for the server. + * @param The final stage for which return creatable for FirewallRule */ - interface WithEndIpAddress { + interface WithEndIpAddress { /** * Sets the ending IP address of SQL server's firewall rule. * * @param endIpAddress end IP address in IPv4 format. * @return The next stage of definition. */ - SqlFirewallRule.DefinitionStages.WithCreate withEndIpAddress(String endIpAddress); + CreateStageT withEndIpAddress(String endIpAddress); } /** @@ -119,9 +124,17 @@ interface WithSqlServer { * SQL Server in the cloud, but exposing additional optional inputs to * specify. */ - interface WithCreate extends + interface Parentable extends SqlFirewallRule.DefinitionStages.WithSqlServer { } + + /** + * A SQL Server definition with sufficient inputs to create a new + * SQL Server in the cloud, but exposing additional optional inputs to + * specify. + */ + interface WithCreate extends Creatable { + } } /** diff --git a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlFirewallRules.java b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlFirewallRules.java index 5c66f705862a..32e5d3a330fe 100644 --- a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlFirewallRules.java +++ b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlFirewallRules.java @@ -11,7 +11,6 @@ import com.microsoft.azure.management.resources.fluentcore.arm.collection.SupportsDeletingByParent; import com.microsoft.azure.management.resources.fluentcore.arm.collection.SupportsGettingById; import com.microsoft.azure.management.resources.fluentcore.arm.models.GroupableResource; -import com.microsoft.azure.management.resources.fluentcore.collection.SupportsCreating; import com.microsoft.azure.management.resources.fluentcore.collection.SupportsDeletingById; /** @@ -19,10 +18,9 @@ */ @Fluent public interface SqlFirewallRules extends - SupportsCreating, SupportsDeletingById, SupportsGettingById, - SupportsDeletingByParent { + SupportsDeletingByParent { /** * Gets the SQLDatabase based on the resource group name, SQLServer name and FirewallRule name. @@ -59,4 +57,20 @@ public interface SqlFirewallRules extends * @return the list of SQLDatabases in a SQLServer */ PagedList listBySqlServer(GroupableResource sqlServer); + + /** + * Entry point to SQL FirewallRule management API, which already have the SQLServer specified. + */ + interface SqlFirewallRulesCreatable extends SqlFirewallRules { + SqlFirewallRule.DefinitionStages.Blank definedWithSqlServer(String resourceGroupName, String sqlServerName, String firewallRuleName); + } + + /** + * Entry point to SQL FirewallRule management API, which does not have SqlServer specified yet. + */ + interface SqlFirewallRulesParentable extends SqlFirewallRules { + SqlFirewallRule.DefinitionStages.Blank define(String firewallRuleName); + } } + + diff --git a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlServer.java b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlServer.java index f5ce915f2963..f1f4e103a380 100644 --- a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlServer.java +++ b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/SqlServer.java @@ -6,6 +6,7 @@ package com.microsoft.azure.management.sql; +import com.microsoft.azure.PagedList; import com.microsoft.azure.management.apigeneration.Fluent; import com.microsoft.azure.management.resources.fluentcore.arm.models.GroupableResource; import com.microsoft.azure.management.resources.fluentcore.model.Appliable; @@ -42,7 +43,45 @@ public interface SqlServer extends */ String adminLogin(); + /** + * @return returns entry point to manage FirewallRules in SqlServer. + */ + FirewallRules firewallRules(); + + /** + * Entry point to access FirewallRules from the SQL Server. + */ + interface FirewallRules { + /** + * Gets a particular firewall rule. + * + * @param firewallRuleName name of the firewall rule to get + * @return Returns the SqlFirewall rule with in the SQL Server + */ + SqlFirewallRule get(String firewallRuleName); + + /** + * Creates a new firewall rule in SQL Server. + * + * @param firewallRuleName name of the firewall rule to be created + * @return Returns a stage to specify arguments of the firewall rule + */ + SqlFirewallRule.DefinitionStages.Blank define(String firewallRuleName); + + /** + * Returns all the firewall rules for the server. + * + * @return list of firewall rules for the server. + */ + PagedList list(); + /** + * Delete specified firewall rule in the server. + * + * @param firewallRuleName name of the firewall rule to delete + */ + void delete(String firewallRuleName); + } /************************************************************** * Fluent interfaces to provision a SqlServer **************************************************************/ diff --git a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/FirewallRulesImpl.java b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/FirewallRulesImpl.java new file mode 100644 index 000000000000..03d7ef140d9a --- /dev/null +++ b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/FirewallRulesImpl.java @@ -0,0 +1,49 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + +package com.microsoft.azure.management.sql.implementation; + +import com.microsoft.azure.PagedList; +import com.microsoft.azure.management.sql.SqlFirewallRule; +import com.microsoft.azure.management.sql.SqlFirewallRules; +import com.microsoft.azure.management.sql.SqlServer; + +/** + * Implementation of SqlServer.FirewallRules, which enables the creating the firewall rules from the SQLServer directly. + */ +public class FirewallRulesImpl implements SqlServer.FirewallRules { + + private final String resourceGroupName; + private final String sqlServerName; + private final SqlFirewallRules.SqlFirewallRulesCreatable sqlFirewallRules; + + FirewallRulesImpl(ServersInner innerCollection, SqlServerManager manager, String resourceGroupName, String sqlServerName) { + this.resourceGroupName = resourceGroupName; + this.sqlServerName = sqlServerName; + this.sqlFirewallRules = new SqlFirewallRulesImpl(innerCollection, manager); + + } + + @Override + public SqlFirewallRule get(String firewallRuleName) { + return this.sqlFirewallRules.getBySqlServer(this.resourceGroupName, this.sqlServerName, firewallRuleName); + } + + @Override + public SqlFirewallRule.DefinitionStages.Blank define(String firewallRuleName) { + return this.sqlFirewallRules.definedWithSqlServer(this.resourceGroupName, this.sqlServerName, firewallRuleName); + } + + @Override + public PagedList list() { + return this.sqlFirewallRules.listBySqlServer(this.resourceGroupName, this.sqlServerName); + } + + @Override + public void delete(String firewallRuleName) { + this.sqlFirewallRules.deleteByParent(this.resourceGroupName, this.sqlServerName, firewallRuleName); + } +} diff --git a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlDatabasesImpl.java b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlDatabasesImpl.java index 358b3fbca43d..f590042c58e5 100644 --- a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlDatabasesImpl.java +++ b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlDatabasesImpl.java @@ -55,6 +55,10 @@ public PagedList listByParent(String resourceGroupName, String pare @Override protected SqlDatabaseImpl wrapModel(DatabaseInner inner) { + if (inner == null) { + return null; + } + return new SqlDatabaseImpl(inner.name(), inner, this.innerCollection, manager.sqlElasticPools()); } diff --git a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlElasticPoolsImpl.java b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlElasticPoolsImpl.java index 9a815404f73a..91e3c8f9a073 100644 --- a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlElasticPoolsImpl.java +++ b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlElasticPoolsImpl.java @@ -54,6 +54,10 @@ public PagedList listByParent(String resourceGroupName, String p @Override protected SqlElasticPoolImpl wrapModel(ElasticPoolInner inner) { + if (inner == null) { + return null; + } + return new SqlElasticPoolImpl(inner.name(), inner, this.innerCollection); } diff --git a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlFirewallRuleImpl.java b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlFirewallRuleImpl.java index 15804c21d927..598bb1a72ef2 100644 --- a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlFirewallRuleImpl.java +++ b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlFirewallRuleImpl.java @@ -18,15 +18,16 @@ /** * Implementation for SqlFirewallRule and its parent interfaces. + * @param The final stage for which return creatable for FirewallRule */ -public class SqlFirewallRuleImpl +public class SqlFirewallRuleImpl extends IndependentChildImpl< SqlFirewallRule, SqlServer, FirewallRuleInner, - SqlFirewallRuleImpl> + SqlFirewallRuleImpl> implements SqlFirewallRule, - SqlFirewallRule.Definition, + SqlFirewallRule.Definition, SqlFirewallRule.Update, IndependentChild.DefinitionStages.WithParentResource { private final ServersInner innerCollection; @@ -99,15 +100,15 @@ public Creatable withExistingSqlServer(SqlServer existingSqlSer } @Override - public SqlFirewallRule.DefinitionStages.WithEndIpAddress withStartIpAddress(String startIpAddress) { + public SqlFirewallRuleImpl withStartIpAddress(String startIpAddress) { this.inner().withStartIpAddress(startIpAddress); return this; } @Override - public SqlFirewallRule.DefinitionStages.WithCreate withEndIpAddress(String endIpAddress) { + public CreateStageT withEndIpAddress(String endIpAddress) { this.inner().withEndIpAddress(endIpAddress); - return this; + return (CreateStageT) this; } @Override diff --git a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlFirewallRulesImpl.java b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlFirewallRulesImpl.java index 8cbde65ebdf0..f4594a49cacf 100644 --- a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlFirewallRulesImpl.java +++ b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlFirewallRulesImpl.java @@ -28,7 +28,9 @@ public class SqlFirewallRulesImpl extends IndependentChildrenImpl< SqlServerManager> implements SqlFirewallRules, SupportsGettingByParent, - SupportsListingByParent { + SupportsListingByParent, + SqlFirewallRules.SqlFirewallRulesCreatable, + SqlFirewallRules.SqlFirewallRulesParentable { protected SqlFirewallRulesImpl(ServersInner innerCollection, SqlServerManager manager) { super(innerCollection, manager); } @@ -36,7 +38,8 @@ protected SqlFirewallRulesImpl(ServersInner innerCollection, SqlServerManager ma @Override protected SqlFirewallRuleImpl wrapModel(String name) { FirewallRuleInner inner = new FirewallRuleInner(); - return new SqlFirewallRuleImpl( + + return new SqlFirewallRuleImpl( name, inner, this.innerCollection); @@ -54,6 +57,9 @@ public PagedList listByParent(String resourceGroupName, String @Override protected SqlFirewallRuleImpl wrapModel(FirewallRuleInner inner) { + if (inner == null) { + return null; + } return new SqlFirewallRuleImpl(inner.name(), inner, this.innerCollection); } @@ -86,4 +92,14 @@ public PagedList listBySqlServer(String resourceGroupName, Stri public PagedList listBySqlServer(GroupableResource sqlServer) { return this.listByParent(sqlServer); } + + @Override + public SqlFirewallRuleImpl definedWithSqlServer(String resourceGroupName, String sqlServerName, String firewallRuleName) { + FirewallRuleInner inner = new FirewallRuleInner(); + + return new SqlFirewallRuleImpl( + firewallRuleName, + inner, + this.innerCollection).withExistingParentResource(resourceGroupName, sqlServerName); + } } diff --git a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlServerImpl.java b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlServerImpl.java index 4378e9e369b2..b4f7b2d4117b 100644 --- a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlServerImpl.java +++ b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlServerImpl.java @@ -76,6 +76,11 @@ public String adminLogin() { return this.inner().administratorLogin(); } + @Override + public FirewallRules firewallRules() { + return new FirewallRulesImpl(this.innerCollection, this.myManager, this.resourceGroupName(), this.name()); + } + @Override public SqlServerImpl withAdminUserName(String administratorUserName) { this.inner().withAdministratorLogin(administratorUserName); diff --git a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlServerManager.java b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlServerManager.java index aca393792828..ad06d94f4aff 100644 --- a/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlServerManager.java +++ b/azure-mgmt-sql/src/main/java/com/microsoft/azure/management/sql/implementation/SqlServerManager.java @@ -23,7 +23,7 @@ public class SqlServerManager extends Manager listByGroup(String resourceGroupName) { @Override protected SqlServerImpl wrapModel(ServerInner inner) { + if (inner == null) { + return null; + } + return new SqlServerImpl( inner.name(), inner, diff --git a/azure-mgmt-sql/src/test/java/com/microsoft/azure/management/sql/SqlServerOperationsTests.java b/azure-mgmt-sql/src/test/java/com/microsoft/azure/management/sql/SqlServerOperationsTests.java index be0d2582127a..0d296002ab22 100644 --- a/azure-mgmt-sql/src/test/java/com/microsoft/azure/management/sql/SqlServerOperationsTests.java +++ b/azure-mgmt-sql/src/test/java/com/microsoft/azure/management/sql/SqlServerOperationsTests.java @@ -18,8 +18,8 @@ import java.util.List; public class SqlServerOperationsTests extends SqlServerTestBase { - private static final String RG_NAME = "javasqlserver1239"; - private static final String SQL_SERVER_NAME = "javasqlserver1239"; + private static final String RG_NAME = "javasqlserver1235"; + private static final String SQL_SERVER_NAME = "javasqlserver1235"; private static final String SQL_DATABASE_NAME = "myTestDatabase2"; private static final String COLLATION = "SQL_Latin1_General_CP1_CI_AS"; private static final String SQL_ELASTIC_POOL_NAME = "testElasticPool"; @@ -226,7 +226,6 @@ public void canCRUDSqlElasticPool() throws Exception { validateSqlServerNotFound(sqlServer); } - @Test public void canCRUDSqlFirewallRule() throws Exception { // Create @@ -245,16 +244,27 @@ public void canCRUDSqlFirewallRule() throws Exception { .withNewSqlServer(sqlServerCreatable) .createAsync().toBlocking().first(); - validateSqlFirewallRule(sqlFirewallRule); - validateSqlFirewallRule(sqlServerManager.sqlFirewallRules().getBySqlServer(RG_NAME, SQL_SERVER_NAME, SQL_FIREWALLRULE_NAME)); + validateSqlFirewallRule(sqlFirewallRule, SQL_FIREWALLRULE_NAME); + validateSqlFirewallRule(sqlServerManager.sqlFirewallRules().getBySqlServer(RG_NAME, SQL_SERVER_NAME, SQL_FIREWALLRULE_NAME), SQL_FIREWALLRULE_NAME); SqlServer sqlServer = sqlServerManager.sqlServers().getByGroup(RG_NAME, SQL_SERVER_NAME); validateSqlServer(sqlServer); + String secondFirewallRuleName = "secondFireWallRule"; + SqlFirewallRule secondFirewallRule = sqlServer.firewallRules() + .define(secondFirewallRuleName) + .withStartIpAddress(START_IPADDRESS) + .withEndIpAddress(END_IPADDRESS) + .create(); + + Assert.assertNotNull(sqlServer.firewallRules().get(secondFirewallRuleName)); + validateSqlFirewallRule(secondFirewallRule, secondFirewallRuleName); + sqlServer.firewallRules().delete(secondFirewallRuleName); + Assert.assertNull(sqlServer.firewallRules().get(secondFirewallRuleName)); // Get - validateSqlFirewallRule(sqlServerManager.sqlFirewallRules().getBySqlServer(sqlServer, SQL_FIREWALLRULE_NAME)); - validateSqlFirewallRule(sqlServerManager.sqlFirewallRules().getById(sqlFirewallRule.id())); + validateSqlFirewallRule(sqlServerManager.sqlFirewallRules().getBySqlServer(sqlServer, SQL_FIREWALLRULE_NAME), SQL_FIREWALLRULE_NAME); + validateSqlFirewallRule(sqlServerManager.sqlFirewallRules().getById(sqlFirewallRule.id()), SQL_FIREWALLRULE_NAME); // List validateListSqlFirewallRule(sqlServerManager.sqlFirewallRules().listBySqlServer(sqlServer.resourceGroupName(), sqlServer.name())); @@ -288,44 +298,21 @@ public void canCRUDSqlFirewallRule() throws Exception { } private static void validateSqlFirewallRuleNotFound() { - try { - sqlServerManager.sqlFirewallRules().getBySqlServer(RG_NAME, SQL_SERVER_NAME, SQL_FIREWALLRULE_NAME); - Assert.assertTrue(false); - } catch (CloudException exception) { - Assert.assertEquals(exception.getResponse().code(), 404); - } + Assert.assertNull(sqlServerManager.sqlFirewallRules().getBySqlServer(RG_NAME, SQL_SERVER_NAME, SQL_FIREWALLRULE_NAME)); } private static void validateSqlElasticPoolNotFound(String elasticPoolName) { - try { - sqlServerManager.sqlElasticPools().getBySqlServer(RG_NAME, SQL_SERVER_NAME, elasticPoolName); - Assert.assertTrue(false); - } - catch (CloudException exception) { - Assert.assertEquals(exception.getResponse().code(), 404); - } + Assert.assertNull(sqlServerManager.sqlElasticPools().getBySqlServer(RG_NAME, SQL_SERVER_NAME, elasticPoolName)); } private static void validateSqlDatabaseNotFound(String newDatabase) { - try { - sqlServerManager.sqlDatabases().getBySqlServer(RG_NAME, SQL_SERVER_NAME, newDatabase); - Assert.assertTrue(false); - } - catch (CloudException exception) { - Assert.assertEquals(exception.getResponse().code(), 404); - } + Assert.assertNull(sqlServerManager.sqlDatabases().getBySqlServer(RG_NAME, SQL_SERVER_NAME, newDatabase)); } private static void validateSqlServerNotFound(SqlServer sqlServer) { - try { - sqlServerManager.sqlServers().getById(sqlServer.id()); - Assert.assertTrue(false); - } - catch (CloudException exception) { - Assert.assertEquals(exception.getResponse().code(), 404); - } + Assert.assertNull(sqlServerManager.sqlServers().getById(sqlServer.id())); } private static void validateListSqlFirewallRule(PagedList sqlFirewallRules) { @@ -338,9 +325,9 @@ private static void validateListSqlFirewallRule(PagedList sqlFi Assert.assertTrue(found); } - private static void validateSqlFirewallRule(SqlFirewallRule sqlFirewallRule) { + private static void validateSqlFirewallRule(SqlFirewallRule sqlFirewallRule, String firewallName) { Assert.assertNotNull(sqlFirewallRule); - Assert.assertEquals(SQL_FIREWALLRULE_NAME, sqlFirewallRule.name()); + Assert.assertEquals(firewallName, sqlFirewallRule.name()); Assert.assertEquals(SQL_SERVER_NAME, sqlFirewallRule.sqlServerName()); Assert.assertEquals(START_IPADDRESS, sqlFirewallRule.startIpAddress()); Assert.assertEquals(END_IPADDRESS, sqlFirewallRule.endIpAddress());