From 7d8eb379240764a767e972b668be1757c2d274e8 Mon Sep 17 00:00:00 2001 From: Nicolas Vazquez Date: Wed, 7 Nov 2018 09:48:07 -0300 Subject: [PATCH] [4.11] Fix set initial reservation on public IP ranges (#2980) * Fix initial reservation on public IP ranges * Do not allow dedicating a system VM IP range --- .../cloud/configuration/ConfigurationManagerImpl.java | 10 ++++++---- ui/scripts/system.js | 6 +++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index 80642f51375..9075ee903a5 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -3569,10 +3569,10 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati } // increment resource count for dedicated public ip's _resourceLimitMgr.incrementResourceCount(vlanOwner.getId(), ResourceType.public_ip, new Long(ips.size())); - } else if (domain != null) { + } else if (domain != null && !forSystemVms) { // This VLAN is domain-wide, so create a DomainVlanMapVO entry - //final DomainVlanMapVO domainVlanMapVO = new DomainVlanMapVO(domain.getId(), vlan.getId()); - //_domainVlanMapDao.persist(domainVlanMapVO); + final DomainVlanMapVO domainVlanMapVO = new DomainVlanMapVO(domain.getId(), vlan.getId()); + _domainVlanMapDao.persist(domainVlanMapVO); } else if (podId != null) { // This VLAN is pod-wide, so create a PodVlanMapVO entry final PodVlanMapVO podVlanMapVO = new PodVlanMapVO(podId, vlan.getId()); @@ -3754,8 +3754,10 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati // Check if any of the Public IP addresses is allocated to another // account + boolean forSystemVms = false; final List ips = _publicIpAddressDao.listByVlanId(vlanDbId); for (final IPAddressVO ip : ips) { + forSystemVms = ip.isForSystemVms(); final Long allocatedToAccountId = ip.getAllocatedToAccountId(); if (allocatedToAccountId != null) { final Account accountAllocatedTo = _accountMgr.getActiveAccountById(allocatedToAccountId); @@ -3779,7 +3781,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NET_IP_ASSIGN, vlanOwner.getId(), ip.getDataCenterId(), ip.getId(), ip.getAddress().toString(), ip.isSourceNat(), vlan.getVlanType().toString(), ip.getSystem(), ip.getClass().getName(), ip.getUuid()); } - } else if (domain != null) { + } else if (domain != null && !forSystemVms) { // Create an DomainVlanMapVO entry DomainVlanMapVO domainVlanMapVO = new DomainVlanMapVO(domain.getId(), vlan.getId()); _domainVlanMapDao.persist(domainVlanMapVO); diff --git a/ui/scripts/system.js b/ui/scripts/system.js index b568d49fe72..284dad456d9 100755 --- a/ui/scripts/system.js +++ b/ui/scripts/system.js @@ -126,13 +126,16 @@ var $systemvmsCb = $systemvms.find('input[type=checkbox]'); var $account = args.$form.find('.form-item[rel=account]'); var $accountTxt = args.$form.find('input[name=account]'); + var $domainid = args.$form.find('select[name=domainid]'); $systemvmsCb.change(function() { if ($systemvmsCb.is(':checked')) { $accountTxt.val(''); $accountTxt.attr('disabled', true); + $domainid.attr('disabled', true); } else { $accountTxt.attr('disabled', false); + $domainid.attr('disabled', false); } }); } @@ -524,7 +527,8 @@ }, actionPreFilter: function (args) { var actionsToShow =[ 'destroy']; - if (args.context.multiRule[0].domain == 'ROOT' && args.context.multiRule[0].account != null && args.context.multiRule[0].account.account == 'system') + if (args.context.multiRule[0].domain == 'ROOT' && args.context.multiRule[0].account != null && + args.context.multiRule[0].account.account == 'system' && !args.context.multiRule[0].forsystemvms) actionsToShow.push('addAccount'); else actionsToShow.push('releaseFromAccount'); return actionsToShow;