Skip to content

Commit dddd5cd

Browse files
committed
Skip networkrate when copying network details on migration
The copy already gets its own networkrate from its offering, and the migrated network updates it when it moves to the new offering.
1 parent b00a023 commit dddd5cd

2 files changed

Lines changed: 29 additions & 1 deletion

File tree

‎server/src/main/java/com/cloud/network/NetworkMigrationManagerImpl.java‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,10 +247,14 @@ public class NetworkMigrationManagerImpl implements NetworkMigrationManager {
247247
}
248248

249249
@DB
250-
private void copyNetworkDetails(long srcNetworkId, long dstNetworkId) {
250+
protected void copyNetworkDetails(long srcNetworkId, long dstNetworkId) {
251251
List<NetworkDetailVO> networkDetails = _networkDetailsDao.listDetails(srcNetworkId);
252252

253253
for (NetworkDetailVO networkDetail : networkDetails) {
254+
// the network rate of the copy is already set from its offering, and it is updated when the migrated network moves to the new offering
255+
if (ApiConstants.NETWORKRATE.equals(networkDetail.getName())) {
256+
continue;
257+
}
254258
_networkDetailsDao.persist(new NetworkDetailVO(dstNetworkId, networkDetail.getName(), networkDetail.getValue(), networkDetail.isDisplay()));
255259
}
256260
}

‎server/src/test/java/com/cloud/network/NetworkMigrationManagerImplTest.java‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,27 @@
2323
import org.apache.cloudstack.api.ApiConstants;
2424
import org.apache.cloudstack.resourcedetail.VpcDetailVO;
2525
import org.apache.cloudstack.resourcedetail.dao.VpcDetailsDao;
26+
import org.junit.Assert;
2627
import org.junit.Test;
2728
import org.junit.runner.RunWith;
29+
import org.mockito.ArgumentCaptor;
2830
import org.mockito.InjectMocks;
2931
import org.mockito.Mock;
3032
import org.mockito.Mockito;
3133
import org.mockito.junit.MockitoJUnitRunner;
3234

35+
import com.cloud.network.dao.NetworkDetailVO;
36+
import com.cloud.network.dao.NetworkDetailsDao;
37+
3338
@RunWith(MockitoJUnitRunner.class)
3439
public class NetworkMigrationManagerImplTest {
3540

3641
@Mock
3742
private VpcDetailsDao vpcDetailsDao;
3843

44+
@Mock
45+
private NetworkDetailsDao networkDetailsDao;
46+
3947
@InjectMocks
4048
private NetworkMigrationManagerImpl networkMigrationManager;
4149

@@ -53,4 +61,20 @@ public void testCopyVpcDetailsSkipsPublicNetworkRate() {
5361
Mockito.anyString(), Mockito.anyBoolean());
5462
Mockito.verify(vpcDetailsDao).addDetail(dstVpcId, "someKey", "someValue", false);
5563
}
64+
65+
@Test
66+
public void testCopyNetworkDetailsSkipsNetworkRate() {
67+
final long srcNetworkId = 20L;
68+
final long dstNetworkId = 21L;
69+
Mockito.when(networkDetailsDao.listDetails(srcNetworkId)).thenReturn(Arrays.asList(
70+
new NetworkDetailVO(srcNetworkId, ApiConstants.NETWORKRATE, "100", true),
71+
new NetworkDetailVO(srcNetworkId, "someKey", "someValue", false)));
72+
73+
networkMigrationManager.copyNetworkDetails(srcNetworkId, dstNetworkId);
74+
75+
ArgumentCaptor<NetworkDetailVO> captor = ArgumentCaptor.forClass(NetworkDetailVO.class);
76+
Mockito.verify(networkDetailsDao, Mockito.times(1)).persist(captor.capture());
77+
Assert.assertEquals("someKey", captor.getValue().getName());
78+
Assert.assertEquals(dstNetworkId, captor.getValue().getResourceId());
79+
}
5680
}

0 commit comments

Comments
 (0)