Skip to content

Commit 831ef82

Browse files
GutoVeroneziDaan Hoogland
authored andcommitted
[22.0] resource allocation vpc
1 parent 8d269cf commit 831ef82

2 files changed

Lines changed: 31 additions & 25 deletions

File tree

server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -42,29 +42,8 @@
4242
import javax.inject.Inject;
4343
import javax.naming.ConfigurationException;
4444

45-
import com.cloud.configuration.ConfigurationManager;
46-
import com.cloud.configuration.ConfigurationManagerImpl;
47-
import com.cloud.bgp.BGPService;
48-
import com.cloud.dc.ASNumberVO;
49-
import com.cloud.dc.dao.ASNumberDao;
50-
import com.cloud.dc.Vlan;
51-
import com.cloud.network.RemoteAccessVpn;
52-
import com.cloud.network.Site2SiteVpnConnection;
53-
import com.cloud.network.dao.NetrisProviderDao;
54-
import com.cloud.network.dao.NsxProviderDao;
55-
import com.cloud.network.dao.RemoteAccessVpnDao;
56-
import com.cloud.network.dao.RemoteAccessVpnVO;
57-
import com.cloud.network.dao.Site2SiteCustomerGatewayDao;
58-
import com.cloud.network.dao.Site2SiteCustomerGatewayVO;
59-
import com.cloud.network.dao.Site2SiteVpnConnectionDao;
60-
import com.cloud.network.dao.Site2SiteVpnConnectionVO;
61-
import com.cloud.network.element.NetrisProviderVO;
62-
import com.cloud.network.element.NetworkACLServiceProvider;
63-
import com.cloud.network.element.NsxProviderVO;
64-
import com.cloud.network.rules.RulesManager;
65-
import com.cloud.network.vpn.RemoteAccessVpnService;
66-
import com.cloud.vm.dao.VMInstanceDao;
6745
import com.google.common.collect.Sets;
46+
6847
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
6948
import org.apache.cloudstack.alert.AlertService;
7049
import org.apache.cloudstack.annotation.AnnotationService;
@@ -106,12 +85,18 @@
10685
import com.cloud.alert.AlertManager;
10786
import com.cloud.api.query.dao.VpcOfferingJoinDao;
10887
import com.cloud.api.query.vo.VpcOfferingJoinVO;
88+
import com.cloud.bgp.BGPService;
10989
import com.cloud.configuration.Config;
90+
import com.cloud.configuration.ConfigurationManager;
91+
import com.cloud.configuration.ConfigurationManagerImpl;
11092
import com.cloud.configuration.Resource.ResourceType;
93+
import com.cloud.dc.ASNumberVO;
11194
import com.cloud.dc.DataCenter;
11295
import com.cloud.dc.DataCenterVO;
11396
import com.cloud.dc.Vlan.VlanType;
97+
import com.cloud.dc.Vlan;
11498
import com.cloud.dc.VlanVO;
99+
import com.cloud.dc.dao.ASNumberDao;
115100
import com.cloud.dc.dao.DataCenterDao;
116101
import com.cloud.dc.dao.VlanDao;
117102
import com.cloud.deploy.DeployDestination;
@@ -141,18 +126,33 @@
141126
import com.cloud.network.Networks.BroadcastDomainType;
142127
import com.cloud.network.Networks.TrafficType;
143128
import com.cloud.network.PhysicalNetwork;
129+
import com.cloud.network.RemoteAccessVpn;
130+
import com.cloud.network.Site2SiteVpnConnection;
144131
import com.cloud.network.addr.PublicIp;
145132
import com.cloud.network.dao.FirewallRulesDao;
146133
import com.cloud.network.dao.IPAddressDao;
147134
import com.cloud.network.dao.IPAddressVO;
148135
import com.cloud.network.dao.NetworkDao;
149136
import com.cloud.network.dao.NetworkVO;
137+
import com.cloud.network.dao.NetrisProviderDao;
138+
import com.cloud.network.dao.NsxProviderDao;
139+
import com.cloud.network.dao.RemoteAccessVpnDao;
140+
import com.cloud.network.dao.RemoteAccessVpnVO;
141+
import com.cloud.network.dao.Site2SiteCustomerGatewayDao;
142+
import com.cloud.network.dao.Site2SiteCustomerGatewayVO;
143+
import com.cloud.network.dao.Site2SiteVpnConnectionDao;
144+
import com.cloud.network.dao.Site2SiteVpnConnectionVO;
145+
import com.cloud.network.element.NetrisProviderVO;
146+
import com.cloud.network.element.NetworkACLServiceProvider;
150147
import com.cloud.network.element.NetworkElement;
148+
import com.cloud.network.element.NsxProviderVO;
151149
import com.cloud.network.element.StaticNatServiceProvider;
152150
import com.cloud.network.element.VpcProvider;
153151
import com.cloud.network.router.CommandSetupHelper;
154152
import com.cloud.network.router.NetworkHelper;
155153
import com.cloud.network.router.VpcVirtualNetworkApplianceManager;
154+
import com.cloud.network.rules.RulesManager;
155+
import com.cloud.network.vpn.RemoteAccessVpnService;
156156
import com.cloud.network.vpc.VpcOffering.State;
157157
import com.cloud.network.vpc.dao.NetworkACLDao;
158158
import com.cloud.network.vpc.dao.PrivateIpDao;
@@ -171,6 +171,7 @@
171171
import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
172172
import com.cloud.org.Grouping;
173173
import com.cloud.projects.Project.ListProjectResourcesCriteria;
174+
import com.cloud.resourcelimit.CheckedReservation;
174175
import com.cloud.server.ResourceTag.ResourceObjectType;
175176
import com.cloud.tags.ResourceTagVO;
176177
import com.cloud.tags.dao.ResourceTagDao;
@@ -207,6 +208,7 @@
207208
import com.cloud.vm.VirtualMachine;
208209
import com.cloud.vm.dao.DomainRouterDao;
209210
import com.cloud.vm.dao.NicDao;
211+
import com.cloud.vm.dao.VMInstanceDao;
210212

211213
import static com.cloud.offering.NetworkOffering.RoutingMode.Dynamic;
212214

@@ -1317,6 +1319,7 @@ public Vpc createVpc(final long zoneId, final long vpcOffId, final long vpcOwner
13171319
vpc.setDisplay(Boolean.TRUE.equals(displayVpc));
13181320
vpc.setUseRouterIpResolver(Boolean.TRUE.equals(useVrIpResolver));
13191321

1322+
try (CheckedReservation vpcReservation = new CheckedReservation(owner, ResourceType.vpc, null, null, 1L, reservationDao, _resourceLimitMgr)) {
13201323
if (vpc.getCidr() == null && cidrSize != null) {
13211324
// Allocate a CIDR for VPC
13221325
Ipv4GuestSubnetNetworkMap subnet = routedIpv4Manager.getOrCreateIpv4SubnetForVpc(vpc, cidrSize);
@@ -1336,6 +1339,7 @@ public Vpc createVpc(final long zoneId, final long vpcOffId, final long vpcOwner
13361339
routedIpv4Manager.persistBgpPeersForVpc(newVpc.getId(), bgpPeerIds);
13371340
}
13381341
return newVpc;
1342+
}
13391343
}
13401344

13411345
private void validateVpcCidrSize(Account caller, long accountId, VpcOffering vpcOffering, String cidr, Integer cidrSize, long zoneId) {

server/src/test/java/com/cloud/network/vpc/VpcManagerImplTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import com.cloud.offering.NetworkOffering;
5555
import com.cloud.offerings.NetworkOfferingServiceMapVO;
5656
import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
57+
import com.cloud.resourcelimit.CheckedReservation;
5758
import com.cloud.user.Account;
5859
import com.cloud.user.AccountManager;
5960
import com.cloud.user.AccountVO;
@@ -81,6 +82,7 @@
8182
import org.junit.Test;
8283
import org.junit.runner.RunWith;
8384
import org.mockito.Mock;
85+
import org.mockito.MockedConstruction;
8486
import org.mockito.Mockito;
8587
import org.mockito.MockitoAnnotations;
8688
import org.mockito.junit.MockitoJUnitRunner;
@@ -516,7 +518,7 @@ public void testCreateVpc() {
516518
VpcVO vpc = Mockito.mock(VpcVO.class);
517519
Mockito.when(vpcDao.persist(any(), anyMap())).thenReturn(vpc);
518520
Mockito.when(vpc.getUuid()).thenReturn("uuid");
519-
try {
521+
try (MockedConstruction<CheckedReservation> mockCheckedReservation = Mockito.mockConstruction(CheckedReservation.class)) {
520522
doNothing().when(resourceLimitService).checkResourceLimit(account, Resource.ResourceType.vpc);
521523
manager.createVpc(zoneId, vpcOfferingId, vpcOwnerId, vpcName, vpcName, ip4Cidr, vpcDomain,
522524
ip4Dns[0], ip4Dns[1], null, null, true, 1500, null, null, null, false);
@@ -533,7 +535,7 @@ public void testCreateRoutedVpc() {
533535
Mockito.when(vpc.getUuid()).thenReturn("uuid");
534536
doReturn(true).when(routedIpv4Manager).isRoutedVpc(any());
535537
doNothing().when(routedIpv4Manager).getOrCreateIpv4SubnetForVpc(any(), anyString());
536-
try {
538+
try (MockedConstruction<CheckedReservation> mockCheckedReservation = Mockito.mockConstruction(CheckedReservation.class)) {
537539
doNothing().when(resourceLimitService).checkResourceLimit(account, Resource.ResourceType.vpc);
538540
manager.createVpc(zoneId, vpcOfferingId, vpcOwnerId, vpcName, vpcName, ip4Cidr, vpcDomain,
539541
ip4Dns[0], ip4Dns[1], null, null, true, 1500, null, null, null, false);
@@ -556,7 +558,7 @@ public void testCreateRoutedVpcWithDynamicRouting() {
556558
Ipv4GuestSubnetNetworkMap ipv4GuestSubnetNetworkMap = Mockito.mock(Ipv4GuestSubnetNetworkMap.class);
557559
doReturn(ipv4GuestSubnetNetworkMap).when(routedIpv4Manager).getOrCreateIpv4SubnetForVpc(any(), anyInt());
558560
List<Long> bgpPeerIds = Arrays.asList(11L, 12L);
559-
try {
561+
try (MockedConstruction<CheckedReservation> mockCheckedReservation = Mockito.mockConstruction(CheckedReservation.class)) {
560562
doNothing().when(resourceLimitService).checkResourceLimit(account, Resource.ResourceType.vpc);
561563
manager.createVpc(zoneId, vpcOfferingId, vpcOwnerId, vpcName, vpcName, null, vpcDomain,
562564
ip4Dns[0], ip4Dns[1], null, null, true, 1500, 24, null, bgpPeerIds, false);

0 commit comments

Comments
 (0)