Skip to content

Commit edc1b78

Browse files
committed
Revert "Revert "CLOUDSTACK-5281:""
This reverts commit ab37009.
1 parent ab37009 commit edc1b78

4 files changed

Lines changed: 19 additions & 5 deletions

File tree

engine/api/src/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,4 +215,6 @@ void implementNetworkElementsAndResources(DeployDestination dest, ReservationCon
215215
DhcpServiceProvider getDhcpServiceProvider(Network network);
216216

217217
void removeDhcpServiceInSubnet(Nic nic);
218+
219+
boolean resourceCountNeedsUpdate(NetworkOffering ntwkOff, ACLType aclType);
218220
}

engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1650,7 +1650,7 @@ public Network createGuestNetwork(long networkOfferingId, final String name, fin
16501650
final boolean updateResourceCount = resourceCountNeedsUpdate(ntwkOff, aclType);
16511651
//check resource limits
16521652
if (updateResourceCount) {
1653-
_resourceLimitMgr.checkResourceLimit(owner, ResourceType.network);
1653+
_resourceLimitMgr.checkResourceLimit(owner, ResourceType.network, isDisplayNetworkEnabled);
16541654
}
16551655

16561656
// Validate network offering
@@ -1928,7 +1928,7 @@ public Network doInTransaction(TransactionStatus status) {
19281928
}
19291929

19301930
if (updateResourceCount) {
1931-
_resourceLimitMgr.incrementResourceCount(owner.getId(), ResourceType.network);
1931+
_resourceLimitMgr.incrementResourceCount(owner.getId(), ResourceType.network, isDisplayNetworkEnabled);
19321932
}
19331933

19341934
return network;
@@ -2217,7 +2217,7 @@ public void doInTransactionWithoutResult(TransactionStatus status) {
22172217
NetworkOffering ntwkOff = _entityMgr.findById(NetworkOffering.class, networkFinal.getNetworkOfferingId());
22182218
boolean updateResourceCount = resourceCountNeedsUpdate(ntwkOff, networkFinal.getAclType());
22192219
if (updateResourceCount) {
2220-
_resourceLimitMgr.decrementResourceCount(networkFinal.getAccountId(), ResourceType.network);
2220+
_resourceLimitMgr.decrementResourceCount(networkFinal.getAccountId(), ResourceType.network, networkFinal.getDisplayNetwork());
22212221
}
22222222
}
22232223
}
@@ -2232,7 +2232,8 @@ public void doInTransactionWithoutResult(TransactionStatus status) {
22322232
return success;
22332233
}
22342234

2235-
private boolean resourceCountNeedsUpdate(NetworkOffering ntwkOff, ACLType aclType) {
2235+
@Override
2236+
public boolean resourceCountNeedsUpdate(NetworkOffering ntwkOff, ACLType aclType) {
22362237
//Update resource count only for Isolated account specific non-system networks
22372238
boolean updateResourceCount = (ntwkOff.getGuestType() == GuestType.Isolated && !ntwkOff.isSystemOnly() && aclType == ACLType.Account);
22382239
return updateResourceCount;

engine/schema/src/com/cloud/network/dao/NetworkDaoImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ protected void init() {
195195

196196
NetworksRegularUserCanCreateSearch = createSearchBuilder(Long.class);
197197
NetworksRegularUserCanCreateSearch.and("aclType", NetworksRegularUserCanCreateSearch.entity().getAclType(), Op.EQ);
198+
NetworksRegularUserCanCreateSearch.and("displayNetwork", NetworksRegularUserCanCreateSearch.entity().getDisplayNetwork(), Op.EQ);
198199
NetworksRegularUserCanCreateSearch.select(null, Func.COUNT, NetworksRegularUserCanCreateSearch.entity().getId());
199200
SearchBuilder<NetworkAccountVO> join4 = _accountsDao.createSearchBuilder();
200201
join4.and("account", join4.entity().getAccountId(), Op.EQ);
@@ -549,6 +550,7 @@ public int getNetworkCountByNetworkOffId(long networkOfferingId) {
549550
public long countNetworksUserCanCreate(long ownerId) {
550551
SearchCriteria<Long> sc = NetworksRegularUserCanCreateSearch.create();
551552
sc.setParameters("aclType", ACLType.Account);
553+
sc.setParameters("displayNetwork", 1);
552554
sc.setJoinParameters("accounts", "account", ownerId);
553555
sc.setJoinParameters("ntwkOff", "specifyVlan", false);
554556
return customSearch(sc, null).get(0);

server/src/com/cloud/network/NetworkServiceImpl.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import javax.inject.Inject;
4242
import javax.naming.ConfigurationException;
4343

44+
import com.cloud.configuration.Resource;
4445
import org.apache.log4j.Logger;
4546

4647
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
@@ -1998,10 +1999,18 @@ public Network updateGuestNetwork(final long networkId, String name, String disp
19981999
network.setDisplayText(displayText);
19992000
}
20002001

2001-
if (displayNetwork != null) {
2002+
// display flag is not null and has changed
2003+
if (displayNetwork != null && displayNetwork != network.getDisplayNetwork()) {
20022004
if (!_accountMgr.isRootAdmin(callerAccount.getType())) {
20032005
throw new PermissionDeniedException("Only admin allowed to update displaynetwork parameter");
20042006
}
2007+
2008+
// Update resource count if it needs to be updated
2009+
NetworkOffering networkOffering = _networkOfferingDao.findById(network.getNetworkOfferingId());
2010+
if(_networkMgr.resourceCountNeedsUpdate(networkOffering,network.getAclType())){
2011+
_resourceLimitMgr.changeResourceCount(network.getAccountId(), Resource.ResourceType.network, displayNetwork);
2012+
}
2013+
20052014
network.setDisplayNetwork(displayNetwork);
20062015
}
20072016

0 commit comments

Comments
 (0)