CLOUDSTACK-6247: Usage Events - hide them when display flag is off in the context of "Ability to have better control over first class objects in CS" feature

Work done for network offering.
This commit is contained in:
Nitin Mehta 2014-03-18 13:54:25 -07:00
parent 7442b56fa8
commit 5d19a936a2
7 changed files with 61 additions and 12 deletions

View File

@ -321,4 +321,6 @@ public interface VirtualMachine extends RunningOn, ControlledEntity, Identity, I
long getUpdated(); long getUpdated();
boolean isDisplay();
} }

View File

@ -3422,7 +3422,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
long isDefault = (nic.isDefaultNic()) ? 1 : 0; long isDefault = (nic.isDefaultNic()) ? 1 : 0;
// insert nic's Id into DB as resource_name // insert nic's Id into DB as resource_name
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_ASSIGN, vmVO.getAccountId(), vmVO.getDataCenterId(), vmVO.getId(), UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_ASSIGN, vmVO.getAccountId(), vmVO.getDataCenterId(), vmVO.getId(),
Long.toString(nic.getId()), network.getNetworkOfferingId(), null, isDefault, VirtualMachine.class.getName(), vmVO.getUuid()); Long.toString(nic.getId()), network.getNetworkOfferingId(), null, isDefault, VirtualMachine.class.getName(), vmVO.getUuid(), vm.isDisplay());
return nic; return nic;
} else { } else {
s_logger.warn("Failed to plug nic to the vm " + vm + " in network " + network); s_logger.warn("Failed to plug nic to the vm " + vm + " in network " + network);
@ -3537,7 +3537,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
s_logger.debug("Nic is unplugged successfully for vm " + vm + " in network " + network); s_logger.debug("Nic is unplugged successfully for vm " + vm + " in network " + network);
long isDefault = (nic.isDefaultNic()) ? 1 : 0; long isDefault = (nic.isDefaultNic()) ? 1 : 0;
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_REMOVE, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_REMOVE, vm.getAccountId(), vm.getDataCenterId(), vm.getId(),
Long.toString(nic.getId()), network.getNetworkOfferingId(), null, isDefault, VirtualMachine.class.getName(), vm.getUuid()); Long.toString(nic.getId()), network.getNetworkOfferingId(), null, isDefault, VirtualMachine.class.getName(), vm.getUuid(), vm.isDisplay());
} else { } else {
s_logger.warn("Failed to unplug nic for the vm " + vm + " from network " + network); s_logger.warn("Failed to unplug nic for the vm " + vm + " from network " + network);
return false; return false;

View File

@ -384,10 +384,16 @@ public class VMInstanceVO implements VirtualMachine, FiniteStateObject<State, Vi
return haEnabled; return haEnabled;
} }
//FIXME - Remove this and use isDisplay() instead
public boolean isDisplayVm() { public boolean isDisplayVm() {
return displayVm; return displayVm;
} }
@Override
public boolean isDisplay() {
return displayVm;
}
public void setDisplayVm(boolean displayVm) { public void setDisplayVm(boolean displayVm) {
this.displayVm = displayVm; this.displayVm = displayVm;
} }

View File

@ -173,6 +173,9 @@ public class VMEntityVO implements VirtualMachine, FiniteStateObject<State, Virt
@Column(name = "disk_offering_id") @Column(name = "disk_offering_id")
protected Long diskOfferingId; protected Long diskOfferingId;
@Column(name = "display_vm", updatable = true, nullable = false)
protected boolean display = true;
@Transient @Transient
private VMReservationVO vmReservation; private VMReservationVO vmReservation;
@ -539,4 +542,13 @@ public class VMEntityVO implements VirtualMachine, FiniteStateObject<State, Virt
public Class<?> getEntityType() { public Class<?> getEntityType() {
return VirtualMachine.class; return VirtualMachine.class;
} }
@Override
public boolean isDisplay() {
return display;
}
public void setDisplay(boolean display) {
this.display = display;
}
} }

View File

@ -2277,9 +2277,9 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
long isDefault = (nic.isDefaultNic()) ? 1 : 0; long isDefault = (nic.isDefaultNic()) ? 1 : 0;
String nicIdString = Long.toString(nic.getId()); String nicIdString = Long.toString(nic.getId());
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_REMOVE, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), nicIdString, UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_REMOVE, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), nicIdString,
oldNetworkOfferingId, null, isDefault, VirtualMachine.class.getName(), vm.getUuid()); oldNetworkOfferingId, null, isDefault, VirtualMachine.class.getName(), vm.getUuid(), vm.isDisplay());
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_ASSIGN, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), nicIdString, UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_ASSIGN, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), nicIdString,
networkOfferingId, null, isDefault, VirtualMachine.class.getName(), vm.getUuid()); networkOfferingId, null, isDefault, VirtualMachine.class.getName(), vm.getUuid(), vm.isDisplay());
} }
} }
}); });

View File

@ -1188,13 +1188,13 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
String nicIdString = Long.toString(nic.getId()); String nicIdString = Long.toString(nic.getId());
long newNetworkOfferingId = network.getNetworkOfferingId(); long newNetworkOfferingId = network.getNetworkOfferingId();
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_REMOVE, vmInstance.getAccountId(), vmInstance.getDataCenterId(), vmInstance.getId(), UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_REMOVE, vmInstance.getAccountId(), vmInstance.getDataCenterId(), vmInstance.getId(),
oldNicIdString, oldNetworkOfferingId, null, 1L, VirtualMachine.class.getName(), vmInstance.getUuid()); oldNicIdString, oldNetworkOfferingId, null, 1L, VirtualMachine.class.getName(), vmInstance.getUuid(), vmInstance.isDisplay());
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_ASSIGN, vmInstance.getAccountId(), vmInstance.getDataCenterId(), vmInstance.getId(), nicIdString, UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_ASSIGN, vmInstance.getAccountId(), vmInstance.getDataCenterId(), vmInstance.getId(), nicIdString,
newNetworkOfferingId, null, 1L, VirtualMachine.class.getName(), vmInstance.getUuid()); newNetworkOfferingId, null, 1L, VirtualMachine.class.getName(), vmInstance.getUuid(), vmInstance.isDisplay());
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_REMOVE, vmInstance.getAccountId(), vmInstance.getDataCenterId(), vmInstance.getId(), nicIdString, UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_REMOVE, vmInstance.getAccountId(), vmInstance.getDataCenterId(), vmInstance.getId(), nicIdString,
newNetworkOfferingId, null, 0L, VirtualMachine.class.getName(), vmInstance.getUuid()); newNetworkOfferingId, null, 0L, VirtualMachine.class.getName(), vmInstance.getUuid(), vmInstance.isDisplay());
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_ASSIGN, vmInstance.getAccountId(), vmInstance.getDataCenterId(), vmInstance.getId(), UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_ASSIGN, vmInstance.getAccountId(), vmInstance.getDataCenterId(), vmInstance.getId(),
oldNicIdString, oldNetworkOfferingId, null, 0L, VirtualMachine.class.getName(), vmInstance.getUuid()); oldNicIdString, oldNetworkOfferingId, null, 0L, VirtualMachine.class.getName(), vmInstance.getUuid(), vmInstance.isDisplay());
return _vmDao.findById(vmInstance.getId()); return _vmDao.findById(vmInstance.getId());
} }
@ -1866,6 +1866,15 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
return updateVirtualMachine(id, displayName, group, ha, isDisplayVm, osTypeId, userData, isDynamicallyScalable, cmd.getHttpMethod(), cmd.getCustomId(), hostName); return updateVirtualMachine(id, displayName, group, ha, isDisplayVm, osTypeId, userData, isDynamicallyScalable, cmd.getHttpMethod(), cmd.getCustomId(), hostName);
} }
private void usage(VirtualMachine vm){
List<NicVO> nics = _nicDao.listByVmId(vm.getId());
for (NicVO nic : nics) {
NetworkVO network = _networkDao.findById(nic.getNetworkId());
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_REMOVE, vm.getAccountId(), vm.getDataCenterId(), vm.getId(),
Long.toString(nic.getId()), network.getNetworkOfferingId(), null, 0L, vm.getClass().getName(), vm.getUuid(), vm.isDisplay());
}
}
private void saveUsageEvent(UserVmVO vm) { private void saveUsageEvent(UserVmVO vm) {
// If vm not destroyed // If vm not destroyed
@ -1874,23 +1883,43 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
if(vm.isDisplayVm()){ if(vm.isDisplayVm()){
//1. Allocated VM Usage Event //1. Allocated VM Usage Event
generateUsageEvent(vm, true, EventTypes.EVENT_VM_CREATE); generateUsageEvent(vm, true, EventTypes.EVENT_VM_CREATE);
//2. Running VM Usage Event
if(vm.getState() == State.Running || vm.getState() == State.Stopping){ if(vm.getState() == State.Running || vm.getState() == State.Stopping){
//2. Running VM Usage Event
generateUsageEvent(vm, true, EventTypes.EVENT_VM_START); generateUsageEvent(vm, true, EventTypes.EVENT_VM_START);
// 3. Network offering usage
generateNetworkUsageForVm(vm, true, EventTypes.EVENT_NETWORK_OFFERING_ASSIGN);
} }
}else { }else {
//1. Allocated VM Usage Event //1. Allocated VM Usage Event
generateUsageEvent(vm, true, EventTypes.EVENT_VM_DESTROY); generateUsageEvent(vm, true, EventTypes.EVENT_VM_DESTROY);
//2. Running VM Usage Event
if(vm.getState() == State.Running || vm.getState() == State.Stopping){ if(vm.getState() == State.Running || vm.getState() == State.Stopping){
//2. Running VM Usage Event
generateUsageEvent(vm, true, EventTypes.EVENT_VM_STOP); generateUsageEvent(vm, true, EventTypes.EVENT_VM_STOP);
// 3. Network offering usage
generateNetworkUsageForVm(vm, true, EventTypes.EVENT_NETWORK_OFFERING_REMOVE);
} }
} }
} }
} }
private void generateNetworkUsageForVm(VirtualMachine vm, boolean isDisplay, String eventType){
List<NicVO> nics = _nicDao.listByVmId(vm.getId());
for (NicVO nic : nics) {
NetworkVO network = _networkDao.findById(nic.getNetworkId());
long isDefault = (nic.isDefaultNic()) ? 1 : 0;
UsageEventUtils.publishUsageEvent(eventType, vm.getAccountId(), vm.getDataCenterId(), vm.getId(),
Long.toString(nic.getId()), network.getNetworkOfferingId(), null, isDefault, vm.getClass().getName(), vm.getUuid(), isDisplay);
}
}
@Override @Override
public UserVm updateVirtualMachine(long id, String displayName, String group, Boolean ha, Boolean isDisplayVmEnabled, Long osTypeId, String userData, public UserVm updateVirtualMachine(long id, String displayName, String group, Boolean ha, Boolean isDisplayVmEnabled, Long osTypeId, String userData,
Boolean isDynamicallyScalable, HTTPMethod httpMethod, String customId, String hostName) throws ResourceUnavailableException, InsufficientCapacityException { Boolean isDynamicallyScalable, HTTPMethod httpMethod, String customId, String hostName) throws ResourceUnavailableException, InsufficientCapacityException {
@ -3175,7 +3204,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
NetworkVO network = _networkDao.findById(nic.getNetworkId()); NetworkVO network = _networkDao.findById(nic.getNetworkId());
long isDefault = (nic.isDefaultNic()) ? 1 : 0; long isDefault = (nic.isDefaultNic()) ? 1 : 0;
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_ASSIGN, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), Long.toString(nic.getId()), UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_ASSIGN, vm.getAccountId(), vm.getDataCenterId(), vm.getId(), Long.toString(nic.getId()),
network.getNetworkOfferingId(), null, isDefault, VirtualMachine.class.getName(), vm.getUuid()); network.getNetworkOfferingId(), null, isDefault, VirtualMachine.class.getName(), vm.getUuid(), vm.isDisplay());
if (network.getTrafficType() == TrafficType.Guest) { if (network.getTrafficType() == TrafficType.Guest) {
originalIp = nic.getIp4Address(); originalIp = nic.getIp4Address();
guestNic = nic; guestNic = nic;

View File

@ -93,7 +93,7 @@ public class UserVmStateListener implements StateListener<State, VirtualMachine.
for (NicVO nic : nics) { for (NicVO nic : nics) {
NetworkVO network = _networkDao.findById(nic.getNetworkId()); NetworkVO network = _networkDao.findById(nic.getNetworkId());
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_REMOVE, vo.getAccountId(), vo.getDataCenterId(), vo.getId(), UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_REMOVE, vo.getAccountId(), vo.getDataCenterId(), vo.getId(),
Long.toString(nic.getId()), network.getNetworkOfferingId(), null, 0L, vo.getClass().getName(), vo.getUuid()); Long.toString(nic.getId()), network.getNetworkOfferingId(), null, 0L, vo.getClass().getName(), vo.getUuid(), vo.isDisplay());
} }
} else if (VirtualMachine.State.isVmDestroyed(oldState, event, newState)) { } else if (VirtualMachine.State.isVmDestroyed(oldState, event, newState)) {
generateUsageEvent(vo.getServiceOfferingId(), vo, EventTypes.EVENT_VM_DESTROY); generateUsageEvent(vo.getServiceOfferingId(), vo, EventTypes.EVENT_VM_DESTROY);