Skip to content

Commit 93879e4

Browse files
committed
Release NAT IP subnet when VPC is removed or IP is released (#44)
* Release NAT IP subnet when VPC is removed or IP is released * add license
1 parent 8d9e4a6 commit 93879e4

File tree

36 files changed

+276
-1
lines changed

36 files changed

+276
-1
lines changed

api/src/main/java/com/cloud/network/element/NetworkElement.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.cloud.exception.ConcurrentOperationException;
2424
import com.cloud.exception.InsufficientCapacityException;
2525
import com.cloud.exception.ResourceUnavailableException;
26+
import com.cloud.network.IpAddress;
2627
import com.cloud.network.Network;
2728
import com.cloud.network.Network.Capability;
2829
import com.cloud.network.Network.Provider;
@@ -87,6 +88,12 @@ boolean prepare(Network network, NicProfile nic, VirtualMachineProfile vm, Deplo
8788
boolean release(Network network, NicProfile nic, VirtualMachineProfile vm, ReservationContext context) throws ConcurrentOperationException,
8889
ResourceUnavailableException;
8990

91+
/**
92+
* Release IP from the network provider if reserved
93+
* @param ipAddress
94+
*/
95+
boolean releaseIp(IpAddress ipAddress);
96+
9097
/**
9198
* The network is being shutdown.
9299
* @param network

api/src/main/java/com/cloud/network/netris/NetrisService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,6 @@ public interface NetrisService {
4646
boolean addOrUpdateStaticRoute(long zoneId, long accountId, long domainId, String networkResourceName, Long networkResourceId, boolean isForVpc, String prefix, String nextHop, Long routeId, boolean updateRoute);
4747

4848
boolean deleteStaticRoute(long zoneId, long accountId, long domainId, String networkResourceName, Long networkResourceId, boolean isForVpc, String prefix, String nextHop, Long routeId);
49+
50+
boolean releaseNatIp(long zoneId, String publicIp);
4951
}

engine/schema/src/main/java/com/cloud/network/vpc/dao/VpcOfferingServiceMapDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,6 @@ public interface VpcOfferingServiceMapDao extends GenericDao<VpcOfferingServiceM
4040

4141
boolean isProviderForVpcOffering(Network.Provider provider, long vpcOfferingId);
4242

43+
List<VpcOfferingServiceMapVO> listProvidersForServiceForVpcOffering(long vpcOfferingId, Service service);
44+
4345
}

engine/schema/src/main/java/com/cloud/network/vpc/dao/VpcOfferingServiceMapDaoImpl.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,4 +119,14 @@ public boolean isProviderForVpcOffering(Network.Provider provider, long vpcOffer
119119
sc.setParameters("provider", provider.getName());
120120
return findOneBy(sc) != null;
121121
}
122+
123+
@Override
124+
public List<VpcOfferingServiceMapVO> listProvidersForServiceForVpcOffering(long vpcOfferingId, Service service) {
125+
SearchCriteria<VpcOfferingServiceMapVO> sc = AllFieldsSearch.create();
126+
127+
sc.setParameters("vpcOffId", vpcOfferingId);
128+
sc.setParameters("service", service.getName());
129+
130+
return customSearch(sc, null);
131+
}
122132
}

plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalDhcpElement.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.cloud.exception.ResourceUnavailableException;
3535
import com.cloud.host.Host;
3636
import com.cloud.hypervisor.Hypervisor.HypervisorType;
37+
import com.cloud.network.IpAddress;
3738
import com.cloud.network.Network;
3839
import com.cloud.network.Network.Capability;
3940
import com.cloud.network.Network.GuestType;
@@ -125,6 +126,11 @@ public boolean release(Network network, NicProfile nic, VirtualMachineProfile vm
125126
return true;
126127
}
127128

129+
@Override
130+
public boolean releaseIp(IpAddress ipAddress) {
131+
return true;
132+
}
133+
128134
@Override
129135
public boolean shutdown(Network network, ReservationContext context, boolean cleanup) throws ConcurrentOperationException, ResourceUnavailableException {
130136
return true;

plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalPxeElement.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.cloud.exception.InsufficientCapacityException;
3030
import com.cloud.exception.ResourceUnavailableException;
3131
import com.cloud.hypervisor.Hypervisor.HypervisorType;
32+
import com.cloud.network.IpAddress;
3233
import com.cloud.network.Network;
3334
import com.cloud.network.Network.Capability;
3435
import com.cloud.network.Network.GuestType;
@@ -161,6 +162,11 @@ public boolean release(Network network, NicProfile nic, VirtualMachineProfile vm
161162
return true;
162163
}
163164

165+
@Override
166+
public boolean releaseIp(IpAddress ipAddress) {
167+
return true;
168+
}
169+
164170
private void releaseVlan(Network network, VirtualMachineProfile vm) {
165171
vlanMgr.releaseVlan(network, vm);
166172
}

plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalUserdataElement.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.cloud.exception.InsufficientCapacityException;
3131
import com.cloud.exception.ResourceUnavailableException;
3232
import com.cloud.hypervisor.Hypervisor.HypervisorType;
33+
import com.cloud.network.IpAddress;
3334
import com.cloud.network.Network;
3435
import com.cloud.network.Network.Capability;
3536
import com.cloud.network.Network.Provider;
@@ -124,6 +125,11 @@ public boolean release(Network network, NicProfile nic, VirtualMachineProfile vm
124125
return false;
125126
}
126127

128+
@Override
129+
public boolean releaseIp(IpAddress ipAddress) {
130+
return true;
131+
}
132+
127133
@Override
128134
public boolean shutdown(Network network, ReservationContext context, boolean cleanup) throws ConcurrentOperationException, ResourceUnavailableException {
129135
// TODO Auto-generated method stub

plugins/hypervisors/vmware/src/main/java/com/cloud/network/element/CiscoNexusVSMElement.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
import javax.inject.Inject;
2626

27-
27+
import com.cloud.network.IpAddress;
2828
import com.cloud.api.commands.DeleteCiscoNexusVSMCmd;
2929
import com.cloud.api.commands.DisableCiscoNexusVSMCmd;
3030
import com.cloud.api.commands.EnableCiscoNexusVSMCmd;
@@ -106,6 +106,11 @@ public boolean release(Network network, NicProfile nic, VirtualMachineProfile vm
106106
return true;
107107
}
108108

109+
@Override
110+
public boolean releaseIp(IpAddress ipAddress) {
111+
return true;
112+
}
113+
109114
@Override
110115
public boolean shutdown(Network network, ReservationContext context, boolean cleanup) throws ConcurrentOperationException, ResourceUnavailableException {
111116
return true;

plugins/network-elements/bigswitch/src/main/java/com/cloud/network/element/BigSwitchBcfElement.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import javax.inject.Inject;
3030
import javax.naming.ConfigurationException;
3131

32+
import com.cloud.network.IpAddress;
3233
import org.springframework.stereotype.Component;
3334
import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice;
3435
import org.apache.commons.net.util.SubnetUtils;
@@ -318,6 +319,11 @@ public boolean release(Network network, NicProfile nic, VirtualMachineProfile vm
318319
return true;
319320
}
320321

322+
@Override
323+
public boolean releaseIp(IpAddress ipAddress) {
324+
return true;
325+
}
326+
321327
@Override
322328
public boolean shutdown(Network network, ReservationContext context, boolean cleanup) throws ConcurrentOperationException, ResourceUnavailableException {
323329
if (!canHandle(network, Service.Connectivity)) {

plugins/network-elements/brocade-vcs/src/main/java/com/cloud/network/element/BrocadeVcsElement.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import javax.inject.Inject;
2828
import javax.naming.ConfigurationException;
2929

30+
import com.cloud.network.IpAddress;
3031
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
3132
import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice;
3233
import org.springframework.stereotype.Component;
@@ -194,6 +195,11 @@ public boolean release(Network network, NicProfile nic, VirtualMachineProfile vm
194195
return true;
195196
}
196197

198+
@Override
199+
public boolean releaseIp(IpAddress ipAddress) {
200+
return true;
201+
}
202+
197203
@Override
198204
public boolean shutdown(Network network, ReservationContext context, boolean cleanup) throws ConcurrentOperationException, ResourceUnavailableException {
199205
if (!canHandle(network, Service.Connectivity)) {

0 commit comments

Comments
 (0)