server: remove registered userdata when cleanup an account (#7777)

This commit is contained in:
Wei Zhou 2023-08-10 20:33:59 +08:00 committed by GitHub
parent fdb23dae40
commit 1605b2f0db
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 20 additions and 0 deletions

View File

@ -25,4 +25,6 @@ public interface UserDataDao extends GenericDao<UserDataVO, Long> {
public UserDataVO findByName(long accountId, long domainId, String name);
int removeByAccountId(long accountId);
}

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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

View File

@ -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