Skip to content

Commit c8fa157

Browse files
author
Rodrigo Lopez
committed
Extract new methods
add two new methods: updateDiskOfferingTagsIfIsNotNull that will check and set tags to the diskOffering; isUpdateDiskOfferingNeeded that verify if any update is needed. Create unit tests do cover all those new methods
1 parent d5d13d9 commit c8fa157

2 files changed

Lines changed: 63 additions & 10 deletions

File tree

server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import javax.inject.Inject;
4040
import javax.naming.ConfigurationException;
4141

42+
import com.cloud.utils.StringUtils;
4243
import org.apache.cloudstack.acl.SecurityChecker;
4344
import org.apache.cloudstack.affinity.AffinityGroup;
4445
import org.apache.cloudstack.affinity.AffinityGroupService;
@@ -222,7 +223,6 @@
222223
import com.cloud.user.dao.UserDao;
223224
import com.cloud.utils.NumbersUtil;
224225
import com.cloud.utils.Pair;
225-
import com.cloud.utils.StringUtils;
226226
import com.cloud.utils.UriUtils;
227227
import com.cloud.utils.component.ManagerBase;
228228
import com.cloud.utils.db.DB;
@@ -3184,7 +3184,7 @@ public DiskOffering updateDiskOffering(final UpdateDiskOfferingCmd cmd) {
31843184
throw new InvalidParameterValueException(String.format("Unable to update disk offering: %s by id user: %s because it is not root-admin or domain-admin", diskOfferingHandle.getUuid(), user.getUuid()));
31853185
}
31863186

3187-
final boolean updateNeeded = name != null || displayText != null || sortKey != null || displayDiskOffering != null || tags != null;
3187+
final boolean updateNeeded = shouldUpdateDiskOffering(name, displayText, sortKey, displayDiskOffering, tags);
31883188
final boolean detailsUpdateNeeded = !filteredDomainIds.equals(existingDomainIds) || !filteredZoneIds.equals(existingZoneIds);
31893189
if (!updateNeeded && !detailsUpdateNeeded) {
31903190
return _diskOfferingDao.findById(diskOfferingId);
@@ -3208,13 +3208,7 @@ public DiskOffering updateDiskOffering(final UpdateDiskOfferingCmd cmd) {
32083208
diskOffering.setDisplayOffering(displayDiskOffering);
32093209
}
32103210

3211-
if (tags != null){
3212-
if(tags.isBlank()){
3213-
diskOffering.setTags(null);
3214-
} else {
3215-
diskOffering.setTags(tags);
3216-
}
3217-
}
3211+
updateDiskOfferingTagsIfIsNotNull(tags, diskOffering);
32183212

32193213
if (updateNeeded && !_diskOfferingDao.update(diskOfferingId, diskOffering)) {
32203214
return null;
@@ -3251,6 +3245,31 @@ public DiskOffering updateDiskOffering(final UpdateDiskOfferingCmd cmd) {
32513245
return _diskOfferingDao.findById(diskOfferingId);
32523246
}
32533247

3248+
/**
3249+
* Check the tags parameters to the diskOffering
3250+
* <ul>
3251+
* <li>If tags is null, do nothing and return.</li>
3252+
* <li>If tags is not null, set tag to the diskOffering.</li>
3253+
* <li>If tags is an blank string, set null on diskOffering tag.</li>
3254+
* </ul>
3255+
*/
3256+
protected void updateDiskOfferingTagsIfIsNotNull(String tags, DiskOfferingVO diskOffering) {
3257+
if (tags == null) { return; }
3258+
if (StringUtils.isNotBlank(tags)) {
3259+
diskOffering.setTags(tags);
3260+
} else {
3261+
diskOffering.setTags(null);
3262+
}
3263+
}
3264+
3265+
/**
3266+
* Check if it needs to update any parameter when updateDiskoffering is called
3267+
* Verify if name or displayText are not blank, tags is not null, sortkey and displayDiskOffering is not null
3268+
*/
3269+
protected boolean shouldUpdateDiskOffering(String name, String displayText, Integer sortKey, Boolean displayDiskOffering, String tags) {
3270+
return StringUtils.isNotBlank(name) || StringUtils.isNotBlank(displayText) || tags != null || sortKey != null || displayDiskOffering != null;
3271+
}
3272+
32543273
@Override
32553274
@ActionEvent(eventType = EventTypes.EVENT_DISK_OFFERING_DELETE, eventDescription = "deleting disk offering")
32563275
public boolean deleteDiskOffering(final DeleteDiskOfferingCmd cmd) {

server/src/test/java/com/cloud/configuration/ConfigurationManagerTest.java

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import static org.mockito.ArgumentMatchers.anyInt;
2525
import static org.mockito.ArgumentMatchers.anyLong;
2626
import static org.mockito.ArgumentMatchers.anyString;
27+
import static org.mockito.ArgumentMatchers.nullable;
2728
import static org.mockito.Mockito.doNothing;
2829
import static org.mockito.Mockito.doThrow;
2930
import static org.mockito.Mockito.mock;
@@ -56,6 +57,7 @@
5657
import org.mockito.Mock;
5758
import org.mockito.Mockito;
5859
import org.mockito.MockitoAnnotations;
60+
import org.mockito.Spy;
5961

6062
import com.cloud.api.query.dao.NetworkOfferingJoinDao;
6163
import com.cloud.api.query.vo.NetworkOfferingJoinVO;
@@ -87,6 +89,7 @@
8789
import com.cloud.network.dao.PhysicalNetworkDao;
8890
import com.cloud.network.dao.PhysicalNetworkVO;
8991
import com.cloud.projects.ProjectManager;
92+
import com.cloud.storage.DiskOfferingVO;
9093
import com.cloud.storage.VolumeVO;
9194
import com.cloud.storage.dao.VolumeDao;
9295
import com.cloud.user.Account;
@@ -108,6 +111,7 @@ public class ConfigurationManagerTest {
108111

109112
private static final Logger s_logger = Logger.getLogger(ConfigurationManagerTest.class);
110113

114+
@Spy
111115
@InjectMocks
112116
ConfigurationManagerImpl configurationMgr = new ConfigurationManagerImpl();
113117

@@ -163,11 +167,12 @@ public class ConfigurationManagerTest {
163167
ImageStoreDao _imageStoreDao;
164168
@Mock
165169
ConfigurationDao _configDao;
170+
@Mock
171+
DiskOfferingVO diskOfferingVOMock;
166172

167173
VlanVO vlan = new VlanVO(Vlan.VlanType.VirtualNetwork, "vlantag", "vlangateway", "vlannetmask", 1L, "iprange", 1L, 1L, null, null, null);
168174

169175
private static final String MAXIMUM_DURATION_ALLOWED = "3600";
170-
171176
@Mock
172177
Network network;
173178
@Mock
@@ -938,4 +943,33 @@ public void validateMaximumIopsAndBytesLengthTestAllNull() {
938943
public void validateMaximumIopsAndBytesLengthTestDefaultLengthConfigs() {
939944
configurationMgr.validateMaximumIopsAndBytesLength(36000l, 36000l, 36000l, 36000l);
940945
}
946+
947+
@Test
948+
public void shouldUpdateDiskOfferingTests(){
949+
Assert.assertTrue(configurationMgr.shouldUpdateDiskOffering(Mockito.anyString(), Mockito.anyString(), Mockito.anyInt(), Mockito.anyBoolean(), Mockito.anyString()));
950+
Assert.assertTrue(configurationMgr.shouldUpdateDiskOffering(Mockito.anyString(), nullable(String.class), nullable(Integer.class), nullable(Boolean.class), nullable(String.class)));
951+
Assert.assertTrue(configurationMgr.shouldUpdateDiskOffering(nullable(String.class), Mockito.anyString(), nullable(Integer.class), nullable(Boolean.class), nullable(String.class)));
952+
Assert.assertTrue(configurationMgr.shouldUpdateDiskOffering(nullable(String.class), nullable(String.class), Mockito.anyInt(), nullable(Boolean.class), nullable(String.class)));
953+
Assert.assertTrue(configurationMgr.shouldUpdateDiskOffering(nullable(String.class), nullable(String.class), nullable(int.class), Mockito.anyBoolean(), nullable(String.class)));
954+
Assert.assertTrue(configurationMgr.shouldUpdateDiskOffering(nullable(String.class), nullable(String.class), nullable(int.class), nullable(Boolean.class), Mockito.anyString()));
955+
}
956+
957+
@Test
958+
public void shouldUpdateDiskOfferingTestFalse(){
959+
Assert.assertFalse(configurationMgr.shouldUpdateDiskOffering(null, null, null, null, null));
960+
}
961+
962+
@Test
963+
public void updateDiskOfferingTagsIfIsNotNullTestWhenTagsIsNull(){
964+
Mockito.doNothing().when(configurationMgr).updateDiskOfferingTagsIfIsNotNull(null, diskOfferingVOMock);
965+
this.configurationMgr.updateDiskOfferingTagsIfIsNotNull(null, diskOfferingVOMock);
966+
Mockito.verify(configurationMgr, Mockito.times(1)).updateDiskOfferingTagsIfIsNotNull(null, diskOfferingVOMock);
967+
}
968+
@Test
969+
public void updateDiskOfferingTagsIfIsNotNullTestWhenTagsIsNotNull(){
970+
String tags = "tags";
971+
Mockito.doNothing().when(configurationMgr).updateDiskOfferingTagsIfIsNotNull(tags, diskOfferingVOMock);
972+
this.configurationMgr.updateDiskOfferingTagsIfIsNotNull(tags, diskOfferingVOMock);
973+
Mockito.verify(configurationMgr, Mockito.times(1)).updateDiskOfferingTagsIfIsNotNull(tags, diskOfferingVOMock);
974+
}
941975
}

0 commit comments

Comments
 (0)