Skip to content

Commit 01032c9

Browse files
harikrishna-patnalaDaanHooglandBryanMLima
authored andcommitted
Decrypt zone, cluster, storage details for configuration values (apache#10237)
Co-authored-by: dahn <daan.hoogland@gmail.com> Co-authored-by: Bryan Lima <42067040+BryanMLima@users.noreply.github.com>
1 parent 8b7de77 commit 01032c9

13 files changed

Lines changed: 99 additions & 65 deletions

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

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

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

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

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

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,13 @@
2828
import org.apache.commons.collections.CollectionUtils;
2929

3030
import com.cloud.utils.crypt.DBEncryptionUtil;
31-
import com.cloud.utils.db.GenericDaoBase;
3231
import com.cloud.utils.db.SearchBuilder;
3332
import com.cloud.utils.db.SearchCriteria;
3433
import com.cloud.utils.db.TransactionLegacy;
34+
import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
35+
36+
public class ClusterDetailsDaoImpl extends ResourceDetailsDaoBase<ClusterDetailsVO> implements ClusterDetailsDao, ScopedConfigStorage {
3537

36-
public class ClusterDetailsDaoImpl extends GenericDaoBase<ClusterDetailsVO, Long> implements ClusterDetailsDao, ScopedConfigStorage {
3738
protected final SearchBuilder<ClusterDetailsVO> ClusterSearch;
3839
protected final SearchBuilder<ClusterDetailsVO> DetailSearch;
3940

@@ -44,11 +45,11 @@ public class ClusterDetailsDaoImpl extends GenericDaoBase<ClusterDetailsVO, Long
4445

4546
protected ClusterDetailsDaoImpl() {
4647
ClusterSearch = createSearchBuilder();
47-
ClusterSearch.and("clusterId", ClusterSearch.entity().getClusterId(), SearchCriteria.Op.EQ);
48+
ClusterSearch.and("clusterId", ClusterSearch.entity().getResourceId(), SearchCriteria.Op.EQ);
4849
ClusterSearch.done();
4950

5051
DetailSearch = createSearchBuilder();
51-
DetailSearch.and("clusterId", DetailSearch.entity().getClusterId(), SearchCriteria.Op.EQ);
52+
DetailSearch.and("clusterId", DetailSearch.entity().getResourceId(), SearchCriteria.Op.EQ);
5253
DetailSearch.and("name", DetailSearch.entity().getName(), SearchCriteria.Op.EQ);
5354
DetailSearch.done();
5455
}
@@ -68,6 +69,11 @@ public ClusterDetailsVO findDetail(long clusterId, String name) {
6869
return detail;
6970
}
7071

72+
@Override
73+
public void addDetail(long resourceId, String key, String value, boolean display) {
74+
super.addDetail(new ClusterDetailsVO(resourceId, key, value));
75+
}
76+
7177
@Override
7278
public Map<String, String> findDetails(long clusterId) {
7379
SearchCriteria<ClusterDetailsVO> sc = ClusterSearch.create();

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: 0 additions & 1 deletion
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;

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
@@ -25,19 +25,17 @@
2525
import org.apache.cloudstack.framework.config.ConfigKey.Scope;
2626
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
2727
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
28-
import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
2928

3029
import com.cloud.domain.DomainDetailVO;
3130
import com.cloud.domain.DomainVO;
32-
import com.cloud.utils.crypt.DBEncryptionUtil;
33-
import com.cloud.utils.db.GenericDaoBase;
3431
import com.cloud.utils.db.QueryBuilder;
3532
import com.cloud.utils.db.SearchBuilder;
3633
import com.cloud.utils.db.SearchCriteria;
3734
import com.cloud.utils.db.SearchCriteria.Op;
3835
import com.cloud.utils.db.TransactionLegacy;
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, String 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/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
}

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

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,20 @@
2727
import org.apache.cloudstack.framework.config.ConfigKey.Scope;
2828
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
2929
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
30-
import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
3130

3231
import com.cloud.domain.DomainDetailVO;
3332
import com.cloud.domain.DomainVO;
3433
import com.cloud.domain.dao.DomainDao;
3534
import com.cloud.domain.dao.DomainDetailsDao;
3635
import com.cloud.user.dao.AccountDao;
37-
import com.cloud.utils.crypt.DBEncryptionUtil;
38-
import com.cloud.utils.db.GenericDaoBase;
3936
import com.cloud.utils.db.QueryBuilder;
4037
import com.cloud.utils.db.SearchBuilder;
4138
import com.cloud.utils.db.SearchCriteria;
4239
import com.cloud.utils.db.SearchCriteria.Op;
4340
import com.cloud.utils.db.TransactionLegacy;
41+
import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
4442

45-
public class AccountDetailsDaoImpl extends GenericDaoBase<AccountDetailVO, Long> implements AccountDetailsDao, ScopedConfigStorage {
43+
public class AccountDetailsDaoImpl extends ResourceDetailsDaoBase<AccountDetailVO> implements AccountDetailsDao, ScopedConfigStorage {
4644
protected final SearchBuilder<AccountDetailVO> accountSearch;
4745

4846
@Inject
@@ -56,14 +54,14 @@ public class AccountDetailsDaoImpl extends GenericDaoBase<AccountDetailVO, Long>
5654

5755
protected AccountDetailsDaoImpl() {
5856
accountSearch = createSearchBuilder();
59-
accountSearch.and("accountId", accountSearch.entity().getAccountId(), Op.EQ);
57+
accountSearch.and("accountId", accountSearch.entity().getResourceId(), Op.EQ);
6058
accountSearch.done();
6159
}
6260

6361
@Override
6462
public Map<String, String> findDetails(long accountId) {
6563
QueryBuilder<AccountDetailVO> sc = QueryBuilder.create(AccountDetailVO.class);
66-
sc.and(sc.entity().getAccountId(), Op.EQ, accountId);
64+
sc.and(sc.entity().getResourceId(), Op.EQ, accountId);
6765
List<AccountDetailVO> results = sc.list();
6866
Map<String, String> details = new HashMap<String, String>(results.size());
6967
for (AccountDetailVO r : results) {
@@ -89,11 +87,16 @@ public void persist(long accountId, Map<String, String> details) {
8987
@Override
9088
public AccountDetailVO findDetail(long accountId, String name) {
9189
QueryBuilder<AccountDetailVO> sc = QueryBuilder.create(AccountDetailVO.class);
92-
sc.and(sc.entity().getAccountId(), Op.EQ, accountId);
90+
sc.and(sc.entity().getResourceId(), Op.EQ, accountId);
9391
sc.and(sc.entity().getName(), Op.EQ, name);
9492
return sc.find();
9593
}
9694

95+
@Override
96+
public void addDetail(long resourceId, String key, String value, boolean display) {
97+
super.addDetail(new AccountDetailVO(resourceId, key, value));
98+
}
99+
97100
@Override
98101
public void deleteDetails(long accountId) {
99102
SearchCriteria<AccountDetailVO> sc = accountSearch.create();
@@ -153,13 +156,4 @@ public String getConfigValue(long id, String key) {
153156
}
154157
return value;
155158
}
156-
157-
@Override
158-
public String getActualValue(AccountDetailVO accountDetailVO) {
159-
ConfigurationVO configurationVO = _configDao.findByName(accountDetailVO.getName());
160-
if (configurationVO != null && configurationVO.isEncrypted()) {
161-
return DBEncryptionUtil.decrypt(accountDetailVO.getValue());
162-
}
163-
return accountDetailVO.getValue();
164-
}
165159
}

0 commit comments

Comments
 (0)