diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index 92eab76402d..02bded712b4 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -989,13 +989,20 @@ public abstract class CitrixResourceBase implements StoragePoolResource, ServerR } else { args = "-D"; } + String cidrSize = Long.toString(NetUtils.getCidrSize(vlanNetmask)); if (sourceNat) { args += " -f"; + args += " -l "; + args += publicIpAddress + "/" + cidrSize; + } else if (firstIP) { + args += " -l "; + args += publicIpAddress + "/" + cidrSize; + } else { + args += " -l "; + args += publicIpAddress; } args += " -i "; args += privateIpAddress; - args += " -l "; - args += publicIpAddress; args += " -c "; args += "eth" + correctVif.getDevice(conn); args += " -g "; diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 0a1fac8c4de..82e683d2020 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -1142,11 +1142,11 @@ public class UserVmManagerImpl implements UserVmManager { ); userVm.setGuestMacAddress(vmMacAddress); _vmDao.update(userVm.getId(), userVm); + txn.commit(); if (routerLock) { _routerDao.release(routerId); routerLock = false; } - txn.commit(); return ipAddressStr; }finally { if (routerLock) { diff --git a/setup/db/schema-213to214.sql b/setup/db/schema-213to214.sql index 8267613085c..845c8a71dd0 100755 --- a/setup/db/schema-213to214.sql +++ b/setup/db/schema-213to214.sql @@ -1 +1,2 @@ ALTER TABLE `cloud`.`vm_instance` MODIFY COLUMN `pod_id` bigint unsigned; -- remove NOT NULL constraint to allow creating DB record in early time +ALTER TABLE `cloud`.`storage_pool` MODIFY COLUMN `uuid` varchar(255) UNIQUE; -- remove NOT NULL constraint to allow creating DB record in early time