You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by ra...@apache.org on 2021/06/11 03:25:24 UTC
[dubbo-admin] branch develop updated: [ISSUE #771]Use url
parameters instead of special configuration (#772)
This is an automated email from the ASF dual-hosted git repository.
ranke pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/dubbo-admin.git
The following commit(s) were added to refs/heads/develop by this push:
new 0c79c35 [ISSUE #771]Use url parameters instead of special configuration (#772)
0c79c35 is described below
commit 0c79c3510402b78486eb94082e85ffcf8205884b
Author: haoyann <10...@qq.com>
AuthorDate: Fri Jun 11 11:25:15 2021 +0800
[ISSUE #771]Use url parameters instead of special configuration (#772)
* use url parameters instead of special configuration
* fix ci
* keep config here
---
.../apache/dubbo/admin/config/ConfigCenter.java | 4 +-
.../registry/config/impl/ApolloConfiguration.java | 62 +++++++++++++++++-----
.../src/main/resources/application.properties | 41 ++++++++------
.../dubbo/admin/config/ConfigCenterTest.java | 9 ++--
4 files changed, 79 insertions(+), 37 deletions(-)
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
index 994bb8c..43a2dc1 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
@@ -170,10 +170,10 @@ public class ConfigCenter {
private URL formUrl(String config, String group, String nameSpace, String username, String password) {
URL url = URL.valueOf(config);
- if (StringUtils.isNotEmpty(group)) {
+ if (StringUtils.isEmpty(url.getParameter(Constants.GROUP_KEY)) && StringUtils.isNotEmpty(group)) {
url = url.addParameter(Constants.GROUP_KEY, group);
}
- if (StringUtils.isNotEmpty(nameSpace)){
+ if (StringUtils.isEmpty(url.getParameter(Constants.NAMESPACE_KEY)) && StringUtils.isNotEmpty(nameSpace)) {
url = url.addParameter(Constants.NAMESPACE_KEY, nameSpace);
}
if (StringUtils.isNotEmpty(username)) {
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/config/impl/ApolloConfiguration.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/config/impl/ApolloConfiguration.java
index 58ce20c..528df20 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/config/impl/ApolloConfiguration.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/config/impl/ApolloConfiguration.java
@@ -19,29 +19,48 @@ package org.apache.dubbo.admin.registry.config.impl;
import com.ctrip.framework.apollo.openapi.client.ApolloOpenApiClient;
import com.ctrip.framework.apollo.openapi.dto.OpenItemDTO;
+
+import org.apache.dubbo.admin.common.util.Constants;
import org.apache.dubbo.admin.registry.config.GovernanceConfiguration;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.SPI;
+import org.apache.dubbo.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Value;
+import java.util.Arrays;
+import java.util.stream.Collectors;
+
+import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;
+
@SPI("apollo")
public class ApolloConfiguration implements GovernanceConfiguration {
- @Value("${admin.apollo.token}")
- private String token;
+ private static final String APOLLO_ENV_KEY = "env";
+ private static final String CLUSTER_KEY = "cluster";
+ private static final String TOKEN_KEY = "token";
+ private static final String APOLLO_APPID_KEY = "app.id";
+ private static final String APOLLO_PROTOCOL_PREFIX = "http://";
- @Value("${admin.apollo.cluster}")
- private String cluster;
+ @Value("${admin.apollo.token:}")
+ private String configToken;
- @Value("${admin.apollo.namespace}")
- private String namespace;
+ @Value("${admin.apollo.cluster:}")
+ private String configCluster;
- @Value("${admin.apollo.env}")
- private String env;
+ @Value("${admin.apollo.namespace:}")
+ private String configNamespace;
- @Value("${admin.apollo.appId}")
- private String appId;
+ @Value("${admin.apollo.env:}")
+ private String configEnv;
+
+ @Value("${admin.apollo.appId:}")
+ private String configAppId;
+ private String token;
+ private String cluster;
+ private String namespace;
+ private String env;
+ private String appId;
private URL url;
private ApolloOpenApiClient client;
@@ -58,9 +77,28 @@ public class ApolloConfiguration implements GovernanceConfiguration {
@Override
public void init() {
- client = ApolloOpenApiClient.newBuilder().withPortalUrl(url.getAddress()).withToken(token).build();
+ token = url.getParameter(TOKEN_KEY, configToken);
+ cluster = url.getParameter(CLUSTER_KEY, configCluster);
+ namespace = url.getParameter(Constants.NAMESPACE_KEY, configNamespace);
+ env = url.getParameter(APOLLO_ENV_KEY, configEnv);
+ appId = url.getParameter(APOLLO_APPID_KEY, configAppId);
+ String address = getAddressWithProtocolPrefix(url);
+ client = ApolloOpenApiClient.newBuilder().withPortalUrl(address).withToken(token).build();
+ }
+ private String getAddressWithProtocolPrefix(URL url) {
+ String address = url.getBackupAddress();
+ if (StringUtils.isNotEmpty(address)) {
+ address = Arrays.stream(COMMA_SPLIT_PATTERN.split(address))
+ .map(addr -> {
+ if (addr.startsWith(APOLLO_PROTOCOL_PREFIX)) {
+ return addr;
+ }
+ return APOLLO_PROTOCOL_PREFIX + addr;
+ })
+ .collect(Collectors.joining(","));
+ }
+ return address;
}
-
@Override
public String setConfig(String key, String value) {
return setConfig(null, key, value);
diff --git a/dubbo-admin-server/src/main/resources/application.properties b/dubbo-admin-server/src/main/resources/application.properties
index 38abde6..df17468 100644
--- a/dubbo-admin-server/src/main/resources/application.properties
+++ b/dubbo-admin-server/src/main/resources/application.properties
@@ -15,35 +15,42 @@
# limitations under the License.
#
-# centers in dubbo2.7
+# centers in dubbo2.7, if you want to add parameters, please add them to the url
admin.registry.address=zookeeper://127.0.0.1:2181
admin.config-center=zookeeper://127.0.0.1:2181
admin.metadata-report.address=zookeeper://127.0.0.1:2181
-#admin.registry.address=nacos://127.0.0.1:8848
-#admin.config-center=nacos://127.0.0.1:8848
-#admin.metadata-report.address=nacos://127.0.0.1:8848
+# nacos config, add parameters to url like username=nacos&password=nacos
+#admin.registry.address=nacos://127.0.0.1:8848?group=DEFAULT_GROUP&namespace=public
+#admin.config-center=nacos://127.0.0.1:8848?group=dubbo
+#admin.metadata-report.address=nacos://127.0.0.1:8848?group=dubbo
+
+#group (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.registry.group=dubbo
+#admin.config-center.group=dubbo
+#admin.metadata-report.group=dubbo
+
+#namespace used by nacos. (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.registry.namespace=public
+#admin.config-center.namespace=public
+#admin.metadata-report.namespace=public
admin.root.user.name=root
admin.root.user.password=root
-#group
-admin.registry.group=dubbo
-admin.config-center.group=dubbo
-admin.metadata-report.group=dubbo
#session timeout, default is one hour
admin.check.sessionTimeoutMilli=3600000
-#namespace used by nacos
-admin.registry.namespace=public
-admin.config-center.namespace=public
-admin.metadata-report.namespace=public
-admin.apollo.token=e16e5cd903fd0c97a116c873b448544b9d086de9
-admin.apollo.appId=test
-admin.apollo.env=dev
-admin.apollo.cluster=default
-admin.apollo.namespace=dubbo
+# apollo config
+# admin.config-center = apollo://localhost:8070?token=e16e5cd903fd0c97a116c873b448544b9d086de9&app.id=test&env=dev&cluster=default&namespace=dubbo
+
+# (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
+#admin.apollo.token=e16e5cd903fd0c97a116c873b448544b9d086de9
+#admin.apollo.appId=test
+#admin.apollo.env=dev
+#admin.apollo.cluster=default
+#admin.apollo.namespace=dubbo
#compress
server.compression.enabled=true
diff --git a/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/config/ConfigCenterTest.java b/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/config/ConfigCenterTest.java
index 2def1ac..87271c1 100644
--- a/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/config/ConfigCenterTest.java
+++ b/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/config/ConfigCenterTest.java
@@ -68,8 +68,7 @@ public class ConfigCenterTest {
@Test
public void testGetDynamicConfiguration() throws Exception {
// mock @value inject
- ReflectionTestUtils.setField(configCenter, "configCenter", zkAddress);
- ReflectionTestUtils.setField(configCenter, "configCenterGroup", "dubbo");
+ ReflectionTestUtils.setField(configCenter, "configCenter", zkAddress + "?group=" + "dubbo");
ReflectionTestUtils.setField(configCenter, "username", "username");
ReflectionTestUtils.setField(configCenter, "password", "password");
@@ -128,8 +127,7 @@ public class ConfigCenterTest {
assertNull(ReflectionTestUtils.getField(configCenter, "registryUrl"));
// mock @value inject
- ReflectionTestUtils.setField(configCenter, "registryAddress", zkAddress);
- ReflectionTestUtils.setField(configCenter, "registryGroup", "dubbo");
+ ReflectionTestUtils.setField(configCenter, "registryAddress", zkAddress + "?group=" + "dubbo");
ReflectionTestUtils.setField(configCenter, "username", "username");
ReflectionTestUtils.setField(configCenter, "password", "password");
@@ -147,8 +145,7 @@ public class ConfigCenterTest {
assertNull(ReflectionTestUtils.getField(configCenter, "metadataUrl"));
// mock @value inject
- ReflectionTestUtils.setField(configCenter, "metadataAddress", zkAddress);
- ReflectionTestUtils.setField(configCenter, "metadataGroup", "dubbo");
+ ReflectionTestUtils.setField(configCenter, "metadataAddress", zkAddress + "?group=" + "dubbo");
ReflectionTestUtils.setField(configCenter, "username", "username");
ReflectionTestUtils.setField(configCenter, "password", "password");