diff --git a/compute/src/main/java/org/zstack/compute/zone/ZoneManagerImpl.java b/compute/src/main/java/org/zstack/compute/zone/ZoneManagerImpl.java index 794c34a92fa..860a0d53d8d 100755 --- a/compute/src/main/java/org/zstack/compute/zone/ZoneManagerImpl.java +++ b/compute/src/main/java/org/zstack/compute/zone/ZoneManagerImpl.java @@ -5,10 +5,7 @@ import org.zstack.core.cloudbus.CloudBus; import org.zstack.core.cloudbus.MessageSafe; import org.zstack.core.componentloader.PluginRegistry; -import org.zstack.core.db.DatabaseFacade; -import org.zstack.core.db.DbEntityLister; -import org.zstack.core.db.SQL; -import org.zstack.core.db.SQLBatch; +import org.zstack.core.db.*; import org.zstack.core.errorcode.ErrorFacade; import org.zstack.core.thread.ChainTask; import org.zstack.core.thread.SyncTaskChain; @@ -160,6 +157,11 @@ protected void scripts() { } private void createZone(APICreateZoneMsg msg, ReturnValueCompletion completion) { + Long existCount = Q.New(ZoneVO.class).count(); + if (existCount == 0) { + msg.setDefault(true); + } + if (msg.getDefault() == null || !msg.getDefault()) { completion.success(createZoneFromApiMessage(msg)); return; diff --git a/test/src/test/groovy/org/zstack/test/integration/compute/ZoneCase.groovy b/test/src/test/groovy/org/zstack/test/integration/compute/ZoneCase.groovy index 67e86160548..7c4bae4134c 100644 --- a/test/src/test/groovy/org/zstack/test/integration/compute/ZoneCase.groovy +++ b/test/src/test/groovy/org/zstack/test/integration/compute/ZoneCase.groovy @@ -33,6 +33,7 @@ class ZoneCase extends SubCase { @Override void test() { env.create { + testFirstZoneSetDefaultZone() testCreateZoneAsDefaultZone() testBatchCreateZoneAsDefaultZone() testUpdateZoneToDefaultZone() @@ -48,6 +49,16 @@ class ZoneCase extends SubCase { env.delete() } + void testFirstZoneSetDefaultZone() { + ZoneInventory zone = createZone { + name = "FirstZone" + description = "first zone" + } as ZoneInventory + + assert zone != null + assert zone.isDefault + } + void testCreateZoneAsDefaultZone() { ZoneInventory zone = createZone { name = "zone1"