Skip to content

Commit 233ce0d

Browse files
Check the config key and name exists in its scope (without scopie id)
1 parent ededc75 commit 233ce0d

File tree

12 files changed

+67
-1
lines changed

12 files changed

+67
-1
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,4 +186,9 @@ private String getCpuMemoryOvercommitRatio(String name) {
186186

187187
return name;
188188
}
189+
190+
@Override
191+
public boolean doesConfigKeyAndValueExists(String key, String value) {
192+
return doesKeyValuePairExist(key, value);
193+
}
189194
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,9 @@ public void persist(long zoneId, String name, String value) {
6767
persist(vo);
6868
txn.commit();
6969
}
70+
71+
@Override
72+
public boolean doesConfigKeyAndValueExists(String key, String value) {
73+
return doesKeyValuePairExist(key, value);
74+
}
7075
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,4 +132,9 @@ public String getConfigValue(long id, String key) {
132132
}
133133
return vo == null ? null : getActualValue(vo);
134134
}
135+
136+
@Override
137+
public boolean doesConfigKeyAndValueExists(String key, String value) {
138+
return doesKeyValuePairExist(key, value);
139+
}
135140
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,9 @@ public void addDetail(long resourceId, String key, String value, boolean display
5757
}
5858
super.addDetail(new StoragePoolDetailVO(resourceId, key, value, display));
5959
}
60+
61+
@Override
62+
public boolean doesConfigKeyAndValueExists(String key, String value) {
63+
return doesKeyValuePairExist(key, value);
64+
}
6065
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,9 @@ public String getConfigValue(long id, String key) {
156156
}
157157
return value;
158158
}
159+
160+
@Override
161+
public boolean doesConfigKeyAndValueExists(String key, String value) {
162+
return doesKeyValuePairExist(key, value);
163+
}
159164
}

engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,6 @@ public interface ResourceDetailsDao<R extends ResourceDetail> extends GenericDao
103103
long batchExpungeForResources(List<Long> ids, Long batchSize);
104104

105105
String getActualValue(ResourceDetail resourceDetail);
106+
107+
boolean doesKeyValuePairExist(String key, String value);
106108
}

engine/schema/src/main/java/org/apache/cloudstack/resourcedetail/ResourceDetailsDaoBase.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,4 +246,10 @@ public String getActualValue(ResourceDetail resourceDetail) {
246246
}
247247
return resourceDetail.getValue();
248248
}
249+
250+
@Override
251+
public boolean doesKeyValuePairExist(String key, String value) {
252+
List<R> details = findDetails(key, value, null);
253+
return CollectionUtils.isNotEmpty(details);
254+
}
249255
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,4 +119,9 @@ public String getConfigValue(long id, ConfigKey<?> key) {
119119
public void addDetail(long resourceId, String key, String value, boolean display) {
120120
super.addDetail(new ImageStoreDetailVO(resourceId, key, value, display));
121121
}
122+
123+
@Override
124+
public boolean doesConfigKeyAndValueExists(String key, String value) {
125+
return doesKeyValuePairExist(key, value);
126+
}
122127
}

framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,4 +277,10 @@ protected T valueOf(String value) {
277277
}
278278
}
279279

280+
public boolean hasValueInScope(String value) {
281+
if (value != null && s_depot != null) {
282+
return s_depot.doesConfigKeyAndValueExistsInScope(_name, value, _scope);
283+
}
284+
return false;
285+
}
280286
}

framework/config/src/main/java/org/apache/cloudstack/framework/config/ScopedConfigStorage.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,6 @@ public interface ScopedConfigStorage {
3131
default String getConfigValue(long id, ConfigKey<?> key) {
3232
return getConfigValue(id, key.key());
3333
}
34+
35+
boolean doesConfigKeyAndValueExists(String key, String value);
3436
}

0 commit comments

Comments
 (0)