This is an automated email from the ASF dual-hosted git repository. harikrishna pushed a commit to branch 4.19 in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.19 by this push: new fd46e61032f Added events for snapshots, vmsnapshots, internalLB operations (#11230) fd46e61032f is described below commit fd46e61032f15c3bdc906b445a7f2ee607488240 Author: Harikrishna <harikrishna.patn...@gmail.com> AuthorDate: Tue Sep 2 18:02:30 2025 +0530 Added events for snapshots, vmsnapshots, internalLB operations (#11230) * Added events for snapshots, vmsnapshots, internalLB operations * Update server/src/main/java/com/cloud/resource/ResourceManagerImpl.java Co-authored-by: Suresh Kumar Anaparti <sureshkumar.anapa...@gmail.com> * small fix * Unit test - ArgumentMatchers change Co-authored-by: dahn <daan.hoogl...@gmail.com> * Unit test - ArgumentMatchers change Co-authored-by: dahn <daan.hoogl...@gmail.com> --------- Co-authored-by: Suresh Kumar Anaparti <sureshkumar.anapa...@gmail.com> Co-authored-by: dahn <daan.hoogl...@gmail.com> --- .../user/snapshot/CreateSnapshotFromVMSnapshotCmd.java | 5 +++++ .../network/lb/InternalLoadBalancerVMManagerImpl.java | 4 ++++ .../internallbvmmgr/InternalLBVMServiceTest.java | 16 ++++++++++++++-- .../java/com/cloud/resource/ResourceManagerImpl.java | 7 ++++++- .../com/cloud/storage/snapshot/SnapshotManagerImpl.java | 2 ++ 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/snapshot/CreateSnapshotFromVMSnapshotCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/snapshot/CreateSnapshotFromVMSnapshotCmd.java index 7b89e87202d..d33a3ba224c 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/snapshot/CreateSnapshotFromVMSnapshotCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/snapshot/CreateSnapshotFromVMSnapshotCmd.java @@ -210,4 +210,9 @@ public class CreateSnapshotFromVMSnapshotCmd extends BaseAsyncCreateCmd { } return null; } + + @Override + public Long getApiResourceId() { + return getEntityId(); + } } diff --git a/plugins/network-elements/internal-loadbalancer/src/main/java/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java b/plugins/network-elements/internal-loadbalancer/src/main/java/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java index a53f27188aa..70c29a64c1c 100644 --- a/plugins/network-elements/internal-loadbalancer/src/main/java/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java +++ b/plugins/network-elements/internal-loadbalancer/src/main/java/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java @@ -26,6 +26,8 @@ import java.util.Map; import javax.inject.Inject; import javax.naming.ConfigurationException; +import com.cloud.event.ActionEvent; +import com.cloud.event.EventTypes; import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; @@ -540,6 +542,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements In } @Override + @ActionEvent(eventType = EventTypes.EVENT_INTERNAL_LB_VM_STOP, eventDescription = "stopping internal LB VM", async = true) public VirtualRouter stopInternalLbVm(final long vmId, final boolean forced, final Account caller, final long callerUserId) throws ConcurrentOperationException, ResourceUnavailableException { final DomainRouterVO internalLbVm = _internalLbVmDao.findById(vmId); if (internalLbVm == null || internalLbVm.getRole() != Role.INTERNAL_LB_VM) { @@ -928,6 +931,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements In } @Override + @ActionEvent(eventType = EventTypes.EVENT_INTERNAL_LB_VM_START, eventDescription = "starting internal LB VM", async = true) public VirtualRouter startInternalLbVm(final long internalLbVmId, final Account caller, final long callerUserId) throws StorageUnavailableException, InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException { diff --git a/plugins/network-elements/internal-loadbalancer/src/test/java/org/apache/cloudstack/internallbvmmgr/InternalLBVMServiceTest.java b/plugins/network-elements/internal-loadbalancer/src/test/java/org/apache/cloudstack/internallbvmmgr/InternalLBVMServiceTest.java index 9141190df1f..fd44dcd981c 100644 --- a/plugins/network-elements/internal-loadbalancer/src/test/java/org/apache/cloudstack/internallbvmmgr/InternalLBVMServiceTest.java +++ b/plugins/network-elements/internal-loadbalancer/src/test/java/org/apache/cloudstack/internallbvmmgr/InternalLBVMServiceTest.java @@ -16,6 +16,9 @@ // under the License. package org.apache.cloudstack.internallbvmmgr; +import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.nullable; import java.lang.reflect.Field; @@ -24,13 +27,15 @@ import java.util.List; import javax.inject.Inject; +import com.cloud.event.ActionEventUtils; import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.network.lb.InternalLoadBalancerVMService; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Matchers; +import org.mockito.BDDMockito; +import org.mockito.MockedStatic; import org.mockito.Mockito; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -82,6 +87,8 @@ public class InternalLBVMServiceTest extends TestCase { @Inject AccountDao _accountDao; + private MockedStatic<ActionEventUtils> actionEventUtilsMocked; + long validVmId = 1L; long nonExistingVmId = 2L; long nonInternalLbVmId = 3L; @@ -105,7 +112,7 @@ public class InternalLBVMServiceTest extends TestCase { Mockito.when(_accountMgr.getSystemUser()).thenReturn(new UserVO(1)); Mockito.when(_accountMgr.getSystemAccount()).thenReturn(new AccountVO(2)); - Mockito.when(_accountDao.findByIdIncludingRemoved(Matchers.anyLong())).thenReturn(new AccountVO(2)); + Mockito.when(_accountDao.findByIdIncludingRemoved(anyLong())).thenReturn(new AccountVO(2)); CallContext.register(_accountMgr.getSystemUser(), _accountMgr.getSystemAccount()); final DomainRouterVO validVm = @@ -120,11 +127,16 @@ public class InternalLBVMServiceTest extends TestCase { Mockito.when(_domainRouterDao.findById(validVmId)).thenReturn(validVm); Mockito.when(_domainRouterDao.findById(nonExistingVmId)).thenReturn(null); Mockito.when(_domainRouterDao.findById(nonInternalLbVmId)).thenReturn(nonInternalLbVm); + + actionEventUtilsMocked = Mockito.mockStatic(ActionEventUtils.class); + BDDMockito.given(ActionEventUtils.onStartedActionEvent(anyLong(), anyLong(), anyString(), anyString(), anyLong(), anyString(), anyBoolean(), anyLong())) + .willReturn(1L); } @Override @After public void tearDown() { + actionEventUtilsMocked.close(); CallContext.unregister(); } diff --git a/server/src/main/java/com/cloud/resource/ResourceManagerImpl.java b/server/src/main/java/com/cloud/resource/ResourceManagerImpl.java index e0cefc7b4bf..96fe734ed89 100755 --- a/server/src/main/java/com/cloud/resource/ResourceManagerImpl.java +++ b/server/src/main/java/com/cloud/resource/ResourceManagerImpl.java @@ -1251,6 +1251,8 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager, } @Override + @DB + @ActionEvent(eventType = EventTypes.EVENT_MAINTENANCE_CANCEL, eventDescription = "cancel maintenance for host", async = true) public Host cancelMaintenance(final CancelMaintenanceCmd cmd) { final Long hostId = cmd.getId(); @@ -1274,6 +1276,8 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager, } @Override + @DB + @ActionEvent(eventType = EventTypes.EVENT_HOST_RECONNECT, eventDescription = "reconnecting host", async = true) public Host reconnectHost(ReconnectHostCmd cmd) throws AgentUnavailableException { Long hostId = cmd.getId(); @@ -1344,7 +1348,6 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager, throw new CloudRuntimeException(err + e.getMessage()); } - ActionEventUtils.onStartedActionEvent(CallContext.current().getCallingUserId(), CallContext.current().getCallingAccountId(), EventTypes.EVENT_MAINTENANCE_PREPARE, "starting maintenance for host " + hostId, hostId, null, true, 0); _agentMgr.pullAgentToMaintenance(hostId); /* TODO: move below to listener */ @@ -1472,6 +1475,8 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager, } @Override + @DB + @ActionEvent(eventType = EventTypes.EVENT_MAINTENANCE_PREPARE, eventDescription = "prepare maintenance for host", async = true) public Host maintain(final PrepareForMaintenanceCmd cmd) { final Long hostId = cmd.getId(); final HostVO host = _hostDao.findById(hostId); diff --git a/server/src/main/java/com/cloud/storage/snapshot/SnapshotManagerImpl.java b/server/src/main/java/com/cloud/storage/snapshot/SnapshotManagerImpl.java index eed220836a4..4ae34517357 100755 --- a/server/src/main/java/com/cloud/storage/snapshot/SnapshotManagerImpl.java +++ b/server/src/main/java/com/cloud/storage/snapshot/SnapshotManagerImpl.java @@ -492,6 +492,8 @@ public class SnapshotManagerImpl extends MutualExclusiveIdsManagerBase implement } @Override + @DB + @ActionEvent(eventType = EventTypes.EVENT_SNAPSHOT_CREATE, eventDescription = "creating snapshot from VM snapshot", async = true) public Snapshot backupSnapshotFromVmSnapshot(Long snapshotId, Long vmId, Long volumeId, Long vmSnapshotId) { VMInstanceVO vm = _vmDao.findById(vmId); if (vm == null) {