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 {

Reply via email to