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 <[email protected]>
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 <[email protected]>
* small fix
* Unit test - ArgumentMatchers change
Co-authored-by: dahn <[email protected]>
* Unit test - ArgumentMatchers change
Co-authored-by: dahn <[email protected]>
---------
Co-authored-by: Suresh Kumar Anaparti <[email protected]>
Co-authored-by: dahn <[email protected]>
---
.../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) {