From ddde7d1303daf511d72e6d46d379aa74ec44a818 Mon Sep 17 00:00:00 2001 From: nvazquez Date: Mon, 29 Oct 2018 11:45:58 -0300 Subject: [PATCH 1/2] Fix initial reservation on public IP ranges --- .../com/cloud/configuration/ConfigurationManagerImpl.java | 6 +++--- ui/scripts/system.js | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index 80642f513759..97201a7e1752 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -3569,10 +3569,10 @@ public VlanVO doInTransaction(final TransactionStatus status) { } // 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()); diff --git a/ui/scripts/system.js b/ui/scripts/system.js index b568d49fe72e..916b988b50ae 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); } }); } From 5d4b8cdb800ab942304c87fd5ae57df19e49291c Mon Sep 17 00:00:00 2001 From: nvazquez Date: Mon, 29 Oct 2018 12:06:01 -0300 Subject: [PATCH 2/2] Do not allow dedicating a system VM IP range --- .../src/com/cloud/configuration/ConfigurationManagerImpl.java | 4 +++- ui/scripts/system.js | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index 97201a7e1752..9075ee903a5a 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -3754,8 +3754,10 @@ public Vlan dedicatePublicIpRange(final DedicatePublicIpRangeCmd cmd) throws Res // 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 Vlan dedicatePublicIpRange(final DedicatePublicIpRangeCmd cmd) throws Res 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 916b988b50ae..284dad456d98 100755 --- a/ui/scripts/system.js +++ b/ui/scripts/system.js @@ -527,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;