Skip to content

Commit 7093406

Browse files
Fix retreiving decrypted values from details table for config values
1 parent d053bb9 commit 7093406

File tree

8 files changed

+73
-6
lines changed

8 files changed

+73
-6
lines changed

engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,6 @@ public interface ClusterDetailsDao extends GenericDao<ClusterDetailsVO, Long> {
3232
void deleteDetails(long clusterId);
3333

3434
String getVmwareDcName(Long clusterId);
35+
36+
String getActualValue(ClusterDetailsVO clusterDetailsVO);
3537
}

engine/schema/src/main/java/com/cloud/dc/ClusterDetailsDaoImpl.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,15 @@
3030
import com.cloud.utils.db.SearchBuilder;
3131
import com.cloud.utils.db.SearchCriteria;
3232
import com.cloud.utils.db.TransactionLegacy;
33+
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
34+
import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
35+
36+
import javax.inject.Inject;
3337

3438
public class ClusterDetailsDaoImpl extends GenericDaoBase<ClusterDetailsVO, Long> implements ClusterDetailsDao, ScopedConfigStorage {
39+
40+
@Inject
41+
private ConfigurationDao _configDao;
3542
protected final SearchBuilder<ClusterDetailsVO> ClusterSearch;
3643
protected final SearchBuilder<ClusterDetailsVO> DetailSearch;
3744

@@ -138,7 +145,7 @@ public Scope getScope() {
138145
@Override
139146
public String getConfigValue(long id, ConfigKey<?> key) {
140147
ClusterDetailsVO vo = findDetail(id, key.key());
141-
return vo == null ? null : vo.getValue();
148+
return vo == null ? null : getActualValue(vo);
142149
}
143150

144151
@Override
@@ -161,4 +168,13 @@ private String getCpuMemoryOvercommitRatio(String name) {
161168

162169
return name;
163170
}
171+
172+
@Override
173+
public String getActualValue(ClusterDetailsVO clusterDetailsVO) {
174+
ConfigurationVO configurationVO = _configDao.findByName(clusterDetailsVO.getName());
175+
if (configurationVO != null && configurationVO.isEncrypted()) {
176+
return DBEncryptionUtil.decrypt(clusterDetailsVO.getValue());
177+
}
178+
return clusterDetailsVO.getValue();
179+
}
164180
}

engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,6 @@
2222

2323
public interface DataCenterDetailsDao extends GenericDao<DataCenterDetailVO, Long>, ResourceDetailsDao<DataCenterDetailVO> {
2424
void persist(long zoneId, String name, String value);
25+
26+
String getActualValue(DataCenterDetailVO dataCenterDetailVO);
2527
}

engine/schema/src/main/java/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,26 @@
1616
// under the License.
1717
package com.cloud.dc.dao;
1818

19-
import org.apache.cloudstack.api.ResourceDetail;
19+
import com.cloud.utils.crypt.DBEncryptionUtil;
2020
import org.apache.cloudstack.framework.config.ConfigKey;
2121
import org.apache.cloudstack.framework.config.ConfigKey.Scope;
2222
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
23+
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
24+
import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
2325
import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
2426

2527
import com.cloud.dc.DataCenterDetailVO;
2628
import com.cloud.utils.db.SearchBuilder;
2729
import com.cloud.utils.db.SearchCriteria;
2830
import com.cloud.utils.db.TransactionLegacy;
2931

32+
import javax.inject.Inject;
33+
3034
public class DataCenterDetailsDaoImpl extends ResourceDetailsDaoBase<DataCenterDetailVO> implements DataCenterDetailsDao, ScopedConfigStorage {
3135

36+
@Inject
37+
private ConfigurationDao _configDao;
38+
3239
private final SearchBuilder<DataCenterDetailVO> DetailSearch;
3340

3441
DataCenterDetailsDaoImpl() {
@@ -45,8 +52,8 @@ public Scope getScope() {
4552

4653
@Override
4754
public String getConfigValue(long id, ConfigKey<?> key) {
48-
ResourceDetail vo = findDetail(id, key.key());
49-
return vo == null ? null : vo.getValue();
55+
DataCenterDetailVO vo = findDetail(id, key.key());
56+
return vo == null ? null : getActualValue(vo);
5057
}
5158

5259
@Override
@@ -67,4 +74,13 @@ public void persist(long zoneId, String name, String value) {
6774
persist(vo);
6875
txn.commit();
6976
}
77+
78+
@Override
79+
public String getActualValue(DataCenterDetailVO dataCenterDetailVO) {
80+
ConfigurationVO configurationVO = _configDao.findByName(dataCenterDetailVO.getName());
81+
if (configurationVO != null && configurationVO.isEncrypted()) {
82+
return DBEncryptionUtil.decrypt(dataCenterDetailVO.getValue());
83+
}
84+
return dataCenterDetailVO.getValue();
85+
}
7086
}

engine/schema/src/main/java/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@
1717
package com.cloud.storage.dao;
1818

1919

20+
import com.cloud.utils.crypt.DBEncryptionUtil;
2021
import org.apache.cloudstack.framework.config.ConfigKey;
2122
import org.apache.cloudstack.framework.config.ConfigKey.Scope;
2223
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
24+
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
25+
import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
2326
import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
2427
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
2528
import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO;
@@ -33,6 +36,8 @@ public class StoragePoolDetailsDaoImpl extends ResourceDetailsDaoBase<StoragePoo
3336

3437
@Inject
3538
PrimaryDataStoreDao _storagePoolDao;
39+
@Inject
40+
private ConfigurationDao _configDao;
3641

3742
public StoragePoolDetailsDaoImpl() {
3843
}
@@ -45,7 +50,7 @@ public Scope getScope() {
4550
@Override
4651
public String getConfigValue(long id, ConfigKey<?> key) {
4752
StoragePoolDetailVO vo = findDetail(id, key.key());
48-
return vo == null ? null : vo.getValue();
53+
return vo == null ? null : getActualValue(vo);
4954
}
5055

5156
@Override
@@ -56,4 +61,13 @@ public void addDetail(long resourceId, String key, String value, boolean display
5661
}
5762
super.addDetail(new StoragePoolDetailVO(resourceId, key, value, display));
5863
}
64+
65+
@Override
66+
public String getActualValue(StoragePoolDetailVO storagePoolDetailVO) {
67+
ConfigurationVO configurationVO = _configDao.findByName(storagePoolDetailVO.getName());
68+
if (configurationVO != null && configurationVO.isEncrypted()) {
69+
return DBEncryptionUtil.decrypt(storagePoolDetailVO.getValue());
70+
}
71+
return storagePoolDetailVO.getValue();
72+
}
5973
}

engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,6 @@ public interface ImageStoreDetailsDao extends GenericDao<ImageStoreDetailVO, Lon
2929
Map<String, String> getDetails(long storeId);
3030

3131
void deleteDetails(long storeId);
32+
33+
String getActualValue(ImageStoreDetailVO imageStorageDetailVO);
3234
}

engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/ImageStoreDetailsDaoImpl.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import java.util.List;
2121
import java.util.Map;
2222

23+
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
24+
import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
2325
import org.springframework.stereotype.Component;
2426

2527
import com.cloud.utils.crypt.DBEncryptionUtil;
@@ -35,9 +37,13 @@
3537
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
3638
import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
3739

40+
import javax.inject.Inject;
41+
3842
@Component
3943
public class ImageStoreDetailsDaoImpl extends ResourceDetailsDaoBase<ImageStoreDetailVO> implements ImageStoreDetailsDao, ScopedConfigStorage {
4044

45+
@Inject
46+
private ConfigurationDao _configDao;
4147
protected final SearchBuilder<ImageStoreDetailVO> storeSearch;
4248

4349
public ImageStoreDetailsDaoImpl() {
@@ -108,12 +114,20 @@ public ImageStoreDetailVO findDetail(long storeId, String name) {
108114
@Override
109115
public String getConfigValue(long id, ConfigKey<?> key) {
110116
ImageStoreDetailVO vo = findDetail(id, key.key());
111-
return vo == null ? null : vo.getValue();
117+
return vo == null ? null : getActualValue(vo);
112118
}
113119

114120
@Override
115121
public void addDetail(long resourceId, String key, String value, boolean display) {
116122
super.addDetail(new ImageStoreDetailVO(resourceId, key, value, display));
117123
}
118124

125+
@Override
126+
public String getActualValue(ImageStoreDetailVO imageStorageDetailVO) {
127+
ConfigurationVO configurationVO = _configDao.findByName(imageStorageDetailVO.getName());
128+
if (configurationVO != null && configurationVO.isEncrypted()) {
129+
return DBEncryptionUtil.decrypt(imageStorageDetailVO.getValue());
130+
}
131+
return imageStorageDetailVO.getValue();
132+
}
119133
}

engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@
2121
import com.cloud.utils.db.GenericDao;
2222

2323
public interface StoragePoolDetailsDao extends GenericDao<StoragePoolDetailVO, Long>, ResourceDetailsDao<StoragePoolDetailVO> {
24+
String getActualValue(StoragePoolDetailVO storagePoolDetailVO);
2425
}

0 commit comments

Comments
 (0)