Skip to content

Commit 44fa33c

Browse files
authored
Fix VPC restart with cleanup (#12)
1 parent 54c8672 commit 44fa33c

File tree

3 files changed

+23
-4
lines changed

3 files changed

+23
-4
lines changed

engine/schema/src/main/java/com/cloud/vm/dao/NicDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ public interface NicDao extends GenericDao<NicVO, Long> {
4444

4545
NicVO findByNetworkIdAndType(long networkId, VirtualMachine.Type vmType);
4646

47+
NicVO findByNetworkIdAndTypeIncludingRemoved(long networkId, VirtualMachine.Type vmType);
48+
4749
NicVO findByIp4AddressAndNetworkId(String ip4Address, long networkId);
4850

4951
NicVO findByNetworkIdAndMacAddress(long networkId, String mac);

engine/schema/src/main/java/com/cloud/vm/dao/NicDaoImpl.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,12 +176,21 @@ public NicVO findByInstanceIdAndNetworkIdIncludingRemoved(long networkId, long i
176176
return findOneIncludingRemovedBy(sc);
177177
}
178178

179-
@Override
180-
public NicVO findByNetworkIdAndType(long networkId, VirtualMachine.Type vmType) {
179+
private NicVO findByNetworkIdAndTypeInternal(long networkId, VirtualMachine.Type vmType, boolean includingRemoved) {
181180
SearchCriteria<NicVO> sc = AllFieldsSearch.create();
182181
sc.setParameters("network", networkId);
183182
sc.setParameters("vmType", vmType);
184-
return findOneBy(sc);
183+
return includingRemoved ? findOneIncludingRemovedBy(sc) : findOneBy(sc);
184+
}
185+
186+
@Override
187+
public NicVO findByNetworkIdAndType(long networkId, VirtualMachine.Type vmType) {
188+
return findByNetworkIdAndTypeInternal(networkId, vmType, false);
189+
}
190+
191+
@Override
192+
public NicVO findByNetworkIdAndTypeIncludingRemoved(long networkId, VirtualMachine.Type vmType) {
193+
return findByNetworkIdAndTypeInternal(networkId, vmType, true);
185194
}
186195

187196
@Override

server/src/main/java/com/cloud/network/router/NicProfileHelperImpl.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121

2222
import javax.inject.Inject;
2323

24+
import com.cloud.vm.NicVO;
25+
import com.cloud.vm.VirtualMachine;
2426
import org.apache.cloudstack.network.router.deployment.RouterDeploymentDefinition;
2527

2628
import com.cloud.network.IpAddressManager;
@@ -118,7 +120,13 @@ public NicProfile createPrivateNicProfileForGateway(final VpcGateway privateGate
118120
public NicProfile createGuestNicProfileForVpcRouter(final RouterDeploymentDefinition vpcRouterDeploymentDefinition, final Network guestNetwork) {
119121
final NicProfile guestNic = new NicProfile();
120122

121-
if (vpcRouterDeploymentDefinition.isRedundant()) {
123+
if (BroadcastDomainType.NSX == guestNetwork.getBroadcastDomainType()) {
124+
NicVO vrNic = _nicDao.findByNetworkIdAndTypeIncludingRemoved(guestNetwork.getId(), VirtualMachine.Type.DomainRouter);
125+
if (vrNic != null) {
126+
guestNic.setIPv4Address(vrNic.getIPv4Address());
127+
guestNic.setIPv4Gateway(vrNic.getIPv4Gateway());
128+
}
129+
} else if (vpcRouterDeploymentDefinition.isRedundant()) {
122130
guestNic.setIPv4Address(this.acquireGuestIpAddressForVrouterRedundant(guestNetwork));
123131
} else {
124132
guestNic.setIPv4Address(guestNetwork.getGateway());

0 commit comments

Comments
 (0)