Inject hypervisor type and volume format on Quota tariffs (#8138)

This commit is contained in:
Fabricio Duarte 2023-11-14 05:12:58 -03:00 committed by GitHub
parent 05b9b6e2e7
commit df4cd2aae4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 204 additions and 96 deletions

View File

@ -455,7 +455,7 @@ public class QuotaManagerImpl extends ManagerBase implements QuotaManager {
}
jsInterpreter.injectVariable("resourceType", presetVariables.getResourceType());
jsInterpreter.injectStringVariable("resourceType", presetVariables.getResourceType());
jsInterpreter.injectVariable("value", presetVariables.getValue().toString());
jsInterpreter.injectVariable("zone", presetVariables.getZone().toString());
}

View File

@ -27,6 +27,7 @@ import java.util.stream.Collectors;
import javax.inject.Inject;
import com.cloud.hypervisor.Hypervisor;
import org.apache.cloudstack.acl.RoleVO;
import org.apache.cloudstack.acl.dao.RoleDao;
import org.apache.cloudstack.backup.BackupOfferingVO;
@ -65,6 +66,7 @@ import com.cloud.storage.DiskOfferingVO;
import com.cloud.storage.GuestOSVO;
import com.cloud.storage.Snapshot;
import com.cloud.storage.SnapshotVO;
import com.cloud.storage.Storage.ImageFormat;
import com.cloud.storage.VMTemplateVO;
import com.cloud.storage.VolumeVO;
import com.cloud.storage.dao.DiskOfferingDao;
@ -318,6 +320,10 @@ public class PresetVariableHelper {
value.setTags(getPresetVariableValueResourceTags(vmId, ResourceObjectType.UserVm));
value.setTemplate(getPresetVariableValueTemplate(vmVo.getTemplateId()));
Hypervisor.HypervisorType hypervisorType = vmVo.getHypervisorType();
if (hypervisorType != null) {
value.setHypervisorType(hypervisorType.name());
}
}
protected void logNotLoadingMessageInTrace(String resource, int usageType) {
@ -470,6 +476,11 @@ public class PresetVariableHelper {
value.setTags(getPresetVariableValueResourceTags(volumeId, ResourceObjectType.Volume));
value.setSize(ByteScaleUtils.bytesToMebibytes(volumeVo.getSize()));
ImageFormat format = volumeVo.getFormat();
if (format != null) {
value.setVolumeFormat(format.name());
}
}
protected GenericPresetVariable getPresetVariableValueDiskOffering(Long diskOfferingId) {
@ -558,6 +569,10 @@ public class PresetVariableHelper {
value.setSnapshotType(Snapshot.Type.values()[snapshotVo.getSnapshotType()]);
value.setStorage(getPresetVariableValueStorage(getSnapshotDataStoreId(snapshotId, usageRecord.getZoneId()), usageType));
value.setTags(getPresetVariableValueResourceTags(snapshotId, ResourceObjectType.Snapshot));
Hypervisor.HypervisorType hypervisorType = snapshotVo.getHypervisorType();
if (hypervisorType != null) {
value.setHypervisorType(hypervisorType.name());
}
}
protected SnapshotDataStoreVO getSnapshotImageStoreRef(long snapshotId, long zoneId) {
@ -621,6 +636,11 @@ public class PresetVariableHelper {
value.setName(vmSnapshotVo.getName());
value.setTags(getPresetVariableValueResourceTags(vmSnapshotId, ResourceObjectType.VMSnapshot));
value.setVmSnapshotType(vmSnapshotVo.getType());
VMInstanceVO vmVo = vmInstanceDao.findByIdIncludingRemoved(vmSnapshotVo.getVmId());
if (vmVo != null && vmVo.getHypervisorType() != null) {
value.setHypervisorType(vmVo.getHypervisorType().name());
}
}
protected void loadPresetVariableValueForBackup(UsageVO usageRecord, Value value) {

View File

@ -41,6 +41,8 @@ public class Value extends GenericPresetVariable {
private Storage storage;
private ComputingResources computingResources;
private BackupOffering backupOffering;
private String hypervisorType;
private String volumeFormat;
public Host getHost() {
return host;
@ -185,4 +187,22 @@ public class Value extends GenericPresetVariable {
this.backupOffering = backupOffering;
fieldNamesToIncludeInToString.add("backupOffering");
}
public void setHypervisorType(String hypervisorType) {
this.hypervisorType = hypervisorType;
fieldNamesToIncludeInToString.add("hypervisorType");
}
public String getHypervisorType() {
return hypervisorType;
}
public void setVolumeFormat(String volumeFormat) {
this.volumeFormat = volumeFormat;
fieldNamesToIncludeInToString.add("volumeFormat");
}
public String getVolumeFormat() {
return volumeFormat;
}
}

View File

@ -267,7 +267,7 @@ public class QuotaManagerImplTest {
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("account"), Mockito.anyString());
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("domain"), Mockito.anyString());
Mockito.verify(jsInterpreterMock, Mockito.never()).injectVariable(Mockito.eq("project"), Mockito.anyString());
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("resourceType"), Mockito.anyString());
Mockito.verify(jsInterpreterMock).injectStringVariable(Mockito.eq("resourceType"), Mockito.anyString());
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("value"), Mockito.anyString());
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("zone"), Mockito.anyString());
}
@ -288,7 +288,7 @@ public class QuotaManagerImplTest {
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("account"), Mockito.anyString());
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("domain"), Mockito.anyString());
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("project"), Mockito.anyString());
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("resourceType"), Mockito.anyString());
Mockito.verify(jsInterpreterMock).injectStringVariable(Mockito.eq("resourceType"), Mockito.anyString());
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("value"), Mockito.anyString());
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("zone"), Mockito.anyString());
}

View File

@ -27,6 +27,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import com.cloud.hypervisor.Hypervisor;
import org.apache.cloudstack.acl.RoleType;
import org.apache.cloudstack.acl.RoleVO;
import org.apache.cloudstack.acl.dao.RoleDao;
@ -70,6 +71,7 @@ import com.cloud.storage.GuestOSVO;
import com.cloud.storage.ScopeType;
import com.cloud.storage.Snapshot;
import com.cloud.storage.SnapshotVO;
import com.cloud.storage.Storage.ImageFormat;
import com.cloud.storage.Storage.ProvisioningType;
import com.cloud.storage.VMTemplateVO;
import com.cloud.storage.VolumeVO;
@ -485,38 +487,42 @@ public class PresetVariableHelperTest {
@Test
public void loadPresetVariableValueForRunningAndAllocatedVmTestRecordIsRunningOrAllocatedVmSetFields() {
Value expected = getValueForTests();
for (Hypervisor.HypervisorType hypervisorType : Hypervisor.HypervisorType.values()) {
Value expected = getValueForTests();
Mockito.doReturn(vmInstanceVoMock).when(vmInstanceDaoMock).findByIdIncludingRemoved(Mockito.anyLong());
Mockito.doReturn(vmInstanceVoMock).when(vmInstanceDaoMock).findByIdIncludingRemoved(Mockito.anyLong());
mockMethodValidateIfObjectIsNull();
mockMethodValidateIfObjectIsNull();
Mockito.doNothing().when(presetVariableHelperSpy).setPresetVariableHostInValueIfUsageTypeIsRunningVm(Mockito.any(Value.class), Mockito.anyInt(),
Mockito.any(VMInstanceVO.class));
Mockito.doNothing().when(presetVariableHelperSpy).setPresetVariableHostInValueIfUsageTypeIsRunningVm(Mockito.any(Value.class), Mockito.anyInt(),
Mockito.any(VMInstanceVO.class));
Mockito.doReturn(expected.getId()).when(vmInstanceVoMock).getUuid();
Mockito.doReturn(expected.getName()).when(vmInstanceVoMock).getHostName();
Mockito.doReturn(expected.getOsName()).when(presetVariableHelperSpy).getPresetVariableValueOsName(Mockito.anyLong());
Mockito.doNothing().when(presetVariableHelperSpy).setPresetVariableValueServiceOfferingAndComputingResources(Mockito.any(), Mockito.anyInt(), Mockito.any());
Mockito.doReturn(expected.getTags()).when(presetVariableHelperSpy).getPresetVariableValueResourceTags(Mockito.anyLong(), Mockito.any(ResourceObjectType.class));
Mockito.doReturn(expected.getTemplate()).when(presetVariableHelperSpy).getPresetVariableValueTemplate(Mockito.anyLong());
Mockito.doReturn(expected.getId()).when(vmInstanceVoMock).getUuid();
Mockito.doReturn(expected.getName()).when(vmInstanceVoMock).getHostName();
Mockito.doReturn(expected.getOsName()).when(presetVariableHelperSpy).getPresetVariableValueOsName(Mockito.anyLong());
Mockito.doNothing().when(presetVariableHelperSpy).setPresetVariableValueServiceOfferingAndComputingResources(Mockito.any(), Mockito.anyInt(), Mockito.any());
Mockito.doReturn(expected.getTags()).when(presetVariableHelperSpy).getPresetVariableValueResourceTags(Mockito.anyLong(), Mockito.any(ResourceObjectType.class));
Mockito.doReturn(expected.getTemplate()).when(presetVariableHelperSpy).getPresetVariableValueTemplate(Mockito.anyLong());
Mockito.doReturn(hypervisorType).when(vmInstanceVoMock).getHypervisorType();
runningAndAllocatedVmUsageTypes.forEach(type -> {
Mockito.doReturn(type).when(usageVoMock).getUsageType();
runningAndAllocatedVmUsageTypes.forEach(type -> {
Mockito.doReturn(type).when(usageVoMock).getUsageType();
Value result = new Value();
presetVariableHelperSpy.loadPresetVariableValueForRunningAndAllocatedVm(usageVoMock, result);
Value result = new Value();
presetVariableHelperSpy.loadPresetVariableValueForRunningAndAllocatedVm(usageVoMock, result);
assertPresetVariableIdAndName(expected, result);
Assert.assertEquals(expected.getOsName(), result.getOsName());
Assert.assertEquals(expected.getTags(), result.getTags());
Assert.assertEquals(expected.getTemplate(), result.getTemplate());
assertPresetVariableIdAndName(expected, result);
Assert.assertEquals(expected.getOsName(), result.getOsName());
Assert.assertEquals(expected.getTags(), result.getTags());
Assert.assertEquals(expected.getTemplate(), result.getTemplate());
Assert.assertEquals(hypervisorType.name(), result.getHypervisorType());
validateFieldNamesToIncludeInToString(Arrays.asList("id", "name", "osName", "tags", "template"), result);
});
validateFieldNamesToIncludeInToString(Arrays.asList("id", "name", "osName", "tags", "template", "hypervisorType"), result);
});
}
Mockito.verify(presetVariableHelperSpy, Mockito.times(runningAndAllocatedVmUsageTypes.size())).getPresetVariableValueResourceTags(Mockito.anyLong(),
Mockito.eq(ResourceObjectType.UserVm));
Mockito.verify(presetVariableHelperSpy, Mockito.times(runningAndAllocatedVmUsageTypes.size() * Hypervisor.HypervisorType.values().length))
.getPresetVariableValueResourceTags(Mockito.anyLong(), Mockito.eq(ResourceObjectType.UserVm));
}
@Test
@ -636,75 +642,85 @@ public class PresetVariableHelperTest {
@Test
public void loadPresetVariableValueForVolumeTestRecordIsVolumeAndHasStorageSetFields() {
Value expected = getValueForTests();
for (ImageFormat imageFormat : ImageFormat.values()) {
Value expected = getValueForTests();
VolumeVO volumeVoMock = Mockito.mock(VolumeVO.class);
Mockito.doReturn(volumeVoMock).when(volumeDaoMock).findByIdIncludingRemoved(Mockito.anyLong());
Mockito.doReturn(1l).when(volumeVoMock).getPoolId();
VolumeVO volumeVoMock = Mockito.mock(VolumeVO.class);
Mockito.doReturn(volumeVoMock).when(volumeDaoMock).findByIdIncludingRemoved(Mockito.anyLong());
Mockito.doReturn(1l).when(volumeVoMock).getPoolId();
mockMethodValidateIfObjectIsNull();
mockMethodValidateIfObjectIsNull();
Mockito.doReturn(expected.getId()).when(volumeVoMock).getUuid();
Mockito.doReturn(expected.getName()).when(volumeVoMock).getName();
Mockito.doReturn(expected.getDiskOffering()).when(presetVariableHelperSpy).getPresetVariableValueDiskOffering(Mockito.anyLong());
Mockito.doReturn(expected.getProvisioningType()).when(volumeVoMock).getProvisioningType();
Mockito.doReturn(expected.getStorage()).when(presetVariableHelperSpy).getPresetVariableValueStorage(Mockito.anyLong(), Mockito.anyInt());
Mockito.doReturn(expected.getTags()).when(presetVariableHelperSpy).getPresetVariableValueResourceTags(Mockito.anyLong(), Mockito.any(ResourceObjectType.class));
Mockito.doReturn(expected.getSize()).when(volumeVoMock).getSize();
Mockito.doReturn(expected.getId()).when(volumeVoMock).getUuid();
Mockito.doReturn(expected.getName()).when(volumeVoMock).getName();
Mockito.doReturn(expected.getDiskOffering()).when(presetVariableHelperSpy).getPresetVariableValueDiskOffering(Mockito.anyLong());
Mockito.doReturn(expected.getProvisioningType()).when(volumeVoMock).getProvisioningType();
Mockito.doReturn(expected.getStorage()).when(presetVariableHelperSpy).getPresetVariableValueStorage(Mockito.anyLong(), Mockito.anyInt());
Mockito.doReturn(expected.getTags()).when(presetVariableHelperSpy).getPresetVariableValueResourceTags(Mockito.anyLong(), Mockito.any(ResourceObjectType.class));
Mockito.doReturn(expected.getSize()).when(volumeVoMock).getSize();
Mockito.doReturn(imageFormat).when(volumeVoMock).getFormat();
Mockito.doReturn(UsageTypes.VOLUME).when(usageVoMock).getUsageType();
Mockito.doReturn(UsageTypes.VOLUME).when(usageVoMock).getUsageType();
Value result = new Value();
presetVariableHelperSpy.loadPresetVariableValueForVolume(usageVoMock, result);
Value result = new Value();
presetVariableHelperSpy.loadPresetVariableValueForVolume(usageVoMock, result);
Long expectedSize = ByteScaleUtils.bytesToMebibytes(expected.getSize());
Long expectedSize = ByteScaleUtils.bytesToMebibytes(expected.getSize());
assertPresetVariableIdAndName(expected, result);
Assert.assertEquals(expected.getDiskOffering(), result.getDiskOffering());
Assert.assertEquals(expected.getProvisioningType(), result.getProvisioningType());
Assert.assertEquals(expected.getStorage(), result.getStorage());
Assert.assertEquals(expected.getTags(), result.getTags());
Assert.assertEquals(expectedSize, result.getSize());
assertPresetVariableIdAndName(expected, result);
Assert.assertEquals(expected.getDiskOffering(), result.getDiskOffering());
Assert.assertEquals(expected.getProvisioningType(), result.getProvisioningType());
Assert.assertEquals(expected.getStorage(), result.getStorage());
Assert.assertEquals(expected.getTags(), result.getTags());
Assert.assertEquals(expectedSize, result.getSize());
Assert.assertEquals(imageFormat.name(), result.getVolumeFormat());
validateFieldNamesToIncludeInToString(Arrays.asList("id", "name", "diskOffering", "provisioningType", "storage", "tags", "size"), result);
validateFieldNamesToIncludeInToString(Arrays.asList("id", "name", "diskOffering", "provisioningType", "storage", "tags", "size", "volumeFormat"), result);
}
Mockito.verify(presetVariableHelperSpy).getPresetVariableValueResourceTags(Mockito.anyLong(), Mockito.eq(ResourceObjectType.Volume));
Mockito.verify(presetVariableHelperSpy, Mockito.times(ImageFormat.values().length)).getPresetVariableValueResourceTags(Mockito.anyLong(),
Mockito.eq(ResourceObjectType.Volume));
}
@Test
public void loadPresetVariableValueForVolumeTestRecordIsVolumeAndDoesNotHaveStorageSetFields() {
Value expected = getValueForTests();
for (ImageFormat imageFormat : ImageFormat.values()) {
Value expected = getValueForTests();
VolumeVO volumeVoMock = Mockito.mock(VolumeVO.class);
Mockito.doReturn(volumeVoMock).when(volumeDaoMock).findByIdIncludingRemoved(Mockito.anyLong());
Mockito.doReturn(null).when(volumeVoMock).getPoolId();
VolumeVO volumeVoMock = Mockito.mock(VolumeVO.class);
Mockito.doReturn(volumeVoMock).when(volumeDaoMock).findByIdIncludingRemoved(Mockito.anyLong());
Mockito.doReturn(null).when(volumeVoMock).getPoolId();
mockMethodValidateIfObjectIsNull();
mockMethodValidateIfObjectIsNull();
Mockito.doReturn(expected.getId()).when(volumeVoMock).getUuid();
Mockito.doReturn(expected.getName()).when(volumeVoMock).getName();
Mockito.doReturn(expected.getDiskOffering()).when(presetVariableHelperSpy).getPresetVariableValueDiskOffering(Mockito.anyLong());
Mockito.doReturn(expected.getProvisioningType()).when(volumeVoMock).getProvisioningType();
Mockito.doReturn(expected.getTags()).when(presetVariableHelperSpy).getPresetVariableValueResourceTags(Mockito.anyLong(), Mockito.any(ResourceObjectType.class));
Mockito.doReturn(expected.getSize()).when(volumeVoMock).getSize();
Mockito.doReturn(expected.getId()).when(volumeVoMock).getUuid();
Mockito.doReturn(expected.getName()).when(volumeVoMock).getName();
Mockito.doReturn(expected.getDiskOffering()).when(presetVariableHelperSpy).getPresetVariableValueDiskOffering(Mockito.anyLong());
Mockito.doReturn(expected.getProvisioningType()).when(volumeVoMock).getProvisioningType();
Mockito.doReturn(expected.getTags()).when(presetVariableHelperSpy).getPresetVariableValueResourceTags(Mockito.anyLong(), Mockito.any(ResourceObjectType.class));
Mockito.doReturn(expected.getSize()).when(volumeVoMock).getSize();
Mockito.doReturn(imageFormat).when(volumeVoMock).getFormat();
Mockito.doReturn(UsageTypes.VOLUME).when(usageVoMock).getUsageType();
Mockito.doReturn(UsageTypes.VOLUME).when(usageVoMock).getUsageType();
Value result = new Value();
presetVariableHelperSpy.loadPresetVariableValueForVolume(usageVoMock, result);
Value result = new Value();
presetVariableHelperSpy.loadPresetVariableValueForVolume(usageVoMock, result);
Long expectedSize = ByteScaleUtils.bytesToMebibytes(expected.getSize());
Long expectedSize = ByteScaleUtils.bytesToMebibytes(expected.getSize());
assertPresetVariableIdAndName(expected, result);
Assert.assertEquals(expected.getDiskOffering(), result.getDiskOffering());
Assert.assertEquals(expected.getProvisioningType(), result.getProvisioningType());
Assert.assertEquals(null, result.getStorage());
Assert.assertEquals(expected.getTags(), result.getTags());
Assert.assertEquals(expectedSize, result.getSize());
assertPresetVariableIdAndName(expected, result);
Assert.assertEquals(expected.getDiskOffering(), result.getDiskOffering());
Assert.assertEquals(expected.getProvisioningType(), result.getProvisioningType());
Assert.assertNull(result.getStorage());
Assert.assertEquals(expected.getTags(), result.getTags());
Assert.assertEquals(expectedSize, result.getSize());
Assert.assertEquals(imageFormat.name(), result.getVolumeFormat());
validateFieldNamesToIncludeInToString(Arrays.asList("id", "name", "diskOffering", "provisioningType", "tags", "size"), result);
validateFieldNamesToIncludeInToString(Arrays.asList("id", "name", "diskOffering", "provisioningType", "tags", "size", "volumeFormat"), result);
}
Mockito.verify(presetVariableHelperSpy).getPresetVariableValueResourceTags(Mockito.anyLong(), Mockito.eq(ResourceObjectType.Volume));
Mockito.verify(presetVariableHelperSpy, Mockito.times(ImageFormat.values().length)).getPresetVariableValueResourceTags(Mockito.anyLong(),
Mockito.eq(ResourceObjectType.Volume));
}
@Test
@ -852,37 +868,42 @@ public class PresetVariableHelperTest {
@Test
public void loadPresetVariableValueForSnapshotTestRecordIsSnapshotSetFields() {
Value expected = getValueForTests();
for (Hypervisor.HypervisorType hypervisorType : Hypervisor.HypervisorType.values()) {
Value expected = getValueForTests();
SnapshotVO snapshotVoMock = Mockito.mock(SnapshotVO.class);
Mockito.doReturn(snapshotVoMock).when(snapshotDaoMock).findByIdIncludingRemoved(Mockito.anyLong());
SnapshotVO snapshotVoMock = Mockito.mock(SnapshotVO.class);
Mockito.doReturn(snapshotVoMock).when(snapshotDaoMock).findByIdIncludingRemoved(Mockito.anyLong());
mockMethodValidateIfObjectIsNull();
mockMethodValidateIfObjectIsNull();
Mockito.doReturn(expected.getId()).when(snapshotVoMock).getUuid();
Mockito.doReturn(expected.getName()).when(snapshotVoMock).getName();
Mockito.doReturn(expected.getSize()).when(snapshotVoMock).getSize();
Mockito.doReturn((short) 3).when(snapshotVoMock).getSnapshotType();
Mockito.doReturn(1l).when(presetVariableHelperSpy).getSnapshotDataStoreId(Mockito.anyLong(), Mockito.anyLong());
Mockito.doReturn(expected.getStorage()).when(presetVariableHelperSpy).getPresetVariableValueStorage(Mockito.anyLong(), Mockito.anyInt());
Mockito.doReturn(expected.getTags()).when(presetVariableHelperSpy).getPresetVariableValueResourceTags(Mockito.anyLong(), Mockito.any(ResourceObjectType.class));
Mockito.doReturn(expected.getId()).when(snapshotVoMock).getUuid();
Mockito.doReturn(expected.getName()).when(snapshotVoMock).getName();
Mockito.doReturn(expected.getSize()).when(snapshotVoMock).getSize();
Mockito.doReturn((short) 3).when(snapshotVoMock).getSnapshotType();
Mockito.doReturn(1l).when(presetVariableHelperSpy).getSnapshotDataStoreId(Mockito.anyLong(), Mockito.anyLong());
Mockito.doReturn(expected.getStorage()).when(presetVariableHelperSpy).getPresetVariableValueStorage(Mockito.anyLong(), Mockito.anyInt());
Mockito.doReturn(expected.getTags()).when(presetVariableHelperSpy).getPresetVariableValueResourceTags(Mockito.anyLong(), Mockito.any(ResourceObjectType.class));
Mockito.doReturn(hypervisorType).when(snapshotVoMock).getHypervisorType();
Mockito.doReturn(UsageTypes.SNAPSHOT).when(usageVoMock).getUsageType();
Mockito.doReturn(UsageTypes.SNAPSHOT).when(usageVoMock).getUsageType();
Value result = new Value();
presetVariableHelperSpy.loadPresetVariableValueForSnapshot(usageVoMock, result);
Value result = new Value();
presetVariableHelperSpy.loadPresetVariableValueForSnapshot(usageVoMock, result);
Long expectedSize = ByteScaleUtils.bytesToMebibytes(expected.getSize());
Long expectedSize = ByteScaleUtils.bytesToMebibytes(expected.getSize());
assertPresetVariableIdAndName(expected, result);
Assert.assertEquals(expected.getSnapshotType(), result.getSnapshotType());
Assert.assertEquals(expected.getStorage(), result.getStorage());
Assert.assertEquals(expected.getTags(), result.getTags());
Assert.assertEquals(expectedSize, result.getSize());
assertPresetVariableIdAndName(expected, result);
Assert.assertEquals(expected.getSnapshotType(), result.getSnapshotType());
Assert.assertEquals(expected.getStorage(), result.getStorage());
Assert.assertEquals(expected.getTags(), result.getTags());
Assert.assertEquals(expectedSize, result.getSize());
Assert.assertEquals(hypervisorType.name(), result.getHypervisorType());
validateFieldNamesToIncludeInToString(Arrays.asList("id", "name", "snapshotType", "storage", "tags", "size"), result);
validateFieldNamesToIncludeInToString(Arrays.asList("id", "name", "snapshotType", "storage", "tags", "size", "hypervisorType"), result);
}
Mockito.verify(presetVariableHelperSpy).getPresetVariableValueResourceTags(Mockito.anyLong(), Mockito.eq(ResourceObjectType.Snapshot));
Mockito.verify(presetVariableHelperSpy, Mockito.times(Hypervisor.HypervisorType.values().length)).getPresetVariableValueResourceTags(Mockito.anyLong(),
Mockito.eq(ResourceObjectType.Snapshot));
}

View File

@ -136,4 +136,18 @@ public class ValueTest {
variable.setBackupOffering(null);
Assert.assertTrue(variable.fieldNamesToIncludeInToString.contains("backupOffering"));
}
@Test
public void setHypervisorTypeTestAddFieldHypervisorTypeToCollection() {
Value variable = new Value();
variable.setHypervisorType(null);
Assert.assertTrue(variable.fieldNamesToIncludeInToString.contains("hypervisorType"));
}
@Test
public void setVolumeFormatTestAddFieldVolumeFormatToCollection() {
Value variable = new Value();
variable.setVolumeFormat(null);
Assert.assertTrue(variable.fieldNamesToIncludeInToString.contains("volumeFormat"));
}
}

View File

@ -78,7 +78,7 @@ public class JsInterpreter implements Closeable {
}
/**
* Adds the parameters to a Map that will be converted to JS variables right before executing the scripts..
* Adds the parameters to a Map that will be converted to JS variables right before executing the script.
* @param key The name of the variable.
* @param value The value of the variable.
*/
@ -87,6 +87,21 @@ public class JsInterpreter implements Closeable {
variables.put(key, value);
}
/**
* Adds the parameter, surrounded by double quotes, to a Map that will be converted to a JS variable right before executing the script.
* @param key The name of the variable.
* @param value The value of the variable.
*/
public void injectStringVariable(String key, String value) {
if (value == null) {
logger.trace(String.format("Not injecting [%s] because its value is null.", key));
return;
}
value = String.format("\"%s\"", value);
logger.trace(String.format(injectingLogMessage, key, value));
variables.put(key, value);
}
/**
* Injects the variables to the script and execute it.
* @param script Code to be executed.

View File

@ -179,4 +179,22 @@ public class JsInterpreterTest {
Assert.assertEquals(scriptEngineMock, jsInterpreterSpy.interpreter);
Mockito.verify(nashornScriptEngineFactoryMock).getScriptEngine("--no-java");
}
@Test
public void injectStringVariableTestNullValueDoNothing() {
jsInterpreterSpy.variables = new LinkedHashMap<>();
jsInterpreterSpy.injectStringVariable("a", null);
Assert.assertTrue(jsInterpreterSpy.variables.isEmpty());
}
@Test
public void injectStringVariableTestNotNullValueSurroundWithDoubleQuotes() {
jsInterpreterSpy.variables = new LinkedHashMap<>();
jsInterpreterSpy.injectStringVariable("a", "b");
Assert.assertEquals(jsInterpreterSpy.variables.get("a"), "\"b\"");
}
}