Skip to content

Commit df4cd2a

Browse files
authored
Inject hypervisor type and volume format on Quota tariffs (#8138)
1 parent 05b9b6e commit df4cd2a

File tree

8 files changed

+204
-96
lines changed

8 files changed

+204
-96
lines changed

framework/quota/src/main/java/org/apache/cloudstack/quota/QuotaManagerImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,7 @@ protected void injectPresetVariablesIntoJsInterpreter(JsInterpreter jsInterprete
455455

456456
}
457457

458-
jsInterpreter.injectVariable("resourceType", presetVariables.getResourceType());
458+
jsInterpreter.injectStringVariable("resourceType", presetVariables.getResourceType());
459459
jsInterpreter.injectVariable("value", presetVariables.getValue().toString());
460460
jsInterpreter.injectVariable("zone", presetVariables.getZone().toString());
461461
}

framework/quota/src/main/java/org/apache/cloudstack/quota/activationrule/presetvariables/PresetVariableHelper.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import javax.inject.Inject;
2929

30+
import com.cloud.hypervisor.Hypervisor;
3031
import org.apache.cloudstack.acl.RoleVO;
3132
import org.apache.cloudstack.acl.dao.RoleDao;
3233
import org.apache.cloudstack.backup.BackupOfferingVO;
@@ -65,6 +66,7 @@
6566
import com.cloud.storage.GuestOSVO;
6667
import com.cloud.storage.Snapshot;
6768
import com.cloud.storage.SnapshotVO;
69+
import com.cloud.storage.Storage.ImageFormat;
6870
import com.cloud.storage.VMTemplateVO;
6971
import com.cloud.storage.VolumeVO;
7072
import com.cloud.storage.dao.DiskOfferingDao;
@@ -318,6 +320,10 @@ protected void loadPresetVariableValueForRunningAndAllocatedVm(UsageVO usageReco
318320

319321
value.setTags(getPresetVariableValueResourceTags(vmId, ResourceObjectType.UserVm));
320322
value.setTemplate(getPresetVariableValueTemplate(vmVo.getTemplateId()));
323+
Hypervisor.HypervisorType hypervisorType = vmVo.getHypervisorType();
324+
if (hypervisorType != null) {
325+
value.setHypervisorType(hypervisorType.name());
326+
}
321327
}
322328

323329
protected void logNotLoadingMessageInTrace(String resource, int usageType) {
@@ -470,6 +476,11 @@ protected void loadPresetVariableValueForVolume(UsageVO usageRecord, Value value
470476

471477
value.setTags(getPresetVariableValueResourceTags(volumeId, ResourceObjectType.Volume));
472478
value.setSize(ByteScaleUtils.bytesToMebibytes(volumeVo.getSize()));
479+
480+
ImageFormat format = volumeVo.getFormat();
481+
if (format != null) {
482+
value.setVolumeFormat(format.name());
483+
}
473484
}
474485

475486
protected GenericPresetVariable getPresetVariableValueDiskOffering(Long diskOfferingId) {
@@ -558,6 +569,10 @@ protected void loadPresetVariableValueForSnapshot(UsageVO usageRecord, Value val
558569
value.setSnapshotType(Snapshot.Type.values()[snapshotVo.getSnapshotType()]);
559570
value.setStorage(getPresetVariableValueStorage(getSnapshotDataStoreId(snapshotId, usageRecord.getZoneId()), usageType));
560571
value.setTags(getPresetVariableValueResourceTags(snapshotId, ResourceObjectType.Snapshot));
572+
Hypervisor.HypervisorType hypervisorType = snapshotVo.getHypervisorType();
573+
if (hypervisorType != null) {
574+
value.setHypervisorType(hypervisorType.name());
575+
}
561576
}
562577

563578
protected SnapshotDataStoreVO getSnapshotImageStoreRef(long snapshotId, long zoneId) {
@@ -621,6 +636,11 @@ protected void loadPresetVariableValueForVmSnapshot(UsageVO usageRecord, Value v
621636
value.setName(vmSnapshotVo.getName());
622637
value.setTags(getPresetVariableValueResourceTags(vmSnapshotId, ResourceObjectType.VMSnapshot));
623638
value.setVmSnapshotType(vmSnapshotVo.getType());
639+
640+
VMInstanceVO vmVo = vmInstanceDao.findByIdIncludingRemoved(vmSnapshotVo.getVmId());
641+
if (vmVo != null && vmVo.getHypervisorType() != null) {
642+
value.setHypervisorType(vmVo.getHypervisorType().name());
643+
}
624644
}
625645

626646
protected void loadPresetVariableValueForBackup(UsageVO usageRecord, Value value) {

framework/quota/src/main/java/org/apache/cloudstack/quota/activationrule/presetvariables/Value.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ public class Value extends GenericPresetVariable {
4141
private Storage storage;
4242
private ComputingResources computingResources;
4343
private BackupOffering backupOffering;
44+
private String hypervisorType;
45+
private String volumeFormat;
4446

4547
public Host getHost() {
4648
return host;
@@ -185,4 +187,22 @@ public void setBackupOffering(BackupOffering backupOffering) {
185187
this.backupOffering = backupOffering;
186188
fieldNamesToIncludeInToString.add("backupOffering");
187189
}
190+
191+
public void setHypervisorType(String hypervisorType) {
192+
this.hypervisorType = hypervisorType;
193+
fieldNamesToIncludeInToString.add("hypervisorType");
194+
}
195+
196+
public String getHypervisorType() {
197+
return hypervisorType;
198+
}
199+
200+
public void setVolumeFormat(String volumeFormat) {
201+
this.volumeFormat = volumeFormat;
202+
fieldNamesToIncludeInToString.add("volumeFormat");
203+
}
204+
205+
public String getVolumeFormat() {
206+
return volumeFormat;
207+
}
188208
}

framework/quota/src/test/java/org/apache/cloudstack/quota/QuotaManagerImplTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ public void injectPresetVariablesIntoJsInterpreterTestProjectIsNullDoNotInjectPr
267267
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("account"), Mockito.anyString());
268268
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("domain"), Mockito.anyString());
269269
Mockito.verify(jsInterpreterMock, Mockito.never()).injectVariable(Mockito.eq("project"), Mockito.anyString());
270-
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("resourceType"), Mockito.anyString());
270+
Mockito.verify(jsInterpreterMock).injectStringVariable(Mockito.eq("resourceType"), Mockito.anyString());
271271
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("value"), Mockito.anyString());
272272
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("zone"), Mockito.anyString());
273273
}
@@ -288,7 +288,7 @@ public void injectPresetVariablesIntoJsInterpreterTestProjectIsNotNullInjectProj
288288
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("account"), Mockito.anyString());
289289
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("domain"), Mockito.anyString());
290290
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("project"), Mockito.anyString());
291-
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("resourceType"), Mockito.anyString());
291+
Mockito.verify(jsInterpreterMock).injectStringVariable(Mockito.eq("resourceType"), Mockito.anyString());
292292
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("value"), Mockito.anyString());
293293
Mockito.verify(jsInterpreterMock).injectVariable(Mockito.eq("zone"), Mockito.anyString());
294294
}

0 commit comments

Comments
 (0)