mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CLOUDSTACK-5281:
Resource limit shouldnt be counted for resources with display flag = 0. Correcting this for the networks at the moment.
This commit is contained in:
parent
f083f91b0b
commit
6b62a04eaf
@ -215,4 +215,6 @@ public interface NetworkOrchestrationService {
|
|||||||
DhcpServiceProvider getDhcpServiceProvider(Network network);
|
DhcpServiceProvider getDhcpServiceProvider(Network network);
|
||||||
|
|
||||||
void removeDhcpServiceInSubnet(Nic nic);
|
void removeDhcpServiceInSubnet(Nic nic);
|
||||||
|
|
||||||
|
boolean resourceCountNeedsUpdate(NetworkOffering ntwkOff, ACLType aclType);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1650,7 +1650,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||||||
final boolean updateResourceCount = resourceCountNeedsUpdate(ntwkOff, aclType);
|
final boolean updateResourceCount = resourceCountNeedsUpdate(ntwkOff, aclType);
|
||||||
//check resource limits
|
//check resource limits
|
||||||
if (updateResourceCount) {
|
if (updateResourceCount) {
|
||||||
_resourceLimitMgr.checkResourceLimit(owner, ResourceType.network);
|
_resourceLimitMgr.checkResourceLimit(owner, ResourceType.network, isDisplayNetworkEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate network offering
|
// Validate network offering
|
||||||
@ -1928,7 +1928,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (updateResourceCount) {
|
if (updateResourceCount) {
|
||||||
_resourceLimitMgr.incrementResourceCount(owner.getId(), ResourceType.network);
|
_resourceLimitMgr.incrementResourceCount(owner.getId(), ResourceType.network, isDisplayNetworkEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
return network;
|
return network;
|
||||||
@ -2217,7 +2217,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||||||
NetworkOffering ntwkOff = _entityMgr.findById(NetworkOffering.class, networkFinal.getNetworkOfferingId());
|
NetworkOffering ntwkOff = _entityMgr.findById(NetworkOffering.class, networkFinal.getNetworkOfferingId());
|
||||||
boolean updateResourceCount = resourceCountNeedsUpdate(ntwkOff, networkFinal.getAclType());
|
boolean updateResourceCount = resourceCountNeedsUpdate(ntwkOff, networkFinal.getAclType());
|
||||||
if (updateResourceCount) {
|
if (updateResourceCount) {
|
||||||
_resourceLimitMgr.decrementResourceCount(networkFinal.getAccountId(), ResourceType.network);
|
_resourceLimitMgr.decrementResourceCount(networkFinal.getAccountId(), ResourceType.network, networkFinal.getDisplayNetwork());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2232,7 +2232,8 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean resourceCountNeedsUpdate(NetworkOffering ntwkOff, ACLType aclType) {
|
@Override
|
||||||
|
public boolean resourceCountNeedsUpdate(NetworkOffering ntwkOff, ACLType aclType) {
|
||||||
//Update resource count only for Isolated account specific non-system networks
|
//Update resource count only for Isolated account specific non-system networks
|
||||||
boolean updateResourceCount = (ntwkOff.getGuestType() == GuestType.Isolated && !ntwkOff.isSystemOnly() && aclType == ACLType.Account);
|
boolean updateResourceCount = (ntwkOff.getGuestType() == GuestType.Isolated && !ntwkOff.isSystemOnly() && aclType == ACLType.Account);
|
||||||
return updateResourceCount;
|
return updateResourceCount;
|
||||||
|
|||||||
@ -195,6 +195,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N
|
|||||||
|
|
||||||
NetworksRegularUserCanCreateSearch = createSearchBuilder(Long.class);
|
NetworksRegularUserCanCreateSearch = createSearchBuilder(Long.class);
|
||||||
NetworksRegularUserCanCreateSearch.and("aclType", NetworksRegularUserCanCreateSearch.entity().getAclType(), Op.EQ);
|
NetworksRegularUserCanCreateSearch.and("aclType", NetworksRegularUserCanCreateSearch.entity().getAclType(), Op.EQ);
|
||||||
|
NetworksRegularUserCanCreateSearch.and("displayNetwork", NetworksRegularUserCanCreateSearch.entity().getDisplayNetwork(), Op.EQ);
|
||||||
NetworksRegularUserCanCreateSearch.select(null, Func.COUNT, NetworksRegularUserCanCreateSearch.entity().getId());
|
NetworksRegularUserCanCreateSearch.select(null, Func.COUNT, NetworksRegularUserCanCreateSearch.entity().getId());
|
||||||
SearchBuilder<NetworkAccountVO> join4 = _accountsDao.createSearchBuilder();
|
SearchBuilder<NetworkAccountVO> join4 = _accountsDao.createSearchBuilder();
|
||||||
join4.and("account", join4.entity().getAccountId(), Op.EQ);
|
join4.and("account", join4.entity().getAccountId(), Op.EQ);
|
||||||
@ -549,6 +550,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N
|
|||||||
public long countNetworksUserCanCreate(long ownerId) {
|
public long countNetworksUserCanCreate(long ownerId) {
|
||||||
SearchCriteria<Long> sc = NetworksRegularUserCanCreateSearch.create();
|
SearchCriteria<Long> sc = NetworksRegularUserCanCreateSearch.create();
|
||||||
sc.setParameters("aclType", ACLType.Account);
|
sc.setParameters("aclType", ACLType.Account);
|
||||||
|
sc.setParameters("displayNetwork", 1);
|
||||||
sc.setJoinParameters("accounts", "account", ownerId);
|
sc.setJoinParameters("accounts", "account", ownerId);
|
||||||
sc.setJoinParameters("ntwkOff", "specifyVlan", false);
|
sc.setJoinParameters("ntwkOff", "specifyVlan", false);
|
||||||
return customSearch(sc, null).get(0);
|
return customSearch(sc, null).get(0);
|
||||||
|
|||||||
@ -41,6 +41,7 @@ import javax.ejb.Local;
|
|||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.naming.ConfigurationException;
|
import javax.naming.ConfigurationException;
|
||||||
|
|
||||||
|
import com.cloud.configuration.Resource;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
|
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
|
||||||
@ -1998,10 +1999,18 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
|
|||||||
network.setDisplayText(displayText);
|
network.setDisplayText(displayText);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (displayNetwork != null) {
|
// display flag is not null and has changed
|
||||||
|
if (displayNetwork != null && displayNetwork != network.getDisplayNetwork()) {
|
||||||
if (!_accountMgr.isRootAdmin(callerAccount.getType())) {
|
if (!_accountMgr.isRootAdmin(callerAccount.getType())) {
|
||||||
throw new PermissionDeniedException("Only admin allowed to update displaynetwork parameter");
|
throw new PermissionDeniedException("Only admin allowed to update displaynetwork parameter");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update resource count if it needs to be updated
|
||||||
|
NetworkOffering networkOffering = _networkOfferingDao.findById(network.getNetworkOfferingId());
|
||||||
|
if(_networkMgr.resourceCountNeedsUpdate(networkOffering,network.getAclType())){
|
||||||
|
_resourceLimitMgr.changeResourceCount(network.getAccountId(), Resource.ResourceType.network, displayNetwork);
|
||||||
|
}
|
||||||
|
|
||||||
network.setDisplayNetwork(displayNetwork);
|
network.setDisplayNetwork(displayNetwork);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user