From 709340623a353c076c28919f63d5b93d6a2a1393 Mon Sep 17 00:00:00 2001 From: Harikrishna Patnala Date: Wed, 22 Jan 2025 13:30:16 +0530 Subject: [PATCH 1/4] Fix retreiving decrypted values from details table for config values --- .../java/com/cloud/dc/ClusterDetailsDao.java | 2 ++ .../com/cloud/dc/ClusterDetailsDaoImpl.java | 18 ++++++++++++++- .../cloud/dc/dao/DataCenterDetailsDao.java | 2 ++ .../dc/dao/DataCenterDetailsDaoImpl.java | 22 ++++++++++++++++--- .../dao/StoragePoolDetailsDaoImpl.java | 16 +++++++++++++- .../datastore/db/ImageStoreDetailsDao.java | 2 ++ .../db/ImageStoreDetailsDaoImpl.java | 16 +++++++++++++- .../datastore/db/StoragePoolDetailsDao.java | 1 + 8 files changed, 73 insertions(+), 6 deletions(-) diff --git a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDao.java b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDao.java index 06c9c5255048..690d4c678705 100644 --- a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDao.java +++ b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDao.java @@ -32,4 +32,6 @@ public interface ClusterDetailsDao extends GenericDao { void deleteDetails(long clusterId); String getVmwareDcName(Long clusterId); + + String getActualValue(ClusterDetailsVO clusterDetailsVO); } diff --git a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java index c2058ad5644b..3b747eff37b2 100644 --- a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java @@ -30,8 +30,15 @@ import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.TransactionLegacy; +import org.apache.cloudstack.framework.config.dao.ConfigurationDao; +import org.apache.cloudstack.framework.config.impl.ConfigurationVO; + +import javax.inject.Inject; public class ClusterDetailsDaoImpl extends GenericDaoBase implements ClusterDetailsDao, ScopedConfigStorage { + + @Inject + private ConfigurationDao _configDao; protected final SearchBuilder ClusterSearch; protected final SearchBuilder DetailSearch; @@ -138,7 +145,7 @@ public Scope getScope() { @Override public String getConfigValue(long id, ConfigKey key) { ClusterDetailsVO vo = findDetail(id, key.key()); - return vo == null ? null : vo.getValue(); + return vo == null ? null : getActualValue(vo); } @Override @@ -161,4 +168,13 @@ private String getCpuMemoryOvercommitRatio(String name) { return name; } + + @Override + public String getActualValue(ClusterDetailsVO clusterDetailsVO) { + ConfigurationVO configurationVO = _configDao.findByName(clusterDetailsVO.getName()); + if (configurationVO != null && configurationVO.isEncrypted()) { + return DBEncryptionUtil.decrypt(clusterDetailsVO.getValue()); + } + return clusterDetailsVO.getValue(); + } } diff --git a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDao.java b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDao.java index a85590bd4c6d..de71694b2ed3 100644 --- a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDao.java +++ b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDao.java @@ -22,4 +22,6 @@ public interface DataCenterDetailsDao extends GenericDao, ResourceDetailsDao { void persist(long zoneId, String name, String value); + + String getActualValue(DataCenterDetailVO dataCenterDetailVO); } diff --git a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java index e36c8ebd6c7c..24be1a83f030 100644 --- a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java @@ -16,10 +16,12 @@ // under the License. package com.cloud.dc.dao; -import org.apache.cloudstack.api.ResourceDetail; +import com.cloud.utils.crypt.DBEncryptionUtil; import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.ConfigKey.Scope; import org.apache.cloudstack.framework.config.ScopedConfigStorage; +import org.apache.cloudstack.framework.config.dao.ConfigurationDao; +import org.apache.cloudstack.framework.config.impl.ConfigurationVO; import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase; import com.cloud.dc.DataCenterDetailVO; @@ -27,8 +29,13 @@ import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.TransactionLegacy; +import javax.inject.Inject; + public class DataCenterDetailsDaoImpl extends ResourceDetailsDaoBase implements DataCenterDetailsDao, ScopedConfigStorage { + @Inject + private ConfigurationDao _configDao; + private final SearchBuilder DetailSearch; DataCenterDetailsDaoImpl() { @@ -45,8 +52,8 @@ public Scope getScope() { @Override public String getConfigValue(long id, ConfigKey key) { - ResourceDetail vo = findDetail(id, key.key()); - return vo == null ? null : vo.getValue(); + DataCenterDetailVO vo = findDetail(id, key.key()); + return vo == null ? null : getActualValue(vo); } @Override @@ -67,4 +74,13 @@ public void persist(long zoneId, String name, String value) { persist(vo); txn.commit(); } + + @Override + public String getActualValue(DataCenterDetailVO dataCenterDetailVO) { + ConfigurationVO configurationVO = _configDao.findByName(dataCenterDetailVO.getName()); + if (configurationVO != null && configurationVO.isEncrypted()) { + return DBEncryptionUtil.decrypt(dataCenterDetailVO.getValue()); + } + return dataCenterDetailVO.getValue(); + } } diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java index 0c39a8c581aa..56c3eb0ab8ef 100644 --- a/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java @@ -17,9 +17,12 @@ package com.cloud.storage.dao; +import com.cloud.utils.crypt.DBEncryptionUtil; import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.ConfigKey.Scope; import org.apache.cloudstack.framework.config.ScopedConfigStorage; +import org.apache.cloudstack.framework.config.dao.ConfigurationDao; +import org.apache.cloudstack.framework.config.impl.ConfigurationVO; import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase; import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO; @@ -33,6 +36,8 @@ public class StoragePoolDetailsDaoImpl extends ResourceDetailsDaoBase key) { StoragePoolDetailVO vo = findDetail(id, key.key()); - return vo == null ? null : vo.getValue(); + return vo == null ? null : getActualValue(vo); } @Override @@ -56,4 +61,13 @@ public void addDetail(long resourceId, String key, String value, boolean display } super.addDetail(new StoragePoolDetailVO(resourceId, key, value, display)); } + + @Override + public String getActualValue(StoragePoolDetailVO storagePoolDetailVO) { + ConfigurationVO configurationVO = _configDao.findByName(storagePoolDetailVO.getName()); + if (configurationVO != null && configurationVO.isEncrypted()) { + return DBEncryptionUtil.decrypt(storagePoolDetailVO.getValue()); + } + return storagePoolDetailVO.getValue(); + } } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDao.java b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDao.java index 04cd70308a44..e7e4ecf7ff7d 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDao.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDao.java @@ -29,4 +29,6 @@ public interface ImageStoreDetailsDao extends GenericDao getDetails(long storeId); void deleteDetails(long storeId); + + String getActualValue(ImageStoreDetailVO imageStorageDetailVO); } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java index 8e5ce770f450..4e8d73cdf94e 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java @@ -20,6 +20,8 @@ import java.util.List; import java.util.Map; +import org.apache.cloudstack.framework.config.dao.ConfigurationDao; +import org.apache.cloudstack.framework.config.impl.ConfigurationVO; import org.springframework.stereotype.Component; import com.cloud.utils.crypt.DBEncryptionUtil; @@ -35,9 +37,13 @@ import org.apache.cloudstack.framework.config.ScopedConfigStorage; import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase; +import javax.inject.Inject; + @Component public class ImageStoreDetailsDaoImpl extends ResourceDetailsDaoBase implements ImageStoreDetailsDao, ScopedConfigStorage { + @Inject + private ConfigurationDao _configDao; protected final SearchBuilder storeSearch; public ImageStoreDetailsDaoImpl() { @@ -108,7 +114,7 @@ public ImageStoreDetailVO findDetail(long storeId, String name) { @Override public String getConfigValue(long id, ConfigKey key) { ImageStoreDetailVO vo = findDetail(id, key.key()); - return vo == null ? null : vo.getValue(); + return vo == null ? null : getActualValue(vo); } @Override @@ -116,4 +122,12 @@ public void addDetail(long resourceId, String key, String value, boolean display super.addDetail(new ImageStoreDetailVO(resourceId, key, value, display)); } + @Override + public String getActualValue(ImageStoreDetailVO imageStorageDetailVO) { + ConfigurationVO configurationVO = _configDao.findByName(imageStorageDetailVO.getName()); + if (configurationVO != null && configurationVO.isEncrypted()) { + return DBEncryptionUtil.decrypt(imageStorageDetailVO.getValue()); + } + return imageStorageDetailVO.getValue(); + } } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java index 114a5b740fe9..fe8093f2f6e5 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java @@ -21,4 +21,5 @@ import com.cloud.utils.db.GenericDao; public interface StoragePoolDetailsDao extends GenericDao, ResourceDetailsDao { + String getActualValue(StoragePoolDetailVO storagePoolDetailVO); } From 17c436ec1a65d72821aea6c8d16aa3a543dcc233 Mon Sep 17 00:00:00 2001 From: Harikrishna Patnala Date: Wed, 22 Jan 2025 16:35:51 +0530 Subject: [PATCH 2/4] use ResourceDetail interface --- .../java/com/cloud/dc/ClusterDetailsDao.java | 5 ++-- .../com/cloud/dc/ClusterDetailsDaoImpl.java | 24 ++++++------------- .../java/com/cloud/dc/ClusterDetailsVO.java | 14 +++++++++-- .../cloud/dc/dao/DataCenterDetailsDao.java | 2 -- .../dc/dao/DataCenterDetailsDaoImpl.java | 17 ------------- .../java/com/cloud/domain/DomainDetailVO.java | 14 +++++++++-- .../cloud/domain/dao/DomainDetailsDao.java | 5 ++-- .../domain/dao/DomainDetailsDaoImpl.java | 20 ++++++---------- .../dao/StoragePoolDetailsDaoImpl.java | 14 ----------- .../java/com/cloud/user/AccountDetailVO.java | 14 +++++++++-- .../com/cloud/user/AccountDetailsDao.java | 5 ++-- .../com/cloud/user/AccountDetailsDaoImpl.java | 20 ++++++---------- .../resourcedetail/ResourceDetailsDao.java | 2 ++ .../ResourceDetailsDaoBase.java | 18 ++++++++++++++ .../datastore/db/ImageStoreDetailsDao.java | 2 -- .../db/ImageStoreDetailsDaoImpl.java | 16 ------------- .../datastore/db/StoragePoolDetailsDao.java | 1 - 17 files changed, 83 insertions(+), 110 deletions(-) diff --git a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDao.java b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDao.java index 690d4c678705..b54cc8b3c214 100644 --- a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDao.java +++ b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDao.java @@ -19,8 +19,9 @@ import java.util.Map; import com.cloud.utils.db.GenericDao; +import org.apache.cloudstack.resourcedetail.ResourceDetailsDao; -public interface ClusterDetailsDao extends GenericDao { +public interface ClusterDetailsDao extends GenericDao, ResourceDetailsDao { Map findDetails(long clusterId); void persist(long clusterId, Map details); @@ -32,6 +33,4 @@ public interface ClusterDetailsDao extends GenericDao { void deleteDetails(long clusterId); String getVmwareDcName(Long clusterId); - - String getActualValue(ClusterDetailsVO clusterDetailsVO); } diff --git a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java index 3b747eff37b2..70aaf91c6ae4 100644 --- a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java @@ -26,19 +26,13 @@ import org.apache.cloudstack.framework.config.ScopedConfigStorage; import com.cloud.utils.crypt.DBEncryptionUtil; -import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.TransactionLegacy; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; -import org.apache.cloudstack.framework.config.impl.ConfigurationVO; +import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase; -import javax.inject.Inject; +public class ClusterDetailsDaoImpl extends ResourceDetailsDaoBase implements ClusterDetailsDao, ScopedConfigStorage { -public class ClusterDetailsDaoImpl extends GenericDaoBase implements ClusterDetailsDao, ScopedConfigStorage { - - @Inject - private ConfigurationDao _configDao; protected final SearchBuilder ClusterSearch; protected final SearchBuilder DetailSearch; @@ -73,6 +67,11 @@ public ClusterDetailsVO findDetail(long clusterId, String name) { return detail; } + @Override + public void addDetail(long resourceId, String key, String value, boolean display) { + super.addDetail(new ClusterDetailsVO(resourceId, key, value)); + } + @Override public Map findDetails(long clusterId) { SearchCriteria sc = ClusterSearch.create(); @@ -168,13 +167,4 @@ private String getCpuMemoryOvercommitRatio(String name) { return name; } - - @Override - public String getActualValue(ClusterDetailsVO clusterDetailsVO) { - ConfigurationVO configurationVO = _configDao.findByName(clusterDetailsVO.getName()); - if (configurationVO != null && configurationVO.isEncrypted()) { - return DBEncryptionUtil.decrypt(clusterDetailsVO.getValue()); - } - return clusterDetailsVO.getValue(); - } } diff --git a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsVO.java b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsVO.java index 6eb9e7466a7e..810fff2851fa 100644 --- a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsVO.java +++ b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsVO.java @@ -23,11 +23,11 @@ import javax.persistence.Id; import javax.persistence.Table; -import org.apache.cloudstack.api.InternalIdentity; +import org.apache.cloudstack.api.ResourceDetail; @Entity @Table(name = "cluster_details") -public class ClusterDetailsVO implements InternalIdentity { +public class ClusterDetailsVO implements ResourceDetail { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -56,6 +56,11 @@ public long getClusterId() { return clusterId; } + @Override + public long getResourceId() { + return clusterId; + } + public String getName() { return name; } @@ -64,6 +69,11 @@ public String getValue() { return value; } + @Override + public boolean isDisplay() { + return true; + } + public void setValue(String value) { this.value = value; } diff --git a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDao.java b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDao.java index de71694b2ed3..a85590bd4c6d 100644 --- a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDao.java +++ b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDao.java @@ -22,6 +22,4 @@ public interface DataCenterDetailsDao extends GenericDao, ResourceDetailsDao { void persist(long zoneId, String name, String value); - - String getActualValue(DataCenterDetailVO dataCenterDetailVO); } diff --git a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java index 24be1a83f030..27210dfcf0db 100644 --- a/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java @@ -16,12 +16,9 @@ // under the License. package com.cloud.dc.dao; -import com.cloud.utils.crypt.DBEncryptionUtil; import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.ConfigKey.Scope; import org.apache.cloudstack.framework.config.ScopedConfigStorage; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; -import org.apache.cloudstack.framework.config.impl.ConfigurationVO; import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase; import com.cloud.dc.DataCenterDetailVO; @@ -29,13 +26,8 @@ import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.TransactionLegacy; -import javax.inject.Inject; - public class DataCenterDetailsDaoImpl extends ResourceDetailsDaoBase implements DataCenterDetailsDao, ScopedConfigStorage { - @Inject - private ConfigurationDao _configDao; - private final SearchBuilder DetailSearch; DataCenterDetailsDaoImpl() { @@ -74,13 +66,4 @@ public void persist(long zoneId, String name, String value) { persist(vo); txn.commit(); } - - @Override - public String getActualValue(DataCenterDetailVO dataCenterDetailVO) { - ConfigurationVO configurationVO = _configDao.findByName(dataCenterDetailVO.getName()); - if (configurationVO != null && configurationVO.isEncrypted()) { - return DBEncryptionUtil.decrypt(dataCenterDetailVO.getValue()); - } - return dataCenterDetailVO.getValue(); - } } diff --git a/engine/schema/src/main/java/com/cloud/domain/DomainDetailVO.java b/engine/schema/src/main/java/com/cloud/domain/DomainDetailVO.java index df5a2283baa2..62443697d3a8 100644 --- a/engine/schema/src/main/java/com/cloud/domain/DomainDetailVO.java +++ b/engine/schema/src/main/java/com/cloud/domain/DomainDetailVO.java @@ -23,11 +23,11 @@ import javax.persistence.Id; import javax.persistence.Table; -import org.apache.cloudstack.api.InternalIdentity; +import org.apache.cloudstack.api.ResourceDetail; @Entity @Table(name = "domain_details") -public class DomainDetailVO implements InternalIdentity { +public class DomainDetailVO implements ResourceDetail { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") @@ -55,6 +55,11 @@ public long getDomainId() { return domainId; } + @Override + public long getResourceId() { + return domainId; + } + public String getName() { return name; } @@ -63,6 +68,11 @@ public String getValue() { return value; } + @Override + public boolean isDisplay() { + return true; + } + public void setValue(String value) { this.value = value; } diff --git a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDao.java b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDao.java index 6b53e49764e4..ae149ff43812 100644 --- a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDao.java +++ b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDao.java @@ -20,8 +20,9 @@ import com.cloud.domain.DomainDetailVO; import com.cloud.utils.db.GenericDao; +import org.apache.cloudstack.resourcedetail.ResourceDetailsDao; -public interface DomainDetailsDao extends GenericDao { +public interface DomainDetailsDao extends GenericDao, ResourceDetailsDao { Map findDetails(long domainId); void persist(long domainId, Map details); @@ -31,6 +32,4 @@ public interface DomainDetailsDao extends GenericDao { void deleteDetails(long domainId); void update(long domainId, Map details); - - String getActualValue(DomainDetailVO domainDetailVO); } diff --git a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java index 50097d154f5f..148f364e9921 100644 --- a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java @@ -24,8 +24,6 @@ import com.cloud.domain.DomainDetailVO; import com.cloud.domain.DomainVO; -import com.cloud.utils.crypt.DBEncryptionUtil; -import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; @@ -35,9 +33,9 @@ import org.apache.cloudstack.framework.config.ConfigKey.Scope; import org.apache.cloudstack.framework.config.ScopedConfigStorage; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; -import org.apache.cloudstack.framework.config.impl.ConfigurationVO; +import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase; -public class DomainDetailsDaoImpl extends GenericDaoBase implements DomainDetailsDao, ScopedConfigStorage { +public class DomainDetailsDaoImpl extends ResourceDetailsDaoBase implements DomainDetailsDao, ScopedConfigStorage { protected final SearchBuilder domainSearch; @Inject @@ -85,6 +83,11 @@ public DomainDetailVO findDetail(long domainId, String name) { return sc.find(); } + @Override + public void addDetail(long resourceId, String key, String value, boolean display) { + super.addDetail(new DomainDetailVO(resourceId, key, value)); + } + @Override public void deleteDetails(long domainId) { SearchCriteria sc = domainSearch.create(); @@ -129,13 +132,4 @@ public String getConfigValue(long id, ConfigKey key) { } return vo == null ? null : getActualValue(vo); } - - @Override - public String getActualValue(DomainDetailVO domainDetailVO) { - ConfigurationVO configurationVO = _configDao.findByName(domainDetailVO.getName()); - if (configurationVO != null && configurationVO.isEncrypted()) { - return DBEncryptionUtil.decrypt(domainDetailVO.getValue()); - } - return domainDetailVO.getValue(); - } } diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java index 56c3eb0ab8ef..559978ef2846 100644 --- a/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java @@ -17,12 +17,9 @@ package com.cloud.storage.dao; -import com.cloud.utils.crypt.DBEncryptionUtil; import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.ConfigKey.Scope; import org.apache.cloudstack.framework.config.ScopedConfigStorage; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; -import org.apache.cloudstack.framework.config.impl.ConfigurationVO; import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase; import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO; @@ -36,8 +33,6 @@ public class StoragePoolDetailsDaoImpl extends ResourceDetailsDaoBase { +public interface AccountDetailsDao extends GenericDao, ResourceDetailsDao { Map findDetails(long accountId); void persist(long accountId, Map details); @@ -34,6 +35,4 @@ public interface AccountDetailsDao extends GenericDao { * they will get created */ void update(long accountId, Map details); - - String getActualValue(AccountDetailVO accountDetailVO); } diff --git a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java index de562e27f9e5..2d504d83c1f4 100644 --- a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java @@ -23,7 +23,6 @@ import javax.inject.Inject; -import com.cloud.utils.crypt.DBEncryptionUtil; import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.ConfigKey.Scope; import org.apache.cloudstack.framework.config.ScopedConfigStorage; @@ -34,16 +33,15 @@ import com.cloud.domain.dao.DomainDao; import com.cloud.user.dao.AccountDao; -import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.SearchCriteria.Op; import com.cloud.utils.db.TransactionLegacy; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; -import org.apache.cloudstack.framework.config.impl.ConfigurationVO; +import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase; -public class AccountDetailsDaoImpl extends GenericDaoBase implements AccountDetailsDao, ScopedConfigStorage { +public class AccountDetailsDaoImpl extends ResourceDetailsDaoBase implements AccountDetailsDao, ScopedConfigStorage { protected final SearchBuilder accountSearch; @Inject @@ -95,6 +93,11 @@ public AccountDetailVO findDetail(long accountId, String name) { return sc.find(); } + @Override + public void addDetail(long resourceId, String key, String value, boolean display) { + super.addDetail(new AccountDetailVO(resourceId, key, value)); + } + @Override public void deleteDetails(long accountId) { SearchCriteria sc = accountSearch.create(); @@ -154,13 +157,4 @@ public String getConfigValue(long id, ConfigKey key) { } return value; } - - @Override - public String getActualValue(AccountDetailVO accountDetailVO) { - ConfigurationVO configurationVO = _configDao.findByName(accountDetailVO.getName()); - if (configurationVO != null && configurationVO.isEncrypted()) { - return DBEncryptionUtil.decrypt(accountDetailVO.getValue()); - } - return accountDetailVO.getValue(); - } } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java index 5a173191be1f..6daf8f022315 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java @@ -97,4 +97,6 @@ public interface ResourceDetailsDao extends GenericDao public void addDetail(long resourceId, String key, String value, boolean display); public List findResourceIdsByNameAndValueIn(String name, Object[] values); + + String getActualValue(ResourceDetail resourceDetail); } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java index 37ebfebf5ddd..7654a371ce6f 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Map; +import com.cloud.utils.crypt.DBEncryptionUtil; import org.apache.cloudstack.api.ResourceDetail; import com.cloud.utils.db.GenericDaoBase; @@ -28,8 +29,16 @@ import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.TransactionLegacy; import com.cloud.utils.db.SearchCriteria.Op; +import org.apache.cloudstack.framework.config.dao.ConfigurationDao; +import org.apache.cloudstack.framework.config.impl.ConfigurationVO; + +import javax.inject.Inject; public abstract class ResourceDetailsDaoBase extends GenericDaoBase implements ResourceDetailsDao { + + @Inject + private ConfigurationDao _configDao; + private SearchBuilder AllFieldsSearch; public ResourceDetailsDaoBase() { @@ -201,4 +210,13 @@ public List findResourceIdsByNameAndValueIn(String name, Object[] values) return customSearch(sc, null); } + + @Override + public String getActualValue(ResourceDetail resourceDetail) { + ConfigurationVO configurationVO = _configDao.findByName(resourceDetail.getName()); + if (configurationVO != null && configurationVO.isEncrypted()) { + return DBEncryptionUtil.decrypt(resourceDetail.getValue()); + } + return resourceDetail.getValue(); + } } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDao.java b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDao.java index e7e4ecf7ff7d..04cd70308a44 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDao.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDao.java @@ -29,6 +29,4 @@ public interface ImageStoreDetailsDao extends GenericDao getDetails(long storeId); void deleteDetails(long storeId); - - String getActualValue(ImageStoreDetailVO imageStorageDetailVO); } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java index 4e8d73cdf94e..1b0644820c54 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java @@ -20,8 +20,6 @@ import java.util.List; import java.util.Map; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; -import org.apache.cloudstack.framework.config.impl.ConfigurationVO; import org.springframework.stereotype.Component; import com.cloud.utils.crypt.DBEncryptionUtil; @@ -37,13 +35,8 @@ import org.apache.cloudstack.framework.config.ScopedConfigStorage; import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase; -import javax.inject.Inject; - @Component public class ImageStoreDetailsDaoImpl extends ResourceDetailsDaoBase implements ImageStoreDetailsDao, ScopedConfigStorage { - - @Inject - private ConfigurationDao _configDao; protected final SearchBuilder storeSearch; public ImageStoreDetailsDaoImpl() { @@ -121,13 +114,4 @@ public String getConfigValue(long id, ConfigKey key) { public void addDetail(long resourceId, String key, String value, boolean display) { super.addDetail(new ImageStoreDetailVO(resourceId, key, value, display)); } - - @Override - public String getActualValue(ImageStoreDetailVO imageStorageDetailVO) { - ConfigurationVO configurationVO = _configDao.findByName(imageStorageDetailVO.getName()); - if (configurationVO != null && configurationVO.isEncrypted()) { - return DBEncryptionUtil.decrypt(imageStorageDetailVO.getValue()); - } - return imageStorageDetailVO.getValue(); - } } diff --git a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java index fe8093f2f6e5..114a5b740fe9 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java @@ -21,5 +21,4 @@ import com.cloud.utils.db.GenericDao; public interface StoragePoolDetailsDao extends GenericDao, ResourceDetailsDao { - String getActualValue(StoragePoolDetailVO storagePoolDetailVO); } From 722277952dc28bc2d1f5cd7f84db84a077229a07 Mon Sep 17 00:00:00 2001 From: Harikrishna Patnala Date: Thu, 23 Jan 2025 09:19:27 +0530 Subject: [PATCH 3/4] Use resource Id --- .../main/java/com/cloud/dc/ClusterDetailsDaoImpl.java | 4 ++-- .../src/main/java/com/cloud/dc/ClusterDetailsVO.java | 10 +++------- .../src/main/java/com/cloud/domain/DomainDetailVO.java | 10 +++------- .../com/cloud/domain/dao/DomainDetailsDaoImpl.java | 6 +++--- .../src/main/java/com/cloud/user/AccountDetailVO.java | 10 +++------- .../java/com/cloud/user/AccountDetailsDaoImpl.java | 6 +++--- 6 files changed, 17 insertions(+), 29 deletions(-) diff --git a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java index 70aaf91c6ae4..37e10910978a 100644 --- a/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java @@ -43,11 +43,11 @@ public class ClusterDetailsDaoImpl extends ResourceDetailsDaoBase protected DomainDetailsDaoImpl() { domainSearch = createSearchBuilder(); - domainSearch.and("domainId", domainSearch.entity().getDomainId(), Op.EQ); + domainSearch.and("domainId", domainSearch.entity().getResourceId(), Op.EQ); domainSearch.done(); } @Override public Map findDetails(long domainId) { QueryBuilder sc = QueryBuilder.create(DomainDetailVO.class); - sc.and(sc.entity().getDomainId(), Op.EQ, domainId); + sc.and(sc.entity().getResourceId(), Op.EQ, domainId); List results = sc.list(); Map details = new HashMap(results.size()); for (DomainDetailVO r : results) { @@ -78,7 +78,7 @@ public void persist(long domainId, Map details) { @Override public DomainDetailVO findDetail(long domainId, String name) { QueryBuilder sc = QueryBuilder.create(DomainDetailVO.class); - sc.and(sc.entity().getDomainId(), Op.EQ, domainId); + sc.and(sc.entity().getResourceId(), Op.EQ, domainId); sc.and(sc.entity().getName(), Op.EQ, name); return sc.find(); } diff --git a/engine/schema/src/main/java/com/cloud/user/AccountDetailVO.java b/engine/schema/src/main/java/com/cloud/user/AccountDetailVO.java index 8a01de08af4a..aa6e49666dd4 100644 --- a/engine/schema/src/main/java/com/cloud/user/AccountDetailVO.java +++ b/engine/schema/src/main/java/com/cloud/user/AccountDetailVO.java @@ -34,7 +34,7 @@ public class AccountDetailVO implements ResourceDetail { private long id; @Column(name = "account_id") - private long accountId; + private long resourceId; @Column(name = "name") private String name; @@ -46,18 +46,14 @@ protected AccountDetailVO() { } public AccountDetailVO(long accountId, String name, String value) { - this.accountId = accountId; + this.resourceId = accountId; this.name = name; this.value = value; } - public long getAccountId() { - return accountId; - } - @Override public long getResourceId() { - return accountId; + return resourceId; } public String getName() { diff --git a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java index 2d504d83c1f4..8cea616b97d5 100644 --- a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java @@ -55,14 +55,14 @@ public class AccountDetailsDaoImpl extends ResourceDetailsDaoBase findDetails(long accountId) { QueryBuilder sc = QueryBuilder.create(AccountDetailVO.class); - sc.and(sc.entity().getAccountId(), Op.EQ, accountId); + sc.and(sc.entity().getResourceId(), Op.EQ, accountId); List results = sc.list(); Map details = new HashMap(results.size()); for (AccountDetailVO r : results) { @@ -88,7 +88,7 @@ public void persist(long accountId, Map details) { @Override public AccountDetailVO findDetail(long accountId, String name) { QueryBuilder sc = QueryBuilder.create(AccountDetailVO.class); - sc.and(sc.entity().getAccountId(), Op.EQ, accountId); + sc.and(sc.entity().getResourceId(), Op.EQ, accountId); sc.and(sc.entity().getName(), Op.EQ, name); return sc.find(); } From 6055ecf6babc78070b444d8e611cb5fa3e643f9b Mon Sep 17 00:00:00 2001 From: dahn Date: Tue, 28 Jan 2025 08:12:14 +0100 Subject: [PATCH 4/4] Apply suggestions from code review Co-authored-by: Bryan Lima <42067040+BryanMLima@users.noreply.github.com> --- .../cloudstack/resourcedetail/ResourceDetailsDaoBase.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java index 7654a371ce6f..556c832e9915 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java @@ -37,7 +37,7 @@ public abstract class ResourceDetailsDaoBase extends GenericDaoBase implements ResourceDetailsDao { @Inject - private ConfigurationDao _configDao; + private ConfigurationDao configDao; private SearchBuilder AllFieldsSearch; @@ -213,7 +213,7 @@ public List findResourceIdsByNameAndValueIn(String name, Object[] values) @Override public String getActualValue(ResourceDetail resourceDetail) { - ConfigurationVO configurationVO = _configDao.findByName(resourceDetail.getName()); + ConfigurationVO configurationVO = configDao.findByName(resourceDetail.getName()); if (configurationVO != null && configurationVO.isEncrypted()) { return DBEncryptionUtil.decrypt(resourceDetail.getValue()); }