Skip to content

Commit 0c34a76

Browse files
committed
fix
Signed-off-by: Abhishek Kumar <[email protected]>
1 parent 36e636a commit 0c34a76

File tree

2 files changed

+61
-2
lines changed

2 files changed

+61
-2
lines changed

server/src/main/java/com/cloud/network/as/AutoScaleManagerImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1958,7 +1958,7 @@ public void updateVmDetails(Map<String, String> deployParams, Map<String, String
19581958
protected Pair<String, String> getNextVmHostAndDisplayName(AutoScaleVmGroupVO asGroup, VirtualMachineTemplate template) {
19591959
template.getGuestOSId();
19601960
GuestOSVO guestOSVO = guestOSDao.findById(template.getGuestOSId());
1961-
boolean isWindows = guestOSVO != null && guestOSVO.getDisplayName().toLowerCase().contains("windows");
1961+
boolean isWindows = guestOSVO != null && guestOSVO.getName().toLowerCase().contains("windows");
19621962
String vmHostNameSuffix = "-" + asGroup.getNextVmSeq() + "-" +
19631963
RandomStringUtils.random(VM_HOSTNAME_RANDOM_SUFFIX_LENGTH, 0, 0, true, false, (char[])null, new SecureRandom()).toLowerCase();
19641964
// Truncate vm group name because max length of vm name is 63

server/src/test/java/com/cloud/network/as/AutoScaleManagerImplTest.java

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import static org.mockito.ArgumentMatchers.eq;
2424
import static org.mockito.ArgumentMatchers.matches;
2525
import static org.mockito.ArgumentMatchers.nullable;
26+
import static org.mockito.Mockito.doReturn;
2627
import static org.mockito.Mockito.never;
2728
import static org.mockito.Mockito.times;
2829
import static org.mockito.Mockito.when;
@@ -135,8 +136,11 @@
135136
import com.cloud.service.ServiceOfferingVO;
136137
import com.cloud.service.dao.ServiceOfferingDao;
137138
import com.cloud.storage.DiskOfferingVO;
139+
import com.cloud.storage.GuestOS;
140+
import com.cloud.storage.GuestOSVO;
138141
import com.cloud.storage.VMTemplateVO;
139142
import com.cloud.storage.dao.DiskOfferingDao;
143+
import com.cloud.storage.dao.GuestOSDao;
140144
import com.cloud.template.VirtualMachineTemplate;
141145
import com.cloud.user.Account;
142146
import com.cloud.user.AccountManager;
@@ -259,9 +263,10 @@ public class AutoScaleManagerImplTest {
259263
LoadBalancingRulesService loadBalancingRulesService;
260264
@Mock
261265
VMInstanceDao vmInstanceDao;
262-
263266
@Mock
264267
VirtualMachineManager virtualMachineManager;
268+
@Mock
269+
GuestOSDao guestOSDao;
265270

266271
AccountVO account;
267272
UserVO user;
@@ -420,6 +425,11 @@ public void setUp() {
420425
userDataDetails.put("0", new HashMap<>() {{ put("key1", "value1"); put("key2", "value2"); }});
421426
Mockito.doReturn(userDataFinal).when(userVmMgr).finalizeUserData(any(), any(), any());
422427
Mockito.doReturn(userDataFinal).when(userDataMgr).validateUserData(eq(userDataFinal), nullable(BaseCmd.HTTPMethod.class));
428+
429+
when(templateMock.getGuestOSId()).thenReturn(100L);
430+
GuestOSVO guestOSMock = Mockito.mock(GuestOSVO.class);
431+
when(guestOSDao.findById(anyLong())).thenReturn(guestOSMock);
432+
when(guestOSMock.getName()).thenReturn("linux");
423433
}
424434

425435
@After
@@ -2495,4 +2505,53 @@ public void destroyVm() {
24952505

24962506
Mockito.verify(userVmMgr).expunge(eq(userVmMock));
24972507
}
2508+
2509+
@Test
2510+
public void getNextVmHostAndDisplayNameGeneratesCorrectHostAndDisplayNameForLinuxTemplate() {
2511+
when(asVmGroupMock.getName()).thenReturn(vmGroupName);
2512+
when(asVmGroupMock.getNextVmSeq()).thenReturn(1L);
2513+
Pair<String, String> result = autoScaleManagerImplSpy.getNextVmHostAndDisplayName(asVmGroupMock, templateMock);
2514+
String vmHostNamePattern = AutoScaleManagerImpl.VM_HOSTNAME_PREFIX + vmGroupName +
2515+
"-" + asVmGroupMock.getNextVmSeq() + "-[a-z]{6}";
2516+
Assert.assertTrue(result.first().matches(vmHostNamePattern));
2517+
Assert.assertEquals(result.first(), result.second());
2518+
}
2519+
2520+
@Test
2521+
public void getNextVmHostAndDisplayNameGeneratesCorrectHostAndDisplayNameForWindowsTemplate() {
2522+
GuestOSVO guestOS = Mockito.mock(GuestOSVO.class);
2523+
when(asVmGroupMock.getName()).thenReturn(vmGroupName);
2524+
when(asVmGroupMock.getNextVmSeq()).thenReturn(1L);
2525+
when(templateMock.getGuestOSId()).thenReturn(1L);
2526+
when(guestOS.getName()).thenReturn("Windows Server");
2527+
when(guestOSDao.findById(1L)).thenReturn(guestOS);
2528+
Pair<String, String> result = autoScaleManagerImplSpy.getNextVmHostAndDisplayName(asVmGroupMock, templateMock);
2529+
String vmHostNamePattern = AutoScaleManagerImpl.VM_HOSTNAME_PREFIX + vmGroupName +
2530+
"-" + asVmGroupMock.getNextVmSeq() + "-[a-z]{6}";
2531+
Assert.assertTrue(result.second().matches(vmHostNamePattern));
2532+
Assert.assertEquals(15, result.first().length());
2533+
Assert.assertTrue(result.second().endsWith(result.first()));
2534+
}
2535+
2536+
@Test
2537+
public void getNextVmHostAndDisplayNameTruncatesGroupNameWhenExceedingMaxLength() {
2538+
when(asVmGroupMock.getName()).thenReturn(vmGroupNameWithMaxLength);
2539+
when(asVmGroupMock.getNextVmSeq()).thenReturn(1L);
2540+
Pair<String, String> result = autoScaleManagerImplSpy.getNextVmHostAndDisplayName(asVmGroupMock, templateMock);
2541+
Assert.assertTrue(result.first().length() <= 63);
2542+
Assert.assertTrue(result.second().length() <= 63);
2543+
}
2544+
2545+
@Test
2546+
public void getNextVmHostAndDisplayNameHandlesNullGuestOS() {
2547+
when(asVmGroupMock.getName()).thenReturn(vmGroupName);
2548+
when(asVmGroupMock.getNextVmSeq()).thenReturn(1L);
2549+
when(templateMock.getGuestOSId()).thenReturn(1L);
2550+
when(guestOSDao.findById(1L)).thenReturn(null);
2551+
Pair<String, String> result = autoScaleManagerImplSpy.getNextVmHostAndDisplayName(asVmGroupMock, templateMock);
2552+
String vmHostNamePattern = AutoScaleManagerImpl.VM_HOSTNAME_PREFIX + vmGroupName +
2553+
"-" + asVmGroupMock.getNextVmSeq() + "-[a-z]{6}";
2554+
Assert.assertTrue(result.first().matches(vmHostNamePattern));
2555+
Assert.assertEquals(result.first(), result.second());
2556+
}
24982557
}

0 commit comments

Comments
 (0)