Skip to content

Commit 60af31c

Browse files
harikrishna-patnalaDaanHooglandBryanMLima
authored
Decrypt zone, cluster, storage details for configuration values (#10237)
Co-authored-by: dahn <[email protected]> Co-authored-by: Bryan Lima <[email protected]>
1 parent 0d5047b commit 60af31c

File tree

14 files changed

+97
-69
lines changed

14 files changed

+97
-69
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@
1919
import java.util.Map;
2020

2121
import com.cloud.utils.db.GenericDao;
22+
import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
2223

23-
public interface ClusterDetailsDao extends GenericDao<ClusterDetailsVO, Long> {
24+
public interface ClusterDetailsDao extends GenericDao<ClusterDetailsVO, Long>, ResourceDetailsDao<ClusterDetailsVO> {
2425
Map<String, String> findDetails(long clusterId);
2526

2627
void persist(long clusterId, Map<String, String> details);

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

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,13 @@
2626
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
2727

2828
import com.cloud.utils.crypt.DBEncryptionUtil;
29-
import com.cloud.utils.db.GenericDaoBase;
3029
import com.cloud.utils.db.SearchBuilder;
3130
import com.cloud.utils.db.SearchCriteria;
3231
import com.cloud.utils.db.TransactionLegacy;
32+
import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
33+
34+
public class ClusterDetailsDaoImpl extends ResourceDetailsDaoBase<ClusterDetailsVO> implements ClusterDetailsDao, ScopedConfigStorage {
3335

34-
public class ClusterDetailsDaoImpl extends GenericDaoBase<ClusterDetailsVO, Long> implements ClusterDetailsDao, ScopedConfigStorage {
3536
protected final SearchBuilder<ClusterDetailsVO> ClusterSearch;
3637
protected final SearchBuilder<ClusterDetailsVO> DetailSearch;
3738

@@ -42,11 +43,11 @@ public class ClusterDetailsDaoImpl extends GenericDaoBase<ClusterDetailsVO, Long
4243

4344
protected ClusterDetailsDaoImpl() {
4445
ClusterSearch = createSearchBuilder();
45-
ClusterSearch.and("clusterId", ClusterSearch.entity().getClusterId(), SearchCriteria.Op.EQ);
46+
ClusterSearch.and("clusterId", ClusterSearch.entity().getResourceId(), SearchCriteria.Op.EQ);
4647
ClusterSearch.done();
4748

4849
DetailSearch = createSearchBuilder();
49-
DetailSearch.and("clusterId", DetailSearch.entity().getClusterId(), SearchCriteria.Op.EQ);
50+
DetailSearch.and("clusterId", DetailSearch.entity().getResourceId(), SearchCriteria.Op.EQ);
5051
DetailSearch.and("name", DetailSearch.entity().getName(), SearchCriteria.Op.EQ);
5152
DetailSearch.done();
5253
}
@@ -66,6 +67,11 @@ public ClusterDetailsVO findDetail(long clusterId, String name) {
6667
return detail;
6768
}
6869

70+
@Override
71+
public void addDetail(long resourceId, String key, String value, boolean display) {
72+
super.addDetail(new ClusterDetailsVO(resourceId, key, value));
73+
}
74+
6975
@Override
7076
public Map<String, String> findDetails(long clusterId) {
7177
SearchCriteria<ClusterDetailsVO> sc = ClusterSearch.create();
@@ -138,7 +144,7 @@ public Scope getScope() {
138144
@Override
139145
public String getConfigValue(long id, ConfigKey<?> key) {
140146
ClusterDetailsVO vo = findDetail(id, key.key());
141-
return vo == null ? null : vo.getValue();
147+
return vo == null ? null : getActualValue(vo);
142148
}
143149

144150
@Override

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,19 @@
2323
import javax.persistence.Id;
2424
import javax.persistence.Table;
2525

26-
import org.apache.cloudstack.api.InternalIdentity;
26+
import org.apache.cloudstack.api.ResourceDetail;
2727

2828
@Entity
2929
@Table(name = "cluster_details")
30-
public class ClusterDetailsVO implements InternalIdentity {
30+
public class ClusterDetailsVO implements ResourceDetail {
3131

3232
@Id
3333
@GeneratedValue(strategy = GenerationType.IDENTITY)
3434
@Column(name = "id")
3535
private long id;
3636

3737
@Column(name = "cluster_id")
38-
private long clusterId;
38+
private long resourceId;
3939

4040
@Column(name = "name")
4141
private String name;
@@ -47,13 +47,14 @@ protected ClusterDetailsVO() {
4747
}
4848

4949
public ClusterDetailsVO(long clusterId, String name, String value) {
50-
this.clusterId = clusterId;
50+
this.resourceId = clusterId;
5151
this.name = name;
5252
this.value = value;
5353
}
5454

55-
public long getClusterId() {
56-
return clusterId;
55+
@Override
56+
public long getResourceId() {
57+
return resourceId;
5758
}
5859

5960
public String getName() {
@@ -64,6 +65,11 @@ public String getValue() {
6465
return value;
6566
}
6667

68+
@Override
69+
public boolean isDisplay() {
70+
return true;
71+
}
72+
6773
public void setValue(String value) {
6874
this.value = value;
6975
}

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

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

19-
import org.apache.cloudstack.api.ResourceDetail;
2019
import org.apache.cloudstack.framework.config.ConfigKey;
2120
import org.apache.cloudstack.framework.config.ConfigKey.Scope;
2221
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
@@ -45,8 +44,8 @@ public Scope getScope() {
4544

4645
@Override
4746
public String getConfigValue(long id, ConfigKey<?> key) {
48-
ResourceDetail vo = findDetail(id, key.key());
49-
return vo == null ? null : vo.getValue();
47+
DataCenterDetailVO vo = findDetail(id, key.key());
48+
return vo == null ? null : getActualValue(vo);
5049
}
5150

5251
@Override

engine/schema/src/main/java/com/cloud/domain/DomainDetailVO.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,18 @@
2323
import javax.persistence.Id;
2424
import javax.persistence.Table;
2525

26-
import org.apache.cloudstack.api.InternalIdentity;
26+
import org.apache.cloudstack.api.ResourceDetail;
2727

2828
@Entity
2929
@Table(name = "domain_details")
30-
public class DomainDetailVO implements InternalIdentity {
30+
public class DomainDetailVO implements ResourceDetail {
3131
@Id
3232
@GeneratedValue(strategy = GenerationType.IDENTITY)
3333
@Column(name = "id")
3434
private long id;
3535

3636
@Column(name = "domain_id")
37-
private long domainId;
37+
private long resourceId;
3838

3939
@Column(name = "name")
4040
private String name;
@@ -46,13 +46,14 @@ protected DomainDetailVO() {
4646
}
4747

4848
public DomainDetailVO(long domainId, String name, String value) {
49-
this.domainId = domainId;
49+
this.resourceId = domainId;
5050
this.name = name;
5151
this.value = value;
5252
}
5353

54-
public long getDomainId() {
55-
return domainId;
54+
@Override
55+
public long getResourceId() {
56+
return resourceId;
5657
}
5758

5859
public String getName() {
@@ -63,6 +64,11 @@ public String getValue() {
6364
return value;
6465
}
6566

67+
@Override
68+
public boolean isDisplay() {
69+
return true;
70+
}
71+
6672
public void setValue(String value) {
6773
this.value = value;
6874
}

engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDao.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@
2020

2121
import com.cloud.domain.DomainDetailVO;
2222
import com.cloud.utils.db.GenericDao;
23+
import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
2324

24-
public interface DomainDetailsDao extends GenericDao<DomainDetailVO, Long> {
25+
public interface DomainDetailsDao extends GenericDao<DomainDetailVO, Long>, ResourceDetailsDao<DomainDetailVO> {
2526
Map<String, String> findDetails(long domainId);
2627

2728
void persist(long domainId, Map<String, String> details);
@@ -31,6 +32,4 @@ public interface DomainDetailsDao extends GenericDao<DomainDetailVO, Long> {
3132
void deleteDetails(long domainId);
3233

3334
void update(long domainId, Map<String, String> details);
34-
35-
String getActualValue(DomainDetailVO domainDetailVO);
3635
}

engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@
2424

2525
import com.cloud.domain.DomainDetailVO;
2626
import com.cloud.domain.DomainVO;
27-
import com.cloud.utils.crypt.DBEncryptionUtil;
28-
import com.cloud.utils.db.GenericDaoBase;
2927
import com.cloud.utils.db.QueryBuilder;
3028
import com.cloud.utils.db.SearchBuilder;
3129
import com.cloud.utils.db.SearchCriteria;
@@ -35,9 +33,9 @@
3533
import org.apache.cloudstack.framework.config.ConfigKey.Scope;
3634
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
3735
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
38-
import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
36+
import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
3937

40-
public class DomainDetailsDaoImpl extends GenericDaoBase<DomainDetailVO, Long> implements DomainDetailsDao, ScopedConfigStorage {
38+
public class DomainDetailsDaoImpl extends ResourceDetailsDaoBase<DomainDetailVO> implements DomainDetailsDao, ScopedConfigStorage {
4139
protected final SearchBuilder<DomainDetailVO> domainSearch;
4240

4341
@Inject
@@ -47,14 +45,14 @@ public class DomainDetailsDaoImpl extends GenericDaoBase<DomainDetailVO, Long> i
4745

4846
protected DomainDetailsDaoImpl() {
4947
domainSearch = createSearchBuilder();
50-
domainSearch.and("domainId", domainSearch.entity().getDomainId(), Op.EQ);
48+
domainSearch.and("domainId", domainSearch.entity().getResourceId(), Op.EQ);
5149
domainSearch.done();
5250
}
5351

5452
@Override
5553
public Map<String, String> findDetails(long domainId) {
5654
QueryBuilder<DomainDetailVO> sc = QueryBuilder.create(DomainDetailVO.class);
57-
sc.and(sc.entity().getDomainId(), Op.EQ, domainId);
55+
sc.and(sc.entity().getResourceId(), Op.EQ, domainId);
5856
List<DomainDetailVO> results = sc.list();
5957
Map<String, String> details = new HashMap<String, String>(results.size());
6058
for (DomainDetailVO r : results) {
@@ -80,11 +78,16 @@ public void persist(long domainId, Map<String, String> details) {
8078
@Override
8179
public DomainDetailVO findDetail(long domainId, String name) {
8280
QueryBuilder<DomainDetailVO> sc = QueryBuilder.create(DomainDetailVO.class);
83-
sc.and(sc.entity().getDomainId(), Op.EQ, domainId);
81+
sc.and(sc.entity().getResourceId(), Op.EQ, domainId);
8482
sc.and(sc.entity().getName(), Op.EQ, name);
8583
return sc.find();
8684
}
8785

86+
@Override
87+
public void addDetail(long resourceId, String key, String value, boolean display) {
88+
super.addDetail(new DomainDetailVO(resourceId, key, value));
89+
}
90+
8891
@Override
8992
public void deleteDetails(long domainId) {
9093
SearchCriteria<DomainDetailVO> sc = domainSearch.create();
@@ -129,13 +132,4 @@ public String getConfigValue(long id, ConfigKey<?> key) {
129132
}
130133
return vo == null ? null : getActualValue(vo);
131134
}
132-
133-
@Override
134-
public String getActualValue(DomainDetailVO domainDetailVO) {
135-
ConfigurationVO configurationVO = _configDao.findByName(domainDetailVO.getName());
136-
if (configurationVO != null && configurationVO.isEncrypted()) {
137-
return DBEncryptionUtil.decrypt(domainDetailVO.getValue());
138-
}
139-
return domainDetailVO.getValue();
140-
}
141135
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public Scope getScope() {
4545
@Override
4646
public String getConfigValue(long id, ConfigKey<?> key) {
4747
StoragePoolDetailVO vo = findDetail(id, key.key());
48-
return vo == null ? null : vo.getValue();
48+
return vo == null ? null : getActualValue(vo);
4949
}
5050

5151
@Override

engine/schema/src/main/java/com/cloud/user/AccountDetailVO.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,18 @@
2323
import javax.persistence.Id;
2424
import javax.persistence.Table;
2525

26-
import org.apache.cloudstack.api.InternalIdentity;
26+
import org.apache.cloudstack.api.ResourceDetail;
2727

2828
@Entity
2929
@Table(name = "account_details")
30-
public class AccountDetailVO implements InternalIdentity {
30+
public class AccountDetailVO implements ResourceDetail {
3131
@Id
3232
@GeneratedValue(strategy = GenerationType.IDENTITY)
3333
@Column(name = "id")
3434
private long id;
3535

3636
@Column(name = "account_id")
37-
private long accountId;
37+
private long resourceId;
3838

3939
@Column(name = "name")
4040
private String name;
@@ -46,13 +46,14 @@ protected AccountDetailVO() {
4646
}
4747

4848
public AccountDetailVO(long accountId, String name, String value) {
49-
this.accountId = accountId;
49+
this.resourceId = accountId;
5050
this.name = name;
5151
this.value = value;
5252
}
5353

54-
public long getAccountId() {
55-
return accountId;
54+
@Override
55+
public long getResourceId() {
56+
return resourceId;
5657
}
5758

5859
public String getName() {
@@ -63,6 +64,11 @@ public String getValue() {
6364
return value;
6465
}
6566

67+
@Override
68+
public boolean isDisplay() {
69+
return true;
70+
}
71+
6672
public void setValue(String value) {
6773
this.value = value;
6874
}

engine/schema/src/main/java/com/cloud/user/AccountDetailsDao.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@
1919
import java.util.Map;
2020

2121
import com.cloud.utils.db.GenericDao;
22+
import org.apache.cloudstack.resourcedetail.ResourceDetailsDao;
2223

23-
public interface AccountDetailsDao extends GenericDao<AccountDetailVO, Long> {
24+
public interface AccountDetailsDao extends GenericDao<AccountDetailVO, Long>, ResourceDetailsDao<AccountDetailVO> {
2425
Map<String, String> findDetails(long accountId);
2526

2627
void persist(long accountId, Map<String, String> details);
@@ -34,6 +35,4 @@ public interface AccountDetailsDao extends GenericDao<AccountDetailVO, Long> {
3435
* they will get created
3536
*/
3637
void update(long accountId, Map<String, String> details);
37-
38-
String getActualValue(AccountDetailVO accountDetailVO);
3938
}

0 commit comments

Comments
 (0)