From 56f3343911022759aab1d58eb203fc1a1de1d711 Mon Sep 17 00:00:00 2001 From: kishan Date: Fri, 4 Feb 2011 19:59:18 +0530 Subject: [PATCH] Added action events for VM, volume, Ip and snapshot actions --- .../commands/AssignToLoadBalancerRuleCmd.java | 2 ++ .../cloud/api/commands/AssociateIPAddrCmd.java | 1 + .../com/cloud/api/commands/AttachVolumeCmd.java | 2 ++ .../api/commands/CreateIpForwardingRuleCmd.java | 1 + .../commands/CreatePortForwardingRuleCmd.java | 1 + .../cloud/api/commands/CreateSnapshotCmd.java | 3 ++- .../com/cloud/api/commands/CreateVolumeCmd.java | 1 + .../api/commands/DeleteIpForwardingRuleCmd.java | 2 ++ .../api/commands/DeleteLoadBalancerRuleCmd.java | 2 ++ .../com/cloud/api/commands/DeleteNetworkCmd.java | 2 ++ .../commands/DeletePortForwardingRuleCmd.java | 2 ++ .../cloud/api/commands/DeleteSnapshotCmd.java | 2 ++ .../com/cloud/api/commands/DeleteVolumeCmd.java | 2 ++ api/src/com/cloud/api/commands/DestroyVMCmd.java | 2 ++ .../com/cloud/api/commands/DetachVolumeCmd.java | 2 ++ .../api/commands/DisassociateIPAddrCmd.java | 2 ++ .../com/cloud/api/commands/ExtractVolumeCmd.java | 2 ++ api/src/com/cloud/api/commands/RebootVMCmd.java | 2 ++ .../commands/RemoveFromLoadBalancerRuleCmd.java | 4 +++- .../cloud/api/commands/ResetVMPasswordCmd.java | 2 ++ api/src/com/cloud/api/commands/StartVMCmd.java | 2 ++ api/src/com/cloud/api/commands/StopVMCmd.java | 2 ++ .../api/commands/UpdateLoadBalancerRuleCmd.java | 2 ++ api/src/com/cloud/api/commands/UpdateVMCmd.java | 2 ++ api/src/com/cloud/api/commands/UpgradeVMCmd.java | 2 ++ server/src/com/cloud/network/NetworkManager.java | 2 ++ .../com/cloud/network/NetworkManagerImpl.java | 14 ++++++++++---- .../lb/LoadBalancingRulesManagerImpl.java | 16 +++++++++++++--- .../cloud/network/rules/RulesManagerImpl.java | 2 +- .../com/cloud/server/ManagementServerImpl.java | 3 ++- .../com/cloud/storage/StorageManagerImpl.java | 4 ++-- .../storage/snapshot/SnapshotManagerImpl.java | 5 +++-- .../src/com/cloud/user/AccountManagerImpl.java | 2 +- server/src/com/cloud/vm/UserVmManagerImpl.java | 6 +++--- 34 files changed, 84 insertions(+), 19 deletions(-) diff --git a/api/src/com/cloud/api/commands/AssignToLoadBalancerRuleCmd.java b/api/src/com/cloud/api/commands/AssignToLoadBalancerRuleCmd.java index b5b0a48a145..690b1659f04 100644 --- a/api/src/com/cloud/api/commands/AssignToLoadBalancerRuleCmd.java +++ b/api/src/com/cloud/api/commands/AssignToLoadBalancerRuleCmd.java @@ -31,6 +31,7 @@ import com.cloud.api.response.SuccessResponse; import com.cloud.event.EventTypes; import com.cloud.network.rules.LoadBalancer; import com.cloud.user.Account; +import com.cloud.user.UserContext; import com.cloud.utils.StringUtils; @Implementation(description="Assigns virtual machine or a list of virtual machines to a load balancer rule.", responseObject=SuccessResponse.class) @@ -91,6 +92,7 @@ public class AssignToLoadBalancerRuleCmd extends BaseAsyncCmd { @Override public void execute(){ + UserContext.current().setEventDetails("Load balancer Id: "+getLoadBalancerId()+" VmIds: "+StringUtils.join(getVirtualMachineIds(), ",")); boolean result = _lbService.assignToLoadBalancer(getLoadBalancerId(), virtualMachineIds); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/com/cloud/api/commands/AssociateIPAddrCmd.java b/api/src/com/cloud/api/commands/AssociateIPAddrCmd.java index d80cc0e884d..b336ad2dd08 100644 --- a/api/src/com/cloud/api/commands/AssociateIPAddrCmd.java +++ b/api/src/com/cloud/api/commands/AssociateIPAddrCmd.java @@ -152,6 +152,7 @@ public class AssociateIPAddrCmd extends BaseAsyncCreateCmd { @Override public void execute() throws ResourceUnavailableException, ResourceAllocationException, ConcurrentOperationException, InsufficientCapacityException { try { + UserContext.current().setEventDetails("Ip Id: "+getEntityId()); IpAddress result = _networkService.associateIP(this); if (result != null) { IPAddressResponse ipResponse = _responseGenerator.createIPAddressResponse(result); diff --git a/api/src/com/cloud/api/commands/AttachVolumeCmd.java b/api/src/com/cloud/api/commands/AttachVolumeCmd.java index c320d7d9b04..da4e8700f27 100755 --- a/api/src/com/cloud/api/commands/AttachVolumeCmd.java +++ b/api/src/com/cloud/api/commands/AttachVolumeCmd.java @@ -31,6 +31,7 @@ import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.storage.Volume; import com.cloud.user.Account; +import com.cloud.user.UserContext; @Implementation(description="Attaches a disk volume to a virtual machine.", responseObject=VolumeResponse.class) public class AttachVolumeCmd extends BaseAsyncCmd { @@ -116,6 +117,7 @@ public class AttachVolumeCmd extends BaseAsyncCmd { @Override public void execute(){ + UserContext.current().setEventDetails("Volume Id: "+getId()+" VmId: "+getVirtualMachineId()); Volume result = _userVmService.attachVolumeToVM(this); if (result != null) { VolumeResponse response = _responseGenerator.createVolumeResponse(result); diff --git a/api/src/com/cloud/api/commands/CreateIpForwardingRuleCmd.java b/api/src/com/cloud/api/commands/CreateIpForwardingRuleCmd.java index 7ca605d19f1..386befef347 100644 --- a/api/src/com/cloud/api/commands/CreateIpForwardingRuleCmd.java +++ b/api/src/com/cloud/api/commands/CreateIpForwardingRuleCmd.java @@ -89,6 +89,7 @@ public class CreateIpForwardingRuleCmd extends BaseAsyncCreateCmd implements Por public void execute(){ boolean result; try { + UserContext.current().setEventDetails("Rule Id: "+getEntityId()); result = _rulesService.applyPortForwardingRules(ipAddressId, UserContext.current().getCaller()); } catch (Exception e) { s_logger.error("Unable to apply port forwarding rules", e); diff --git a/api/src/com/cloud/api/commands/CreatePortForwardingRuleCmd.java b/api/src/com/cloud/api/commands/CreatePortForwardingRuleCmd.java index f57000a4743..6d2a88a35a8 100644 --- a/api/src/com/cloud/api/commands/CreatePortForwardingRuleCmd.java +++ b/api/src/com/cloud/api/commands/CreatePortForwardingRuleCmd.java @@ -104,6 +104,7 @@ public class CreatePortForwardingRuleCmd extends BaseAsyncCreateCmd implements boolean success = false; PortForwardingRule rule = _entityMgr.findById(PortForwardingRule.class, getEntityId()); try { + UserContext.current().setEventDetails("Rule Id: "+rule.getId()); success = _rulesService.applyPortForwardingRules(rule.getSourceIpAddressId(), callerContext.getCaller()); //State is different after the rule is applied, so get new object here diff --git a/api/src/com/cloud/api/commands/CreateSnapshotCmd.java b/api/src/com/cloud/api/commands/CreateSnapshotCmd.java index c1ab23c18d9..b43b24e545a 100644 --- a/api/src/com/cloud/api/commands/CreateSnapshotCmd.java +++ b/api/src/com/cloud/api/commands/CreateSnapshotCmd.java @@ -33,6 +33,7 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.storage.Snapshot; import com.cloud.storage.Volume; import com.cloud.user.Account; +import com.cloud.user.UserContext; @Implementation(description="Creates an instant snapshot of a volume.", responseObject=SnapshotResponse.class) public class CreateSnapshotCmd extends BaseAsyncCreateCmd { @@ -131,7 +132,7 @@ public class CreateSnapshotCmd extends BaseAsyncCreateCmd { Long id = _snapshotService.getNextInSequence(this); this.setEntityId(id); } - + UserContext.current().setEventDetails("Snapshot Id: "+getEntityId()+" Volume Id: "+getVolumeId()); Snapshot snapshot = _snapshotService.createSnapshot(this); if (snapshot != null) { SnapshotResponse response = _responseGenerator.createSnapshotResponse(snapshot); diff --git a/api/src/com/cloud/api/commands/CreateVolumeCmd.java b/api/src/com/cloud/api/commands/CreateVolumeCmd.java index 75315713d8d..8b8a9eb4f87 100644 --- a/api/src/com/cloud/api/commands/CreateVolumeCmd.java +++ b/api/src/com/cloud/api/commands/CreateVolumeCmd.java @@ -160,6 +160,7 @@ public class CreateVolumeCmd extends BaseAsyncCreateCmd { @Override public void execute(){ + UserContext.current().setEventDetails("Volume Id: "+getEntityId()+((getSnapshotId() == null) ? "" : " from snapshot: " + getSnapshotId())); Volume volume = _storageService.createVolume(this); if (volume != null) { VolumeResponse response = _responseGenerator.createVolumeResponse(volume); diff --git a/api/src/com/cloud/api/commands/DeleteIpForwardingRuleCmd.java b/api/src/com/cloud/api/commands/DeleteIpForwardingRuleCmd.java index acc5c38369c..edf510cbdcc 100644 --- a/api/src/com/cloud/api/commands/DeleteIpForwardingRuleCmd.java +++ b/api/src/com/cloud/api/commands/DeleteIpForwardingRuleCmd.java @@ -30,6 +30,7 @@ import com.cloud.api.response.SuccessResponse; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.rules.PortForwardingRule; +import com.cloud.user.UserContext; @Implementation(description="Deletes an ip forwarding rule", responseObject=SuccessResponse.class) public class DeleteIpForwardingRuleCmd extends BaseAsyncCmd { @@ -67,6 +68,7 @@ public class DeleteIpForwardingRuleCmd extends BaseAsyncCmd { @Override public void execute(){ + UserContext.current().setEventDetails("Rule Id: "+id); boolean result = _rulesService.revokePortForwardingRule(id, true); if (result) { diff --git a/api/src/com/cloud/api/commands/DeleteLoadBalancerRuleCmd.java b/api/src/com/cloud/api/commands/DeleteLoadBalancerRuleCmd.java index 9d3b9a4981d..d2701d8d85f 100644 --- a/api/src/com/cloud/api/commands/DeleteLoadBalancerRuleCmd.java +++ b/api/src/com/cloud/api/commands/DeleteLoadBalancerRuleCmd.java @@ -29,6 +29,7 @@ import com.cloud.api.response.SuccessResponse; import com.cloud.event.EventTypes; import com.cloud.network.rules.LoadBalancer; import com.cloud.user.Account; +import com.cloud.user.UserContext; @Implementation(description="Deletes a load balancer rule.", responseObject=SuccessResponse.class) public class DeleteLoadBalancerRuleCmd extends BaseAsyncCmd { @@ -81,6 +82,7 @@ public class DeleteLoadBalancerRuleCmd extends BaseAsyncCmd { @Override public void execute(){ + UserContext.current().setEventDetails("Load balancer Id: "+getId()); boolean result = _lbService.deleteLoadBalancerRule(id, true); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/com/cloud/api/commands/DeleteNetworkCmd.java b/api/src/com/cloud/api/commands/DeleteNetworkCmd.java index 2885a151031..e5d018035f6 100644 --- a/api/src/com/cloud/api/commands/DeleteNetworkCmd.java +++ b/api/src/com/cloud/api/commands/DeleteNetworkCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.SuccessResponse; import com.cloud.exception.InvalidParameterValueException; +import com.cloud.user.UserContext; @Implementation(description="Deletes a network", responseObject=SuccessResponse.class) public class DeleteNetworkCmd extends BaseCmd{ @@ -66,6 +67,7 @@ public class DeleteNetworkCmd extends BaseCmd{ if (nicCount > 0) { throw new InvalidParameterValueException("Unable to remove the network id=" + id + " as it has active Nics."); } + UserContext.current().setEventDetails("Network Id: "+id); boolean result = _networkService.deleteNetwork(id); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/com/cloud/api/commands/DeletePortForwardingRuleCmd.java b/api/src/com/cloud/api/commands/DeletePortForwardingRuleCmd.java index 07ef1a37bf4..0dd922ce900 100644 --- a/api/src/com/cloud/api/commands/DeletePortForwardingRuleCmd.java +++ b/api/src/com/cloud/api/commands/DeletePortForwardingRuleCmd.java @@ -29,6 +29,7 @@ import com.cloud.api.response.SuccessResponse; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.rules.PortForwardingRule; +import com.cloud.user.UserContext; @Implementation(description="Deletes a port forwarding rule", responseObject=SuccessResponse.class) public class DeletePortForwardingRuleCmd extends BaseAsyncCmd { @@ -81,6 +82,7 @@ public class DeletePortForwardingRuleCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException { + UserContext.current().setEventDetails("Rule Id: "+id); boolean result = _rulesService.revokePortForwardingRule(id, true); if (result) { diff --git a/api/src/com/cloud/api/commands/DeleteSnapshotCmd.java b/api/src/com/cloud/api/commands/DeleteSnapshotCmd.java index 9fb3c8e24a6..87c2d75ea1b 100644 --- a/api/src/com/cloud/api/commands/DeleteSnapshotCmd.java +++ b/api/src/com/cloud/api/commands/DeleteSnapshotCmd.java @@ -31,6 +31,7 @@ import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.storage.Snapshot; import com.cloud.user.Account; +import com.cloud.user.UserContext; @Implementation(description="Deletes a snapshot of a disk volume.", responseObject=SuccessResponse.class) public class DeleteSnapshotCmd extends BaseAsyncCmd { @@ -92,6 +93,7 @@ public class DeleteSnapshotCmd extends BaseAsyncCmd { @Override public void execute(){ + UserContext.current().setEventDetails("Snapshot Id: "+getId()); boolean result = _snapshotService.deleteSnapshot(this); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/com/cloud/api/commands/DeleteVolumeCmd.java b/api/src/com/cloud/api/commands/DeleteVolumeCmd.java index bd23f442885..ccca8c2c592 100644 --- a/api/src/com/cloud/api/commands/DeleteVolumeCmd.java +++ b/api/src/com/cloud/api/commands/DeleteVolumeCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.SuccessResponse; import com.cloud.exception.ConcurrentOperationException; +import com.cloud.user.UserContext; @Implementation(description="Deletes a detached disk volume.", responseObject=SuccessResponse.class) public class DeleteVolumeCmd extends BaseCmd { @@ -65,6 +66,7 @@ public class DeleteVolumeCmd extends BaseCmd { @Override public void execute() throws ConcurrentOperationException { + UserContext.current().setEventDetails("Volume Id: "+getId()); boolean result = _storageService.deleteVolume(this); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/com/cloud/api/commands/DestroyVMCmd.java b/api/src/com/cloud/api/commands/DestroyVMCmd.java index 07450fbf054..3fd4bc1cc07 100644 --- a/api/src/com/cloud/api/commands/DestroyVMCmd.java +++ b/api/src/com/cloud/api/commands/DestroyVMCmd.java @@ -31,6 +31,7 @@ import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; +import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @Implementation(description="Destroys a virtual machine. Once destroyed, only the administrator can recover it.", responseObject=UserVmResponse.class) @@ -93,6 +94,7 @@ public class DestroyVMCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException, ConcurrentOperationException{ + UserContext.current().setEventDetails("Vm Id: "+getId()); UserVm result = _userVmService.destroyVm(this); if (result != null) { UserVmResponse response = _responseGenerator.createUserVmResponse(result); diff --git a/api/src/com/cloud/api/commands/DetachVolumeCmd.java b/api/src/com/cloud/api/commands/DetachVolumeCmd.java index 4d17b8e1e26..b3143d44ffb 100755 --- a/api/src/com/cloud/api/commands/DetachVolumeCmd.java +++ b/api/src/com/cloud/api/commands/DetachVolumeCmd.java @@ -30,6 +30,7 @@ import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.storage.Volume; import com.cloud.user.Account; +import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @Implementation(description="Detaches a disk volume from a virtual machine.", responseObject=VolumeResponse.class) @@ -126,6 +127,7 @@ public class DetachVolumeCmd extends BaseAsyncCmd { @Override public void execute(){ + UserContext.current().setEventDetails("Volume Id: "+getId()+" VmId: "+getVirtualMachineId()); Volume result = _userVmService.detachVolumeFromVM(this); if (result != null){ VolumeResponse response = _responseGenerator.createVolumeResponse(result); diff --git a/api/src/com/cloud/api/commands/DisassociateIPAddrCmd.java b/api/src/com/cloud/api/commands/DisassociateIPAddrCmd.java index 02db762a7e0..4981d73ed40 100644 --- a/api/src/com/cloud/api/commands/DisassociateIPAddrCmd.java +++ b/api/src/com/cloud/api/commands/DisassociateIPAddrCmd.java @@ -25,6 +25,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.SuccessResponse; +import com.cloud.user.UserContext; @Implementation(description="Disassociates an ip address from the account.", responseObject=SuccessResponse.class) public class DisassociateIPAddrCmd extends BaseCmd { @@ -58,6 +59,7 @@ public class DisassociateIPAddrCmd extends BaseCmd { @Override public void execute(){ + UserContext.current().setEventDetails("Ip Id: "+getIpAddressId()); boolean result = _networkService.disassociateIpAddress(this); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/com/cloud/api/commands/ExtractVolumeCmd.java b/api/src/com/cloud/api/commands/ExtractVolumeCmd.java index 6b1bbde097e..fd2f9e66969 100755 --- a/api/src/com/cloud/api/commands/ExtractVolumeCmd.java +++ b/api/src/com/cloud/api/commands/ExtractVolumeCmd.java @@ -34,6 +34,7 @@ import com.cloud.event.EventTypes; import com.cloud.storage.Upload; import com.cloud.storage.Volume; import com.cloud.user.Account; +import com.cloud.user.UserContext; @Implementation(description="Extracts volume", responseObject=ExtractResponse.class) public class ExtractVolumeCmd extends BaseAsyncCmd { @@ -125,6 +126,7 @@ public class ExtractVolumeCmd extends BaseAsyncCmd { @Override public void execute(){ try { + UserContext.current().setEventDetails("Volume Id: "+getId()); Long uploadId = _mgr.extractVolume(this); if (uploadId != null){ Upload uploadInfo = _entityMgr.findById(Upload.class, uploadId); diff --git a/api/src/com/cloud/api/commands/RebootVMCmd.java b/api/src/com/cloud/api/commands/RebootVMCmd.java index d88386ceb29..e087acd5d37 100644 --- a/api/src/com/cloud/api/commands/RebootVMCmd.java +++ b/api/src/com/cloud/api/commands/RebootVMCmd.java @@ -31,6 +31,7 @@ import com.cloud.event.EventTypes; import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; +import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @Implementation(description="Reboots a virtual machine.", responseObject=UserVmResponse.class) @@ -92,6 +93,7 @@ public class RebootVMCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException, InsufficientCapacityException{ + UserContext.current().setEventDetails("Vm Id: "+getId()); UserVm result = _userVmService.rebootVirtualMachine(this); if (result !=null){ UserVmResponse response = _responseGenerator.createUserVmResponse(result); diff --git a/api/src/com/cloud/api/commands/RemoveFromLoadBalancerRuleCmd.java b/api/src/com/cloud/api/commands/RemoveFromLoadBalancerRuleCmd.java index 80245e92a5c..16bccab862d 100644 --- a/api/src/com/cloud/api/commands/RemoveFromLoadBalancerRuleCmd.java +++ b/api/src/com/cloud/api/commands/RemoveFromLoadBalancerRuleCmd.java @@ -31,6 +31,7 @@ import com.cloud.api.response.SuccessResponse; import com.cloud.event.EventTypes; import com.cloud.network.rules.LoadBalancer; import com.cloud.user.Account; +import com.cloud.user.UserContext; import com.cloud.utils.StringUtils; @Implementation(description="Removes a virtual machine or a list of virtual machines from a load balancer rule.", responseObject=SuccessResponse.class) @@ -90,7 +91,8 @@ public class RemoveFromLoadBalancerRuleCmd extends BaseAsyncCmd { } @Override - public void execute(){ + public void execute(){ + UserContext.current().setEventDetails("Load balancer Id: "+getId()+" VmIds: "+StringUtils.join(getVirtualMachineIds(), ",")); boolean result = _lbService.removeFromLoadBalancer(id, virtualMachineIds); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/com/cloud/api/commands/ResetVMPasswordCmd.java b/api/src/com/cloud/api/commands/ResetVMPasswordCmd.java index 5f5c4d5e6a8..2080392817e 100644 --- a/api/src/com/cloud/api/commands/ResetVMPasswordCmd.java +++ b/api/src/com/cloud/api/commands/ResetVMPasswordCmd.java @@ -31,6 +31,7 @@ import com.cloud.event.EventTypes; import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; +import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @Implementation(responseObject=UserVmResponse.class, description="Resets the password for virtual machine. " + @@ -108,6 +109,7 @@ public class ResetVMPasswordCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException, InsufficientCapacityException{ password = _mgr.generateRandomPassword(); + UserContext.current().setEventDetails("Vm Id: "+getId()); UserVm result = _userVmService.resetVMPassword(this, password); if (result != null){ UserVmResponse response = _responseGenerator.createUserVmResponse(result); diff --git a/api/src/com/cloud/api/commands/StartVMCmd.java b/api/src/com/cloud/api/commands/StartVMCmd.java index 54f7b4e69a7..1987dfd15fd 100644 --- a/api/src/com/cloud/api/commands/StartVMCmd.java +++ b/api/src/com/cloud/api/commands/StartVMCmd.java @@ -34,6 +34,7 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.StorageUnavailableException; import com.cloud.user.Account; +import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; import com.cloud.utils.exception.ExecutionException; @@ -102,6 +103,7 @@ public class StartVMCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException, InsufficientCapacityException{ try { + UserContext.current().setEventDetails("Vm Id: "+getId()); UserVm result = _userVmService.startVirtualMachine(this); if (result != null){ UserVmResponse response = _responseGenerator.createUserVmResponse(result); diff --git a/api/src/com/cloud/api/commands/StopVMCmd.java b/api/src/com/cloud/api/commands/StopVMCmd.java index 81d35428909..b55c4ceb912 100644 --- a/api/src/com/cloud/api/commands/StopVMCmd.java +++ b/api/src/com/cloud/api/commands/StopVMCmd.java @@ -30,6 +30,7 @@ import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; import com.cloud.user.Account; +import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @Implementation(responseObject=UserVmResponse.class, description="Stops a virtual machine.") @@ -96,6 +97,7 @@ public class StopVMCmd extends BaseAsyncCmd { @Override public void execute() throws ServerApiException, ConcurrentOperationException{ + UserContext.current().setEventDetails("Vm Id: "+getId()); UserVm result = _userVmService.stopVirtualMachine(this); if (result != null) { UserVmResponse response = _responseGenerator.createUserVmResponse(result); diff --git a/api/src/com/cloud/api/commands/UpdateLoadBalancerRuleCmd.java b/api/src/com/cloud/api/commands/UpdateLoadBalancerRuleCmd.java index 35036f78a4e..e2a969d40bb 100644 --- a/api/src/com/cloud/api/commands/UpdateLoadBalancerRuleCmd.java +++ b/api/src/com/cloud/api/commands/UpdateLoadBalancerRuleCmd.java @@ -29,6 +29,7 @@ import com.cloud.api.response.LoadBalancerResponse; import com.cloud.event.EventTypes; import com.cloud.network.rules.LoadBalancer; import com.cloud.user.Account; +import com.cloud.user.UserContext; @Implementation(description="Updates load balancer", responseObject=LoadBalancerResponse.class) public class UpdateLoadBalancerRuleCmd extends BaseAsyncCmd { @@ -101,6 +102,7 @@ public class UpdateLoadBalancerRuleCmd extends BaseAsyncCmd { @Override public void execute(){ + UserContext.current().setEventDetails("Load balancer Id: "+getId()); LoadBalancer result = _lbService.updateLoadBalancerRule(this); if (result != null){ LoadBalancerResponse response = _responseGenerator.createLoadBalancerResponse(result); diff --git a/api/src/com/cloud/api/commands/UpdateVMCmd.java b/api/src/com/cloud/api/commands/UpdateVMCmd.java index cb2ce329b7c..2d57e2eced7 100644 --- a/api/src/com/cloud/api/commands/UpdateVMCmd.java +++ b/api/src/com/cloud/api/commands/UpdateVMCmd.java @@ -25,6 +25,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.UserVmResponse; +import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @Implementation(description="Updates parameters of a virtual machine.", responseObject=UserVmResponse.class) @@ -90,6 +91,7 @@ public class UpdateVMCmd extends BaseCmd{ @Override public void execute(){ + UserContext.current().setEventDetails("Vm Id: "+getId()); UserVm result = _userVmService.updateVirtualMachine(this); if (result != null){ UserVmResponse response = _responseGenerator.createUserVmResponse(result); diff --git a/api/src/com/cloud/api/commands/UpgradeVMCmd.java b/api/src/com/cloud/api/commands/UpgradeVMCmd.java index b5856291c61..6f087172aa6 100644 --- a/api/src/com/cloud/api/commands/UpgradeVMCmd.java +++ b/api/src/com/cloud/api/commands/UpgradeVMCmd.java @@ -25,6 +25,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.UserVmResponse; +import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @Implementation(responseObject=UserVmResponse.class, description="Changes the service offering for a virtual machine. " + @@ -71,6 +72,7 @@ public class UpgradeVMCmd extends BaseCmd { @Override public void execute(){ + UserContext.current().setEventDetails("Vm Id: "+getId()); UserVm result = _userVmService.upgradeVirtualMachine(this); if (result != null){ UserVmResponse response = _responseGenerator.createUserVmResponse(result); diff --git a/server/src/com/cloud/network/NetworkManager.java b/server/src/com/cloud/network/NetworkManager.java index 7130a4f918b..11fec588342 100644 --- a/server/src/com/cloud/network/NetworkManager.java +++ b/server/src/com/cloud/network/NetworkManager.java @@ -173,4 +173,6 @@ public interface NetworkManager extends NetworkService { Map getServiceCapability(long zoneId, Service service); + boolean deleteNetworkInternal(long networkId) throws InvalidParameterValueException, PermissionDeniedException; + } diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index e99793fabb6..f12115c0493 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -543,7 +543,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag if (ip == null) { throw new InsufficientAddressCapacityException("Unable to find available public IP addresses", DataCenter.class, zoneId); } - + UserContext.current().setEventDetails("Ip Id: "+ip.getId()); Ip ipAddress = ip.getAddress(); s_logger.debug("Got " + ipAddress + " to assign for account " + owner.getId() + " in zone " + network.getDataCenterId()); @@ -1352,7 +1352,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } } - @Override + @Override @ActionEvent (eventType=EventTypes.EVENT_NETWORK_CREATE, eventDescription="creating network") public Network createNetwork(CreateNetworkCmd cmd) throws InvalidParameterValueException, PermissionDeniedException { Long networkOfferingId = cmd.getNetworkOfferingId(); Long zoneId = cmd.getZoneId(); @@ -1512,7 +1512,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } } txn.commit(); - + UserContext.current().setEventDetails("Network Id: "+networkId); return networks.get(0); } catch (Exception ex) { s_logger.warn("Unexpected exception while creating network ", ex); @@ -1654,8 +1654,14 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } @Override - @DB + @ActionEvent (eventType=EventTypes.EVENT_NETWORK_DELETE, eventDescription="deleting network") public boolean deleteNetwork(long networkId) throws InvalidParameterValueException, PermissionDeniedException { + return deleteNetworkInternal(networkId); + } + + @Override + @DB + public boolean deleteNetworkInternal(long networkId) throws InvalidParameterValueException, PermissionDeniedException { Long userId = UserContext.current().getCallerUserId(); Account caller = UserContext.current().getCaller(); diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index dae8baa935c..9311585c373 100644 --- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java +++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java @@ -187,6 +187,10 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager, @Override @ActionEvent (eventType=EventTypes.EVENT_REMOVE_FROM_LOAD_BALANCER_RULE, eventDescription="removing from load balancer", async=true) public boolean removeFromLoadBalancer(long loadBalancerId, List instanceIds) { + return removeFromLoadBalancerInternal(loadBalancerId, instanceIds); + } + + private boolean removeFromLoadBalancerInternal(long loadBalancerId, List instanceIds) { UserContext caller = UserContext.current(); LoadBalancerVO loadBalancer = _lbDao.findById(Long.valueOf(loadBalancerId)); @@ -222,7 +226,7 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager, return true; } - + @Override public boolean removeVmFromLoadBalancers(long instanceId) { @@ -252,7 +256,7 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager, //Reapply all lbs that had the vm assigned if (lbsToReconfigure != null) { for (Map.Entry> lb : lbsToReconfigure.entrySet()) { - if (!removeFromLoadBalancer(lb.getKey(), lb.getValue())) { + if (!removeFromLoadBalancerInternal(lb.getKey(), lb.getValue())) { success = false; } } @@ -263,6 +267,10 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager, @Override @ActionEvent (eventType=EventTypes.EVENT_LOAD_BALANCER_DELETE, eventDescription="deleting load balancer", async=true) public boolean deleteLoadBalancerRule(long loadBalancerId, boolean apply) { + return deleteLoadBalancerRuleInternal(loadBalancerId, apply); + } + + private boolean deleteLoadBalancerRuleInternal(long loadBalancerId, boolean apply) { UserContext caller = UserContext.current(); LoadBalancerVO lb = _lbDao.findById(loadBalancerId); @@ -300,6 +308,7 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager, return true; } + @Override @ActionEvent (eventType=EventTypes.EVENT_LOAD_BALANCER_CREATE, eventDescription="creating load balancer") public LoadBalancer createLoadBalancerRule(LoadBalancer lb) throws NetworkRuleConflictException { UserContext caller = UserContext.current(); @@ -355,6 +364,7 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager, throw new CloudRuntimeException("Unable to update the state to add for " + newRule); } s_logger.debug("Load balancer " + newRule.getId() + " for Ip address id=" + ipId + ", public port " + srcPortStart + ", private port " + defPortStart+ " is added successfully."); + UserContext.current().setEventDetails("Load balancer Id: "+newRule.getId()); UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_LOAD_BALANCER_CREATE, ipAddr.getAllocatedToAccountId(), ipAddr.getDataCenterId(), newRule.getId(), null); _usageEventDao.persist(usageEvent); return newRule; @@ -423,7 +433,7 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesManager, s_logger.debug("Found " + rules.size() + " lb rules to cleanup"); for (FirewallRule rule : rules) { if (rule.getPurpose() == Purpose.LoadBalancing) { - boolean result = deleteLoadBalancerRule(rule.getId(), true); + boolean result = deleteLoadBalancerRuleInternal(rule.getId(), true); if (result == false) { s_logger.warn("Unable to remove load balancer rule " + rule.getId()); return false; diff --git a/server/src/com/cloud/network/rules/RulesManagerImpl.java b/server/src/com/cloud/network/rules/RulesManagerImpl.java index 01d7d131986..17011b88f3e 100644 --- a/server/src/com/cloud/network/rules/RulesManagerImpl.java +++ b/server/src/com/cloud/network/rules/RulesManagerImpl.java @@ -257,7 +257,7 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager { if (!_firewallDao.setStateToAdd(newRule)) { throw new CloudRuntimeException("Unable to update the state to add for " + newRule); } - + UserContext.current().setEventDetails("Rule Id: "+newRule.getId()); UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_NET_RULE_ADD, newRule.getAccountId(), 0, newRule.getId(), null); _usageEventDao.persist(usageEvent); return newRule; diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 32b806ec040..96a078bd42c 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -161,6 +161,7 @@ import com.cloud.dc.dao.PodVlanMapDao; import com.cloud.dc.dao.VlanDao; import com.cloud.domain.DomainVO; import com.cloud.domain.dao.DomainDao; +import com.cloud.event.ActionEvent; import com.cloud.event.Event; import com.cloud.event.EventTypes; import com.cloud.event.EventUtils; @@ -4215,7 +4216,7 @@ public class ManagementServerImpl implements ManagementServer { return false; } - @Override + @Override @ActionEvent(eventType = EventTypes.EVENT_VOLUME_EXTRACT, eventDescription = "extracting volume", async=true) public Long extractVolume(ExtractVolumeCmd cmd) throws URISyntaxException { Long volumeId = cmd.getId(); String url = cmd.getUrl(); diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index 13a7d3704b8..bd221a7f871 100755 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -1504,7 +1504,7 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag volume.setDomainId((account == null) ? Domain.ROOT_DOMAIN : account.getDomainId()); volume.setState(Volume.State.Allocated); volume = _volsDao.persist(volume); - + UserContext.current().setEventDetails("Volume Id: "+volume.getId()); return volume; } @@ -2181,7 +2181,7 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag (accountType == Account.ACCOUNT_TYPE_READ_ONLY_ADMIN)); } - @Override + @Override @ActionEvent(eventType = EventTypes.EVENT_VOLUME_DELETE, eventDescription = "deleting volume") public boolean deleteVolume(DeleteVolumeCmd cmd) throws ConcurrentOperationException { Account account = UserContext.current().getCaller(); Long volumeId = cmd.getId(); diff --git a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java index ad09fbf6f0d..c6a569f1f5f 100755 --- a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java +++ b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java @@ -57,6 +57,7 @@ import com.cloud.dc.dao.ClusterDao; import com.cloud.dc.dao.DataCenterDao; import com.cloud.domain.DomainVO; import com.cloud.domain.dao.DomainDao; +import com.cloud.event.ActionEvent; import com.cloud.event.EventTypes; import com.cloud.event.UsageEventVO; import com.cloud.event.dao.EventDao; @@ -428,7 +429,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma return snapshot; } - @Override + @Override @ActionEvent(eventType = EventTypes.EVENT_SNAPSHOT_CREATE, eventDescription = "creating snapshot", async=true) public SnapshotVO createSnapshot(CreateSnapshotCmd cmd) throws ResourceAllocationException { Long volumeId = cmd.getVolumeId(); Long policyId = cmd.getPolicyId(); @@ -651,7 +652,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma (accountType == Account.ACCOUNT_TYPE_READ_ONLY_ADMIN)); } - @Override @DB + @Override @DB @ActionEvent(eventType = EventTypes.EVENT_SNAPSHOT_DELETE, eventDescription = "deleting snapshot", async=true) public boolean deleteSnapshot(DeleteSnapshotCmd cmd) { Long snapshotId = cmd.getId(); diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java index ee715cc8f7f..529c39ac4fe 100755 --- a/server/src/com/cloud/user/AccountManagerImpl.java +++ b/server/src/com/cloud/user/AccountManagerImpl.java @@ -862,7 +862,7 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag List networks = _networkDao.listByOwner(accountId); if (networks != null) { for (NetworkVO network : networks) { - if (!_networkMgr.deleteNetwork(network.getId())) { + if (!_networkMgr.deleteNetworkInternal(network.getId())) { s_logger.warn("Unable to destroy network " + network + " as a part of account id=" + accountId +" cleanup."); accountCleanupNeeded = true; networksDeleted = false; diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index b8ae46abd60..6d91689c2f5 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -278,7 +278,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager return _vmDao.listByHostId(hostId); } - @Override + @Override @ActionEvent (eventType=EventTypes.EVENT_VM_RESETPASSWORD, eventDescription="resetting Vm password", async=true) public UserVm resetVMPassword(ResetVMPasswordCmd cmd, String password) throws ResourceUnavailableException, InsufficientCapacityException{ Account account = UserContext.current().getCaller(); Long userId = UserContext.current().getCallerUserId(); @@ -406,7 +406,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager } - @Override + @Override @ActionEvent(eventType = EventTypes.EVENT_VOLUME_ATTACH, eventDescription = "attaching volume", async=true) public Volume attachVolumeToVM(AttachVolumeCmd command) { Long vmId = command.getVirtualMachineId(); Long volumeId = command.getId(); @@ -634,7 +634,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager } } - @Override + @Override @ActionEvent(eventType = EventTypes.EVENT_VOLUME_DETACH, eventDescription = "detaching volume", async=true) public Volume detachVolumeFromVM(DetachVolumeCmd cmmd) { Account account = UserContext.current().getCaller(); if ((cmmd.getId() == null && cmmd.getDeviceId() == null && cmmd.getVirtualMachineId() == null) ||