Github user remibergsma commented on the pull request:
https://github.com/apache/cloudstack/pull/1344#issuecomment-172368421
Thanks @DaanHoogland
FYI this was the conflict after fwd-merge:
```
rbergsma[~/git/apache/cloudstack](master)$ git diff
diff --cc
engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
index fa6cd82,5f442b3..0000000
---
a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
+++
b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
@@@ -168,8 -167,8 +168,9 @@@ import com.cloud.user.Account
import com.cloud.user.ResourceLimitService;
import com.cloud.user.User;
import com.cloud.user.dao.AccountDao;
+ import com.cloud.utils.NumbersUtil;
import com.cloud.utils.Pair;
+import com.cloud.utils.UuidUtils;
import com.cloud.utils.component.AdapterBase;
import com.cloud.utils.component.ManagerBase;
import com.cloud.utils.concurrency.NamedThreadFactory;
@@@ -1025,12 -1021,9 +1029,12 @@@ public class NetworkOrchestrator extend
_networksDao.update(network.getId(), network);
implemented.set(guru, network);
return implemented;
- } catch (NoTransitionException e) {
+ } catch (final NoTransitionException e) {
s_logger.error(e.getMessage());
return null;
+ } catch (CloudRuntimeException e) {
+ s_logger.error("Caught exception: " + e.getMessage());
+ return null;
} finally {
if (implemented.first() == null) {
s_logger.debug("Cleaning up because we're unable to
implement the network " + network);
@@@ -1922,35 -1915,33 +1926,65 @@@
throw new InvalidParameterValueException("The VLAN tag "
+ vlanId + " is already being used for dynamic vlan allocation for the guest
network in zone "
+ zone.getName());
}
++<<<<<<< HEAD
+ if (! UuidUtils.validateUUID(vlanId)){
+ String uri =
BroadcastDomainType.fromString(vlanId).toString();
+ // For Isolated networks, don't allow to create network
with vlan that already exists in the zone
+ if (ntwkOff.getGuestType() == GuestType.Isolated) {
+ if (_networksDao.countByZoneAndUri(zoneId, uri) > 0) {
+ throw new InvalidParameterValueException("Network
with vlan " + vlanId + " already exists in zone " + zoneId);
+ } else {
+ List<DataCenterVnetVO> dcVnets =
_datacenterVnetDao.findVnet(zoneId, vlanId.toString());
+ //for the network that is created as part of
private gateway,
+ //the vnet is not coming from the data center
vnet table, so the list can be empty
+ if (!dcVnets.isEmpty()) {
+ DataCenterVnetVO dcVnet = dcVnets.get(0);
+ // Fail network creation if specified vlan is
dedicated to a different account
+ if (dcVnet.getAccountGuestVlanMapId() !=
null) {
+ Long accountGuestVlanMapId =
dcVnet.getAccountGuestVlanMapId();
+ AccountGuestVlanMapVO map =
_accountGuestVlanMapDao.findById(accountGuestVlanMapId);
+ if (map.getAccountId() !=
owner.getAccountId()) {
+ throw new
InvalidParameterValueException("Vlan " + vlanId + " is dedicated to a different
account");
+ }
+ // Fail network creation if owner has a
dedicated range of vlans but the specified vlan belongs to the system pool
+ } else {
+ List<AccountGuestVlanMapVO> maps =
_accountGuestVlanMapDao.listAccountGuestVlanMapsByAccount(owner.getAccountId());
+ if (maps != null && !maps.isEmpty()) {
+ int vnetsAllocatedToAccount =
_datacenterVnetDao.countVnetsAllocatedToAccount(zoneId, owner.getAccountId());
+ int vnetsDedicatedToAccount =
_datacenterVnetDao.countVnetsDedicatedToAccount(zoneId, owner.getAccountId());
+ if (vnetsAllocatedToAccount <
vnetsDedicatedToAccount) {
+ throw new
InvalidParameterValueException("Specified vlan " + vlanId + " doesn't belong" +
" to the vlan range dedicated to the owner "
+ + owner.getAccountName());
+ }
++=======
+ final String uri =
BroadcastDomainType.fromString(vlanId).toString();
+ // For Isolated networks, don't allow to create network with
vlan that already exists in the zone
+ if (ntwkOff.getGuestType() == GuestType.Isolated) {
+ if (_networksDao.countByZoneAndUri(zoneId, uri) > 0) {
+ throw new InvalidParameterValueException("Network
with vlan " + vlanId + " already exists in zone " + zoneId);
+ } else {
+ final List<DataCenterVnetVO> dcVnets =
_datacenterVnetDao.findVnet(zoneId, vlanId.toString());
+ //for the network that is created as part of private
gateway,
+ //the vnet is not coming from the data center vnet
table, so the list can be empty
+ if (!dcVnets.isEmpty()) {
+ final DataCenterVnetVO dcVnet = dcVnets.get(0);
+ // Fail network creation if specified vlan is
dedicated to a different account
+ if (dcVnet.getAccountGuestVlanMapId() != null) {
+ final Long accountGuestVlanMapId =
dcVnet.getAccountGuestVlanMapId();
+ final AccountGuestVlanMapVO map =
_accountGuestVlanMapDao.findById(accountGuestVlanMapId);
+ if (map.getAccountId() !=
owner.getAccountId()) {
+ throw new
InvalidParameterValueException("Vlan " + vlanId + " is dedicated to a different
account");
+ }
+ // Fail network creation if owner has a
dedicated range of vlans but the specified vlan belongs to the system pool
+ } else {
+ final List<AccountGuestVlanMapVO> maps =
_accountGuestVlanMapDao.listAccountGuestVlanMapsByAccount(owner.getAccountId());
+ if (maps != null && !maps.isEmpty()) {
+ final int vnetsAllocatedToAccount =
_datacenterVnetDao.countVnetsAllocatedToAccount(zoneId, owner.getAccountId());
+ final int vnetsDedicatedToAccount =
_datacenterVnetDao.countVnetsDedicatedToAccount(zoneId, owner.getAccountId());
+ if (vnetsAllocatedToAccount <
vnetsDedicatedToAccount) {
+ throw new
InvalidParameterValueException("Specified vlan " + vlanId + " doesn't belong" +
" to the vlan range dedicated to the owner "
+ + owner.getAccountName());
++>>>>>>> 4.7
}
}
}
@@@ -2051,14 -2042,7 +2085,18 @@@
if (vlanIdFinal != null) {
if (isolatedPvlan == null) {
++<<<<<<< HEAD
+ URI uri = null;
+ if (UuidUtils.validateUUID(vlanIdFinal)){
+ //Logical router's UUID provided as VLAN_ID
+ userNetwork.setVlanIdAsUUID(vlanIdFinal);
//Set transient field
+ }
+ else {
+ uri =
BroadcastDomainType.fromString(vlanIdFinal);
+ }
++=======
+ final URI uri =
BroadcastDomainType.fromString(vlanIdFinal);
++>>>>>>> 4.7
userNetwork.setBroadcastUri(uri);
if (!vlanIdFinal.equalsIgnoreCase(Vlan.UNTAGGED))
{
userNetwork.setBroadcastDomainType(BroadcastDomainType.Vlan);
rbergsma[~/git/apache/cloudstack](master)$
```
I'll run a test suite on this PR.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---