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

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git


The following commit(s) were added to refs/heads/master by this push:
     new 3b0f942c8 [SCB-2670] support CSE instance-level configuration query 
(#3288)
3b0f942c8 is described below

commit 3b0f942c8d5cdc1b0199b63aa772cc8c5620bbf5
Author: lbc97 <[email protected]>
AuthorDate: Fri Aug 19 15:10:22 2022 +0800

    [SCB-2670] support CSE instance-level configuration query (#3288)
---
 .../client/model/ConfigurationsRequestFactory.java | 17 +++++++
 .../config/kie/client/model/KieConfiguration.java  | 22 +++++++++
 demo/demo-cse-v2/README.md                         | 56 +++++++++++++++++++++-
 .../servicecomb/samples/ConsumerConfigIT.java      |  2 +
 .../apache/servicecomb/config/kie/KieConfig.java   |  6 +++
 .../config/kie/KieConfigurationSourceImpl.java     |  2 +
 6 files changed, 103 insertions(+), 2 deletions(-)

diff --git 
a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequestFactory.java
 
b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequestFactory.java
index dd766aac8..4f2b4325c 100644
--- 
a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequestFactory.java
+++ 
b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequestFactory.java
@@ -30,6 +30,10 @@ public class ConfigurationsRequestFactory {
 
   private static final String KEY_SERVICE = "service";
 
+  private static final String KEY_VERSION = "version";
+
+  private static final int VERSION_ORDER = 50;
+
   private static final int SERVICE_ORDER = 100;
 
   private static final int APP_ORDER = 200;
@@ -44,6 +48,9 @@ public class ConfigurationsRequestFactory {
     if (configuration.isEnableServiceConfig()) {
       result.add(createServiceConfigurationsRequest(configuration));
     }
+    if (configuration.isEnableVersionConfig()) {
+      result.add(createVersionConfigurationsRequest(configuration));
+    }
     if (configuration.isEnableCustomConfig()) {
       result.add(createCustomConfigurationsRequest(configuration));
     }
@@ -67,6 +74,16 @@ public class ConfigurationsRequestFactory {
             buildLabelQueryItem(KEY_ENVIRONMENT, 
configuration.getEnvironment())));
   }
 
+  private static ConfigurationsRequest 
createVersionConfigurationsRequest(KieConfiguration configuration) {
+    return new ConfigurationsRequest()
+        .setOrder(VERSION_ORDER)
+        .setWithExact(true)
+        .setLabelsQuery(buildLabelQuery(buildLabelQueryItem(KEY_APP, 
configuration.getAppName()),
+            buildLabelQueryItem(KEY_SERVICE, configuration.getServiceName()),
+            buildLabelQueryItem(KEY_ENVIRONMENT, 
configuration.getEnvironment()),
+            buildLabelQueryItem(KEY_VERSION, configuration.getVersion())));
+  }
+
   private static ConfigurationsRequest 
createCustomConfigurationsRequest(KieConfiguration configuration) {
     return new ConfigurationsRequest()
         .setOrder(CUSTOM_ORDER)
diff --git 
a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieConfiguration.java
 
b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieConfiguration.java
index 2a8bf4d9e..9c75f2d09 100644
--- 
a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieConfiguration.java
+++ 
b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieConfiguration.java
@@ -32,10 +32,14 @@ public class KieConfiguration {
 
   private String environment;
 
+  private String version;
+
   private boolean enableAppConfig;
 
   private boolean enableServiceConfig;
 
+  private boolean enableVersionConfig;
+
   private boolean enableCustomConfig;
 
   private String customLabelValue;
@@ -125,6 +129,15 @@ public class KieConfiguration {
     return this;
   }
 
+  public boolean isEnableVersionConfig() {
+    return enableVersionConfig;
+  }
+
+  public KieConfiguration setEnableVersionConfig(boolean enableVersionConfig) {
+    this.enableVersionConfig = enableVersionConfig;
+    return this;
+  }
+
   public int getPollingWaitInSeconds() {
     return pollingWaitInSeconds;
   }
@@ -160,4 +173,13 @@ public class KieConfiguration {
     this.refreshIntervalInMillis = refreshIntervallnMillis;
     return this;
   }
+
+  public String getVersion() {
+    return version;
+  }
+
+  public KieConfiguration setVersion(String version) {
+    this.version = version;
+    return this;
+  }
 }
diff --git a/demo/demo-cse-v2/README.md b/demo/demo-cse-v2/README.md
index b5c489012..a9936ecc9 100644
--- a/demo/demo-cse-v2/README.md
+++ b/demo/demo-cse-v2/README.md
@@ -9,7 +9,7 @@
 * 依次启动 provider、consumer、gateway
 
 * 在配置中心增加如下配置:
-  * 应用级配置:consumer.yaml。类型为 yaml。 
+* 应用级配置:consumer.yaml。类型为 yaml。 
 
 ```yaml
 cse:
@@ -59,6 +59,27 @@ cse:
     test:
       priority: v4
 ```
+* 应用级配置:consumerApp.yaml,应用选择demo-java-chassis-cse-v2。类型为 yaml。
+```yaml
+cse:
+  v2:
+    test:
+      priority1: v1
+```
+* 服务级配置:consumerSer.yaml,微服务性选择consumer。类型为 yaml。
+```yaml
+cse:
+  v2:
+    test:
+      priority1: v2
+```
+* 版本级配置:consumerIns.yaml,labels: 
app=demo-java-chassis-cse-v2,environment=,service=consumer,version = 0.0.1。类型为 
yaml。
+```yaml
+cse:
+  v2:
+    test:
+      priority1: v3
+```
 
   * 应用级配置: cse.v2.test.bar: bar 。 类型为 text。 
   
@@ -95,4 +116,35 @@ cse:
       priority: v3
 ```
 
-* 执行 tests-client 里面的集成测试用例 (成功) 
\ No newline at end of file
+* 执行 tests-client 里面的集成测试用例 (成功) 
+* 修改
+  * 应用级consumerApp.yaml。
+```yaml
+cse:
+  v2:
+    test:
+      priority1: v10
+```
+
+* 执行 tests-client 里面的集成测试用例 (成功) 
+* 修改
+  * 服务级配置:consumerSer.yaml。
+```yaml
+cse:
+  v2:
+    test:
+      priority1: v20
+```
+
+* 执行 tests-client 里面的集成测试用例 (成功)
+
+* 修改
+  * 版本级配置:consumerIns.yaml。
+```yaml
+cse:
+  v2:
+    test:
+      priority1: v30
+```
+
+* 执行 tests-client 里面的集成测试用例 (失败)
\ No newline at end of file
diff --git 
a/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
 
b/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
index 18011c410..8d783d626 100644
--- 
a/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
+++ 
b/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
@@ -43,6 +43,8 @@ public class ConsumerConfigIT implements CategorizedTestCase {
     TestMgr.check("\"common\"", result);
     result = template.getForObject(Config.GATEWAY_URL + 
"/config?key=cse.v2.test.extra", String.class);
     TestMgr.check("\"common\"", result);
+    result = template.getForObject(Config.GATEWAY_URL + 
"/config?key=cse.v2.test.priority1", String.class);
+    TestMgr.check("\"v3\"", result);
   }
 
   private void testFooBar() {
diff --git 
a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java
 
b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java
index 31371cd8f..f0d1171a3 100644
--- 
a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java
+++ 
b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java
@@ -57,6 +57,8 @@ public class KieConfig {
 
   private static final String ENABLE_SERVICE_CONFIG = 
"servicecomb.kie.enableServiceConfig";
 
+  private static final String ENABLE_VERSION_CONFIG = 
"servicecomb.kie.enableVersionConfig";
+
   private static final String ENABLE_CUSTOM_CONFIG = 
"servicecomb.kie.enableCustomConfig";
 
   public static final String FILE_SOURCE = 
"servicecomb.config.client.fileSource";
@@ -140,6 +142,10 @@ public class KieConfig {
     return finalConfig.getBoolean(ENABLE_SERVICE_CONFIG, true);
   }
 
+  public boolean enableVersionConfig() {
+    return finalConfig.getBoolean(ENABLE_VERSION_CONFIG, true);
+  }
+
   public boolean enableCustomConfig() {
     return finalConfig.getBoolean(ENABLE_CUSTOM_CONFIG, true);
   }
diff --git 
a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java
 
b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java
index 1c0de5419..fbf700e82 100644
--- 
a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java
+++ 
b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java
@@ -117,7 +117,9 @@ public class KieConfigurationSourceImpl implements 
ConfigCenterConfigurationSour
         .setEnableCustomConfig(KieConfig.INSTANCE.enableCustomConfig())
         .setEnableLongPolling(KieConfig.INSTANCE.enableLongPolling())
         .setEnableServiceConfig(KieConfig.INSTANCE.enableServiceConfig())
+        .setEnableVersionConfig(KieConfig.INSTANCE.enableVersionConfig())
         .setEnvironment(KieConfig.INSTANCE.getEnvironment())
+        .setVersion(KieConfig.INSTANCE.getVersion())
         .setPollingWaitInSeconds(KieConfig.INSTANCE.getPollingWaitTime())
         .setProject(KieConfig.INSTANCE.getDomainName())
         .setRefreshIntervalInMillis(KieConfig.INSTANCE.getRefreshInterval())

Reply via email to