This is an automated email from the ASF dual-hosted git repository.
dahn pushed a commit to branch 4.18
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.18 by this push:
new 1605b2f0dbd server: remove registered userdata when cleanup an account
(#7777)
1605b2f0dbd is described below
commit 1605b2f0dbde83c2ad89531c01f4ed505df73dca
Author: Wei Zhou <[email protected]>
AuthorDate: Thu Aug 10 20:33:59 2023 +0800
server: remove registered userdata when cleanup an account (#7777)
---
engine/schema/src/main/java/com/cloud/user/dao/UserDataDao.java | 2 ++
.../schema/src/main/java/com/cloud/user/dao/UserDataDaoImpl.java | 7 +++++++
server/src/main/java/com/cloud/user/AccountManagerImpl.java | 7 +++++++
server/src/test/java/com/cloud/user/AccountManagerImplTest.java | 1 +
.../src/test/java/com/cloud/user/AccountManagetImplTestBase.java | 3 +++
5 files changed, 20 insertions(+)
diff --git a/engine/schema/src/main/java/com/cloud/user/dao/UserDataDao.java
b/engine/schema/src/main/java/com/cloud/user/dao/UserDataDao.java
index f012d41db5e..2733d8d2782 100644
--- a/engine/schema/src/main/java/com/cloud/user/dao/UserDataDao.java
+++ b/engine/schema/src/main/java/com/cloud/user/dao/UserDataDao.java
@@ -25,4 +25,6 @@ public interface UserDataDao extends GenericDao<UserDataVO,
Long> {
public UserDataVO findByName(long accountId, long domainId, String name);
+ int removeByAccountId(long accountId);
+
}
diff --git
a/engine/schema/src/main/java/com/cloud/user/dao/UserDataDaoImpl.java
b/engine/schema/src/main/java/com/cloud/user/dao/UserDataDaoImpl.java
index 416c4418a57..ded0cd172da 100644
--- a/engine/schema/src/main/java/com/cloud/user/dao/UserDataDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/user/dao/UserDataDaoImpl.java
@@ -63,4 +63,11 @@ public class UserDataDaoImpl extends
GenericDaoBase<UserDataVO, Long> implements
return findOneBy(sc);
}
+
+ @Override
+ public int removeByAccountId(long accountId) {
+ SearchCriteria<UserDataVO> sc = userdataSearch.create();
+ sc.setParameters("accountId", accountId);
+ return remove(sc);
+ }
}
diff --git a/server/src/main/java/com/cloud/user/AccountManagerImpl.java
b/server/src/main/java/com/cloud/user/AccountManagerImpl.java
index 38b2eddeb60..c20e2fc2abf 100644
--- a/server/src/main/java/com/cloud/user/AccountManagerImpl.java
+++ b/server/src/main/java/com/cloud/user/AccountManagerImpl.java
@@ -162,6 +162,7 @@ import com.cloud.user.dao.AccountDao;
import com.cloud.user.dao.SSHKeyPairDao;
import com.cloud.user.dao.UserAccountDao;
import com.cloud.user.dao.UserDao;
+import com.cloud.user.dao.UserDataDao;
import com.cloud.utils.ConstantTimeComparator;
import com.cloud.utils.NumbersUtil;
import com.cloud.utils.Pair;
@@ -292,6 +293,8 @@ public class AccountManagerImpl extends ManagerBase
implements AccountManager, M
private GlobalLoadBalancerRuleDao _gslbRuleDao;
@Inject
private SSHKeyPairDao _sshKeyPairDao;
+ @Inject
+ private UserDataDao userDataDao;
private List<QuerySelector> _querySelectors;
@@ -1089,6 +1092,10 @@ public class AccountManagerImpl extends ManagerBase
implements AccountManager, M
for (SSHKeyPairVO keypair : sshkeypairs) {
_sshKeyPairDao.remove(keypair.getId());
}
+
+ // Delete registered UserData
+ userDataDao.removeByAccountId(accountId);
+
return true;
} catch (Exception ex) {
s_logger.warn("Failed to cleanup account " + account + " due to ",
ex);
diff --git a/server/src/test/java/com/cloud/user/AccountManagerImplTest.java
b/server/src/test/java/com/cloud/user/AccountManagerImplTest.java
index 71127137a9c..c79b5069c2d 100644
--- a/server/src/test/java/com/cloud/user/AccountManagerImplTest.java
+++ b/server/src/test/java/com/cloud/user/AccountManagerImplTest.java
@@ -164,6 +164,7 @@ public class AccountManagerImplTest extends
AccountManagetImplTestBase {
sshkeyList.add(sshkey);
Mockito.when(_sshKeyPairDao.listKeyPairs(Mockito.anyLong(),
Mockito.anyLong())).thenReturn(sshkeyList);
Mockito.when(_sshKeyPairDao.remove(Mockito.anyLong())).thenReturn(true);
+
Mockito.when(userDataDao.removeByAccountId(Mockito.anyLong())).thenReturn(222);
Assert.assertTrue(accountManagerImpl.deleteUserAccount(42l));
// assert that this was a clean delete
diff --git
a/server/src/test/java/com/cloud/user/AccountManagetImplTestBase.java
b/server/src/test/java/com/cloud/user/AccountManagetImplTestBase.java
index 7648ec155bc..7bc14a40c12 100644
--- a/server/src/test/java/com/cloud/user/AccountManagetImplTestBase.java
+++ b/server/src/test/java/com/cloud/user/AccountManagetImplTestBase.java
@@ -73,6 +73,7 @@ import com.cloud.user.dao.AccountDao;
import com.cloud.user.dao.SSHKeyPairDao;
import com.cloud.user.dao.UserAccountDao;
import com.cloud.user.dao.UserDao;
+import com.cloud.user.dao.UserDataDao;
import com.cloud.vm.VirtualMachineManager;
import com.cloud.vm.dao.DomainRouterDao;
import com.cloud.vm.dao.InstanceGroupDao;
@@ -193,6 +194,8 @@ public class AccountManagetImplTestBase {
OrchestrationService _orchSrvc;
@Mock
SSHKeyPairDao _sshKeyPairDao;
+ @Mock
+ UserDataDao userDataDao;
@Spy
@InjectMocks