This is an automated email from the ASF dual-hosted git repository. dahn pushed a commit to branch ghi12612-userUuidPreservation in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit f6e4fa795564b5f22fc515f42ae8d41224b94a46 Author: Daan Hoogland <[email protected]> AuthorDate: Wed Feb 11 18:07:29 2026 +0100 read user.uuid from DB --- api/src/main/java/com/cloud/user/User.java | 2 ++ .../src/main/java/com/cloud/user/UserVO.java | 2 +- .../java/com/cloud/user/dao/AccountDaoImpl.java | 27 +++++++++++----------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/api/src/main/java/com/cloud/user/User.java b/api/src/main/java/com/cloud/user/User.java index 041b39ad272..2c552c2d997 100644 --- a/api/src/main/java/com/cloud/user/User.java +++ b/api/src/main/java/com/cloud/user/User.java @@ -35,6 +35,8 @@ public interface User extends OwnedBy, InternalIdentity { public String getUuid(); + public void setUuid(String uuid); + public Date getCreated(); public Date getRemoved(); diff --git a/engine/schema/src/main/java/com/cloud/user/UserVO.java b/engine/schema/src/main/java/com/cloud/user/UserVO.java index 6e355e102e6..d74aa7ed41b 100644 --- a/engine/schema/src/main/java/com/cloud/user/UserVO.java +++ b/engine/schema/src/main/java/com/cloud/user/UserVO.java @@ -123,8 +123,8 @@ public class UserVO implements User, Identity, InternalIdentity { } public UserVO(long id) { + this(); this.id = id; - this.uuid = UUID.randomUUID().toString(); } public UserVO(long accountId, String username, String password, String firstName, String lastName, String email, String timezone, String uuid, Source source) { diff --git a/engine/schema/src/main/java/com/cloud/user/dao/AccountDaoImpl.java b/engine/schema/src/main/java/com/cloud/user/dao/AccountDaoImpl.java index f5f95d5da1f..83f58f62734 100644 --- a/engine/schema/src/main/java/com/cloud/user/dao/AccountDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/user/dao/AccountDaoImpl.java @@ -42,7 +42,7 @@ import com.cloud.utils.db.TransactionLegacy; @Component public class AccountDaoImpl extends GenericDaoBase<AccountVO, Long> implements AccountDao { - private static final String FIND_USER_ACCOUNT_BY_API_KEY = "SELECT u.id, u.username, u.account_id, u.secret_key, u.state, u.api_key_access, " + private static final String FIND_USER_ACCOUNT_BY_API_KEY = "SELECT u.id, u.uuid u.username, u.account_id, u.secret_key, u.state, u.api_key_access, " + "a.id, a.account_name, a.type, a.role_id, a.domain_id, a.state, a.api_key_access " + "FROM `cloud`.`user` u, `cloud`.`account` a " + "WHERE u.account_id = a.id AND u.api_key = ? and u.removed IS NULL"; @@ -145,24 +145,25 @@ public class AccountDaoImpl extends GenericDaoBase<AccountVO, Long> implements A // TODO: make sure we don't have more than 1 result? ApiKey had better be unique if (rs.next()) { User u = new UserVO(rs.getLong(1)); - u.setUsername(rs.getString(2)); - u.setAccountId(rs.getLong(3)); - u.setSecretKey(DBEncryptionUtil.decrypt(rs.getString(4))); - u.setState(State.getValueOf(rs.getString(5))); - boolean apiKeyAccess = rs.getBoolean(6); + u.setUuid(rs.getString(2)); + u.setUsername(rs.getString(3)); + u.setAccountId(rs.getLong(4)); + u.setSecretKey(DBEncryptionUtil.decrypt(rs.getString(5))); + u.setState(State.getValueOf(rs.getString(6))); + boolean apiKeyAccess = rs.getBoolean(7); if (rs.wasNull()) { u.setApiKeyAccess(null); } else { u.setApiKeyAccess(apiKeyAccess); } - AccountVO a = new AccountVO(rs.getLong(7)); - a.setAccountName(rs.getString(8)); - a.setType(Account.Type.getFromValue(rs.getInt(9))); - a.setRoleId(rs.getLong(10)); - a.setDomainId(rs.getLong(11)); - a.setState(State.getValueOf(rs.getString(12))); - apiKeyAccess = rs.getBoolean(13); + AccountVO a = new AccountVO(rs.getLong(8)); + a.setAccountName(rs.getString(9)); + a.setType(Account.Type.getFromValue(rs.getInt(10))); + a.setRoleId(rs.getLong(11)); + a.setDomainId(rs.getLong(12)); + a.setState(State.getValueOf(rs.getString(13))); + apiKeyAccess = rs.getBoolean(14); if (rs.wasNull()) { a.setApiKeyAccess(null); } else {
