This is an automated email from the ASF dual-hosted git repository.

DaanHoogland pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/main by this push:
     new 89a2b025f25 ui: improve related global config popup (#14149)
89a2b025f25 is described below

commit 89a2b025f250eacbb91fd3dc83dc316c66f6f68a
Author: Abhishek Kumar <[email protected]>
AuthorDate: Fri Oct 23 16:20:25 2026 +0530

    ui: improve related global config popup (#14149)
    
    Signed-off-by: Abhishek Kumar <[email protected]>
---
 ui/public/locales/en.json                   |  1 +
 ui/src/views/setting/ConfigurationValue.vue | 42 +++++++++++++++++++++--------
 2 files changed, 32 insertions(+), 11 deletions(-)

diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json
index 6bfc3097101..e2ac9b3896c 100644
--- a/ui/public/locales/en.json
+++ b/ui/public/locales/en.json
@@ -4029,6 +4029,7 @@
 "message.recover.vm": "Please confirm that you would like to recover this 
Instance.",
 "message.reinstall.vm": "NOTE: Proceed with caution. This will cause the 
Instance to be reinstalled from the Template; data on the root disk will be 
lost. Extra data volumes, if any, will not be touched.",
 "message.related.settings.changed": "'%x' has been changed. Would you like to 
review or update any related settings below?",
+"message.related.settings.may.not.be.exhaustive": "This list of related 
settings may not be exhaustive. Please check the documentation for other 
settings that may need to be updated.",
 "message.release.ip.failed": "Failed to release IP",
 "message.releasing.dedicated.cluster": "Releasing dedicated Cluster...",
 "message.releasing.dedicated.host": "Releasing dedicated host...",
diff --git a/ui/src/views/setting/ConfigurationValue.vue 
b/ui/src/views/setting/ConfigurationValue.vue
index ea146df8cb3..551a4589a9a 100644
--- a/ui/src/views/setting/ConfigurationValue.vue
+++ b/ui/src/views/setting/ConfigurationValue.vue
@@ -199,6 +199,11 @@
       :width="'60vw'"
       @cancel="closeRelatedModal">
       <p>{{ $t('message.related.settings.changed').replace('%x', 
relatedSourceConfigName) }}</p>
+      <a-alert
+        type="info"
+        showIcon
+        style="margin-bottom: 12px"
+        :message="$t('message.related.settings.may.not.be.exhaustive')" />
       <a-table
         size="small"
         :showHeader="false"
@@ -396,22 +401,37 @@ export default {
     },
     fetchRelatedConfigurations (configrecord) {
       const prefix = this.getRelatedConfigPrefix(configrecord)
-      if (!prefix) {
-        return
-      }
-      this.relatedLoading = true
-      const params = {
+      const scopeParams = {
         [this.scopeKey]: this.$route.params?.id,
-        keyword: prefix,
         pagesize: -1,
         listAll: true
       }
-      if (this.scopeKey === 'domainid' && !params[this.scopeKey]) {
-        params[this.scopeKey] = this.resource?.id
+      if (this.scopeKey === 'domainid' && !scopeParams[this.scopeKey]) {
+        scopeParams[this.scopeKey] = this.resource?.id
+      }
+      const requests = []
+      if (prefix) {
+        requests.push(
+          getAPI('listConfigurations', { ...scopeParams, keyword: prefix 
}).then(json => {
+            const list = json?.listconfigurationsresponse?.configuration || []
+            return list.filter(c => c.name.startsWith(prefix + '.'))
+          })
+        )
       }
-      getAPI('listConfigurations', params).then(json => {
-        const list = json?.listconfigurationsresponse?.configuration || []
-        this.relatedConfigs = list.filter(c => c.name !== configrecord.name && 
c.name.startsWith(prefix + '.'))
+      requests.push(
+        getAPI('listConfigurations', { ...scopeParams, parent: 
configrecord.name }).then(json => {
+          return json?.listconfigurationsresponse?.configuration || []
+        })
+      )
+      this.relatedLoading = true
+      Promise.all(requests).then(results => {
+        const merged = new Map()
+        results.flat().forEach(c => {
+          if (c.name !== configrecord.name) {
+            merged.set(c.name, c)
+          }
+        })
+        this.relatedConfigs = Array.from(merged.values())
         if (this.relatedConfigs.length > 0) {
           this.relatedSourceConfigName = configrecord.name
           this.relatedModalVisible = true

Reply via email to