mprokopchuk commented on code in PR #6939:
URL: https://github.com/apache/cloudstack/pull/6939#discussion_r1041490170
##########
engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java:
##########
@@ -485,15 +486,22 @@ public void doInTransactionWithoutResult(final
TransactionStatus status) throws
s_logger.debug("Allocating disks for " + vmFinal);
}
- String rootVolumeName = String.format("ROOT-%s",
vmFinal.getId());
- if (template.getFormat() == ImageFormat.ISO) {
- volumeMgr.allocateRawVolume(Type.ROOT, rootVolumeName,
rootDiskOfferingInfo.getDiskOffering(), rootDiskOfferingInfo.getSize(),
- rootDiskOfferingInfo.getMinIops(),
rootDiskOfferingInfo.getMaxIops(), vmFinal, template, owner, null);
- } else if (template.getFormat() == ImageFormat.BAREMETAL) {
- s_logger.debug(String.format("%s has format [%s]. Skipping
ROOT volume [%s] allocation.", template.toString(), ImageFormat.BAREMETAL,
rootVolumeName));
- } else {
- volumeMgr.allocateTemplatedVolumes(Type.ROOT,
rootVolumeName, rootDiskOfferingInfo.getDiskOffering(), rootDiskSizeFinal,
- rootDiskOfferingInfo.getMinIops(),
rootDiskOfferingInfo.getMaxIops(), template, vmFinal, owner);
+ // Create new Volume context and inject event resource type,
id and details to generate VOLUME.CREATE event for the ROOT disk.
+ CallContext volumeContext =
CallContext.register(CallContext.current(), ApiCommandResourceType.Volume);
+ try {
+ String rootVolumeName = String.format("ROOT-%s",
vmFinal.getId());
+ if (template.getFormat() == ImageFormat.ISO) {
+ volumeMgr.allocateRawVolume(Type.ROOT, rootVolumeName,
rootDiskOfferingInfo.getDiskOffering(), rootDiskOfferingInfo.getSize(),
+ rootDiskOfferingInfo.getMinIops(),
rootDiskOfferingInfo.getMaxIops(), vmFinal, template, owner, null);
+ } else if (template.getFormat() == ImageFormat.BAREMETAL) {
+ s_logger.debug(String.format("%s has format [%s].
Skipping ROOT volume [%s] allocation.", template.toString(),
ImageFormat.BAREMETAL, rootVolumeName));
+ } else {
+ volumeMgr.allocateTemplatedVolumes(Type.ROOT,
rootVolumeName, rootDiskOfferingInfo.getDiskOffering(), rootDiskSizeFinal,
+ rootDiskOfferingInfo.getMinIops(),
rootDiskOfferingInfo.getMaxIops(), template, vmFinal, owner);
+ }
+ } finally {
+ // Remove volumeContext and pop vmContext back
+ CallContext.unregister();
}
Review Comment:
Done.
##########
engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java:
##########
@@ -871,7 +879,16 @@ public DiskProfile allocateRawVolume(Type type, String
name, DiskOffering offeri
_resourceLimitMgr.incrementResourceCount(vm.getAccountId(),
ResourceType.volume, vol.isDisplayVolume());
_resourceLimitMgr.incrementResourceCount(vm.getAccountId(),
ResourceType.primary_storage, vol.isDisplayVolume(), new Long(vol.getSize()));
}
- return toDiskProfile(vol, offering);
+ DiskProfile diskProfile = toDiskProfile(vol, offering);
+
+ // Set context information for VOLUME.CREATE event for ROOT disk.
+ CallContext volumeContext = CallContext.current();
+ if (type == Type.ROOT && volumeContext != null &&
volumeContext.getEventResourceType() == ApiCommandResourceType.Volume) {
+ volumeContext.setEventDetails("Volume Id: " +
this._uuidMgr.getUuid(Volume.class, diskProfile.getVolumeId()) + " Vm Id: " +
this._uuidMgr.getUuid(VirtualMachine.class, vm.getId()));
+ volumeContext.setEventResourceId(diskProfile.getVolumeId());
+ }
Review Comment:
Done.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]