Skip to content

Commit 1f1e393

Browse files
committed
Release vnet during network shutdown for guest networks only
1 parent 6424042 commit 1f1e393

11 files changed

Lines changed: 189 additions & 37 deletions
Lines changed: 157 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,59 @@
11
package com.cloud.network;
22

3+
import java.net.URI;
34

4-
public class NetworkProfile{
5-
private Network network;
5+
import com.cloud.network.Networks.BroadcastDomainType;
6+
import com.cloud.network.Networks.Mode;
7+
import com.cloud.network.Networks.TrafficType;
8+
9+
10+
public class NetworkProfile implements Network{
11+
private long id;
12+
private long dataCenterId;
13+
private long ownerId;
14+
private long domainId;
615
private String dns1;
716
private String dns2;
17+
private URI broadcastUri;
18+
private State state;
19+
private String name;
20+
private Mode mode;
21+
private BroadcastDomainType broadcastDomainType;
22+
private TrafficType trafficType;
23+
private String gateway;
24+
private String cidr;
25+
private long networkOfferingId;
26+
private long related;
27+
private GuestIpType guestIpType;
28+
private String displayText;
29+
private boolean isShared;
30+
private String reservationId;
31+
private boolean isDefault;
32+
private String networkDomain;
33+
private boolean isSecurityGroupEnabled;
834

9-
public NetworkProfile(Network network, String dns1, String dns2) {
10-
this.network = network;
11-
this.dns1 = dns1;
12-
this.dns2 = dns2;
13-
}
14-
15-
public NetworkProfile() {
16-
17-
}
18-
19-
public Network getNetwork() {
20-
return network;
21-
}
22-
23-
public void setNetwork(Network network){
24-
this.network = network;
35+
public NetworkProfile(Network network) {
36+
this.id = network.getId();
37+
this.broadcastUri = network.getBroadcastUri();
38+
this.dataCenterId = network.getDataCenterId();
39+
this.ownerId = network.getAccountId();
40+
this.state = network.getState();
41+
this.name = network.getName();
42+
this.mode = network.getMode();
43+
this.broadcastDomainType = network.getBroadcastDomainType();
44+
this.trafficType = network.getTrafficType();
45+
this.gateway = network.getGateway();
46+
this.cidr = network.getCidr();
47+
this.networkOfferingId = network.getNetworkOfferingId();
48+
this.related = network.getRelated();
49+
this.guestIpType = network.getGuestType();
50+
this.displayText = network.getDisplayText();
51+
this.isShared = network.isShared();
52+
this.reservationId = network.getReservationId();
53+
this.isDefault = network.isDefault();
54+
this.networkDomain = network.getNetworkDomain();
55+
this.domainId = network.getDomainId();
56+
this.isSecurityGroupEnabled = network.isSecurityGroupEnabled();
2557
}
2658

2759
public String getDns1() {
@@ -40,5 +72,112 @@ public void setDns2(String dns2) {
4072
this.dns2 = dns2;
4173
}
4274

75+
public void setBroadcastUri(URI broadcastUri) {
76+
this.broadcastUri = broadcastUri;
77+
}
78+
79+
@Override
80+
public URI getBroadcastUri() {
81+
return broadcastUri;
82+
}
83+
84+
@Override
85+
public long getId() {
86+
return id;
87+
}
88+
89+
@Override
90+
public long getDataCenterId() {
91+
return dataCenterId;
92+
}
93+
94+
@Override
95+
public long getAccountId() {
96+
return ownerId;
97+
}
98+
99+
@Override
100+
public State getState() {
101+
return state;
102+
}
103+
104+
@Override
105+
public String getName() {
106+
return name;
107+
}
108+
109+
@Override
110+
public Mode getMode() {
111+
return mode;
112+
}
113+
114+
@Override
115+
public BroadcastDomainType getBroadcastDomainType() {
116+
return broadcastDomainType;
117+
}
118+
119+
@Override
120+
public TrafficType getTrafficType() {
121+
return trafficType;
122+
}
123+
124+
@Override
125+
public String getGateway() {
126+
return gateway;
127+
}
128+
129+
@Override
130+
public String getCidr() {
131+
return cidr;
132+
}
133+
134+
@Override
135+
public long getNetworkOfferingId() {
136+
return networkOfferingId;
137+
}
138+
139+
@Override
140+
public long getRelated() {
141+
return related;
142+
}
143+
144+
@Override
145+
public GuestIpType getGuestType() {
146+
return guestIpType;
147+
}
148+
149+
@Override
150+
public String getDisplayText() {
151+
return displayText;
152+
}
153+
154+
@Override
155+
public boolean isShared() {
156+
return isShared;
157+
}
43158

159+
@Override
160+
public String getReservationId() {
161+
return reservationId;
162+
}
163+
164+
@Override
165+
public boolean isDefault() {
166+
return isDefault;
167+
}
168+
169+
@Override
170+
public String getNetworkDomain() {
171+
return networkDomain;
172+
}
173+
174+
@Override
175+
public long getDomainId() {
176+
return domainId;
177+
}
178+
179+
@Override
180+
public boolean isSecurityGroupEnabled() {
181+
return isSecurityGroupEnabled;
182+
}
44183
}

api/src/com/cloud/network/NetworkService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public interface NetworkService {
6565

6666
IpAddress getIp(long id);
6767

68-
NetworkProfile getNetworkProfile(long networkId);
68+
NetworkProfile convertNetworkToNetworkProfile(long networkId);
6969

7070
Map<Service, Map<Capability, String>> getZoneCapabilities(long zoneId);
7171

api/src/com/cloud/network/guru/NetworkGuru.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public interface NetworkGuru extends Adapter {
7575

7676
void updateNicProfile(NicProfile profile, Network network);
7777

78-
void destroy(Network network, NetworkOffering offering);
78+
void shutdown(NetworkProfile network, NetworkOffering offering);
7979

8080
/**
8181
* Throw away the design.

server/src/com/cloud/api/ApiDBUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,7 @@ public static List<NicProfile> getNics(VirtualMachine vm) {
501501
}
502502

503503
public static NetworkProfile getNetworkProfile(long networkId) {
504-
return _networkMgr.getNetworkProfile(networkId);
504+
return _networkMgr.convertNetworkToNetworkProfile(networkId);
505505
}
506506

507507
public static NetworkOfferingVO findNetworkOfferingById(long networkOfferingId) {

server/src/com/cloud/api/ApiResponseHelper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2246,8 +2246,8 @@ public NetworkOfferingResponse createNetworkOfferingResponse(NetworkOffering off
22462246

22472247
@Override
22482248
public NetworkResponse createNetworkResponse(Network network) {
2249-
NetworkProfile profile = ApiDBUtils.getNetworkProfile(network.getId());
2250-
network = profile.getNetwork();
2249+
//need to get network profile in order to retrieve dns information from there
2250+
NetworkProfile profile = ApiDBUtils.getNetworkProfile(network.getId());
22512251
NetworkResponse response = new NetworkResponse();
22522252
response.setId(network.getId());
22532253
response.setName(network.getName());

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

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,6 +1028,12 @@ protected void applyProfileToNicForRelease(NicVO vo, NicProfile profile) {
10281028
vo.setIsolationUri(profile.getIsolationUri());
10291029
vo.setNetmask(profile.getNetmask());
10301030
}
1031+
1032+
protected void applyProfileToNetwork(NetworkVO network, NetworkProfile profile) {
1033+
network.setBroadcastUri(profile.getBroadcastUri());
1034+
network.setDns1(profile.getDns1());
1035+
network.setDns2(profile.getDns2());
1036+
}
10311037

10321038
protected NicTO toNicTO(NicVO nic, NicProfile profile, NetworkVO config) {
10331039
NicTO to = new NicTO();
@@ -1819,6 +1825,7 @@ public void shutdownNetwork(long networkId, ReservationContext context) {
18191825
s_logger.debug("Network is not implemented: " + network);
18201826
return;
18211827
}
1828+
18221829
network.setState(Network.State.Shutdown);
18231830
_networksDao.update(network.getId(), network);
18241831
txn.commit();
@@ -1849,11 +1856,15 @@ public void shutdownNetwork(long networkId, ReservationContext context) {
18491856
s_logger.debug("Network id=" + networkId + " is shutdown successfully, cleaning up corresponding resources now.");
18501857
}
18511858
NetworkGuru guru = _networkGurus.get(network.getGuruName());
1852-
guru.destroy(network, _networkOfferingDao.findById(network.getNetworkOfferingId()));
1853-
network.setBroadcastUri(null);
1859+
NetworkProfile profile = convertNetworkToNetworkProfile(network.getId());
1860+
guru.shutdown(profile, _networkOfferingDao.findById(network.getNetworkOfferingId()));
1861+
1862+
applyProfileToNetwork(network, profile);
1863+
18541864
network.setState(Network.State.Allocated);
18551865
_networksDao.update(network.getId(), network);
18561866
_networksDao.clearCheckForGc(networkId);
1867+
18571868
} else {
18581869
network.setState(Network.State.Implemented);
18591870
_networksDao.update(network.getId(), network);
@@ -2303,10 +2314,10 @@ public IpAddress getIp(long ipAddressId) {
23032314
}
23042315

23052316
@Override
2306-
public NetworkProfile getNetworkProfile(long networkId) {
2317+
public NetworkProfile convertNetworkToNetworkProfile(long networkId) {
23072318
NetworkVO network = _networksDao.findById(networkId);
23082319
NetworkGuru concierge = _networkGurus.get(network.getGuruName());
2309-
NetworkProfile profile = new NetworkProfile(network, null, null);
2320+
NetworkProfile profile = new NetworkProfile(network);
23102321
concierge.updateNetworkProfile(profile);
23112322

23122323
return profile;

server/src/com/cloud/network/guru/ControlNetworkGuru.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import com.cloud.exception.InsufficientVirtualNetworkCapcityException;
3434
import com.cloud.hypervisor.Hypervisor.HypervisorType;
3535
import com.cloud.network.Network;
36+
import com.cloud.network.NetworkProfile;
3637
import com.cloud.network.NetworkVO;
3738
import com.cloud.network.Networks.AddressFormat;
3839
import com.cloud.network.Networks.BroadcastDomainType;
@@ -156,7 +157,7 @@ public Network implement(Network config, NetworkOffering offering, DeployDestina
156157
}
157158

158159
@Override
159-
public void destroy(Network config, NetworkOffering offering) {
160+
public void shutdown(NetworkProfile config, NetworkOffering offering) {
160161
assert false : "Destroying a link local...Either you're out of your mind or something has changed.";
161162
}
162163

server/src/com/cloud/network/guru/DirectNetworkGuru.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ public void deallocate(Network network, NicProfile nic, VirtualMachineProfile<?
196196
}
197197

198198
@Override
199-
public void destroy(Network network, NetworkOffering offering) {
199+
public void shutdown(NetworkProfile network, NetworkOffering offering) {
200200
}
201201

202202
@Override
@@ -206,7 +206,7 @@ public boolean trash(Network network, NetworkOffering offering, Account owner) {
206206

207207
@Override
208208
public void updateNetworkProfile(NetworkProfile networkProfile) {
209-
DataCenter dc = _dcDao.findById(networkProfile.getNetwork().getDataCenterId());
209+
DataCenter dc = _dcDao.findById(networkProfile.getDataCenterId());
210210
networkProfile.setDns1(dc.getDns1());
211211
networkProfile.setDns2(dc.getDns2());
212212
}

server/src/com/cloud/network/guru/GuestNetworkGuru.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -243,9 +243,10 @@ public boolean release(NicProfile nic, VirtualMachineProfile<? extends VirtualMa
243243
}
244244

245245
@Override
246-
public void destroy(Network network, NetworkOffering offering) {
247-
s_logger.debug("Releasing vnet for the network id=" + network.getId());
248-
_dcDao.releaseVnet(network.getBroadcastUri().getHost(), network.getDataCenterId(), network.getAccountId(), network.getReservationId());
246+
public void shutdown(NetworkProfile profile, NetworkOffering offering) {
247+
s_logger.debug("Releasing vnet for the network id=" + profile.getId());
248+
_dcDao.releaseVnet(profile.getBroadcastUri().getHost(), profile.getDataCenterId(), profile.getAccountId(), profile.getReservationId());
249+
profile.setBroadcastUri(null);
249250
}
250251

251252
@Override
@@ -255,7 +256,7 @@ public boolean trash(Network network, NetworkOffering offering, Account owner) {
255256

256257
@Override
257258
public void updateNetworkProfile(NetworkProfile networkProfile) {
258-
DataCenter dc = _dcDao.findById(networkProfile.getNetwork().getDataCenterId());
259+
DataCenter dc = _dcDao.findById(networkProfile.getDataCenterId());
259260
networkProfile.setDns1(dc.getDns1());
260261
networkProfile.setDns2(dc.getDns2());
261262
}

server/src/com/cloud/network/guru/PodBasedNetworkGuru.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public Network implement(Network config, NetworkOffering offering, DeployDestina
124124
}
125125

126126
@Override
127-
public void destroy(Network config, NetworkOffering offering) {
127+
public void shutdown(NetworkProfile config, NetworkOffering offering) {
128128
}
129129

130130
@Override

0 commit comments

Comments
 (0)