rename package & change route path
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/RouteRule.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/RouteUtils.java
similarity index 86%
rename from dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/RouteRule.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/RouteUtils.java
index 7c48e14..cb2c759 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/RouteRule.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/RouteUtils.java
@@ -37,7 +37,7 @@
* The meaning of Rule: If a request matches When Condition, then use Then Condition to filter providers (only providers match Then Condition will be returned). <br>
* The process of using Conditions to match consumers and providers is called `Filter`.
* When Condition are used to filter ConsumersController, while Then Condition are used to filter ProvidersController.
- * RouteRule performs like this: If a Consumer matches When Condition, then only return the ProvidersController matches Then Condition. This means RouteRule should be applied to current Consumer and the providers returned are filtered by RouteRule.<br>
+ * RouteUtils performs like this: If a Consumer matches When Condition, then only return the ProvidersController matches Then Condition. This means RouteUtils should be applied to current Consumer and the providers returned are filtered by RouteUtils.<br>
*
* An example of ConditionRoute Rule:<code>
* key1 = value11,value12 & key2 = value21 & key2 != value22 => key3 = value3 & key4 = value41,vlaue42 & key5 !=value51
@@ -47,9 +47,9 @@
* Value object, thread safe.
*
*/
-public class RouteRule {
+public class RouteUtils {
@SuppressWarnings("unchecked")
- static RouteRule EMPTY = new RouteRule(Collections.EMPTY_MAP, Collections.EMPTY_MAP);
+ static RouteUtils EMPTY = new RouteUtils(Collections.EMPTY_MAP, Collections.EMPTY_MAP);
private static Pattern ROUTE_PATTERN = Pattern.compile("([&!=,]*)\\s*([^&!=,\\s]+)");
private static Pattern CONDITION_SEPERATOR = Pattern.compile("(.*)=>(.*)");
private static Pattern VALUE_LIST_SEPARATOR = Pattern.compile("\\s*,\\s*");
@@ -58,7 +58,7 @@
private volatile String tostring = null;
// FIXME
- private RouteRule(Map<String, MatchPair> when, Map<String, MatchPair> then) {
+ private RouteUtils(Map<String, MatchPair> when, Map<String, MatchPair> then) {
for (Map.Entry<String, MatchPair> entry : when.entrySet()) {
entry.getValue().freeze();
}
@@ -140,16 +140,16 @@
}
/**
- * Parse the RouteRule as a string into an object.
+ * Parse the RouteUtils as a string into an object.
*
- * @throws ParseException RouteRule string format is wrong. The following input conditions, RouteRule are illegal.
+ * @throws ParseException RouteUtils string format is wrong. The following input conditions, RouteUtils are illegal.
* <ul> <li> input is <code>null</code>。
* <li> input is "" or " "。
* <li> input Rule doesn't have a When Condition
* <li> input Rule doesn't have a Then Condition
* </ul>
*/
- public static RouteRule parse(Route conditionRoute) throws ParseException {
+ public static RouteUtils parse(Route conditionRoute) throws ParseException {
if (conditionRoute == null)
throw new ParseException("null conditionRoute!", 0);
@@ -160,7 +160,7 @@
return parse(conditionRoute == null ? null : conditionRoute.getMatchRule(), conditionRoute == null ? null : conditionRoute.getFilterRule());
}
- public static RouteRule parse(String whenRule, String thenRule) throws ParseException {
+ public static RouteUtils parse(String whenRule, String thenRule) throws ParseException {
/*if (whenRule == null || whenRule.trim().length() == 0) {
throw new ParseException("Illegal route rule without when express", 0);
}*/
@@ -169,10 +169,10 @@
}
Map<String, MatchPair> when = parseRule(whenRule.trim());
Map<String, MatchPair> then = parseRule(thenRule.trim());
- return new RouteRule(when, then);
+ return new RouteUtils(when, then);
}
- public static RouteRule parse(String rule) throws ParseException {
+ public static RouteUtils parse(String rule) throws ParseException {
if (StringUtils.isBlank(rule)) {
throw new ParseException("Illegal blank route rule", 0);
}
@@ -187,7 +187,7 @@
* @see #parse(String)
* @throws RuntimeException This is an wrapper exception for the {@link ParseException} thrown by the {@link #parse (String)} method.
*/
- public static RouteRule parseQuitely(Route conditionRoute) {
+ public static RouteUtils parseQuitely(Route conditionRoute) {
try {
return parse(conditionRoute);
} catch (ParseException e) {
@@ -235,15 +235,10 @@
existRule.setPriority(conditionRoute.getPriority());
return existRule;
}
- public static BlackWhiteList convertToBlackWhiteList(AccessDTO accessDTO) {
+ public static List<String> convertToBlackWhiteList(AccessDTO accessDTO) {
if (accessDTO == null) {
return null;
}
- BlackWhiteList blackWhiteList = new BlackWhiteList();
-// if (StringUtils.isNoneEmpty(accessDTO.getApplication())) {
-// blackWhiteList.set
-// }
-// AccessDTO storeDTO = ConvertUtil.convertDTOtoStore(accessDTO);
Set<String> whiteList = accessDTO.getWhitelist();
Set<String> blackList = accessDTO.getBlacklist();
@@ -268,11 +263,38 @@
sb.append(" =>");
conditions.add(sb.toString());
}
- blackWhiteList.setConditions(conditions);
- return blackWhiteList;
+ return conditions;
}
- public static AccessDTO convertToAccessDTO(BlackWhiteList blackWhiteList, String scope, String key) {
+ public static List<String> filterBlackWhiteListFromConditions(List<String> conditions) {
+ List<String> result = new ArrayList<>();
+ if (conditions == null || conditions.isEmpty()) {
+ return result;
+ }
+ for (String condition : conditions) {
+ if (isBlackList(condition)) {
+ result.add(condition);
+ } else if (isWhiteList(condition)) {
+ result.add(condition);
+ }
+ }
+ return result;
+ }
+
+ public static List<String> filterConditionRuleFromConditions(List<String> conditions) {
+ List<String> result = new ArrayList<>();
+ if (conditions == null || conditions.isEmpty()) {
+ return result;
+ }
+ for (String condition : conditions) {
+ if (!isBlackList(condition) && !isWhiteList(condition)) {
+ result.add(condition);
+ }
+ }
+ return result;
+ }
+
+ public static AccessDTO convertToAccessDTO(List<String> blackWhiteList, String scope, String key) {
if (blackWhiteList == null) {
return null;
}
@@ -282,8 +304,8 @@
} else {
accessDTO.setService(key);
}
- if (blackWhiteList.getConditions() != null) {
- for (String condition : blackWhiteList.getConditions()) {
+ if (blackWhiteList != null) {
+ for (String condition : blackWhiteList) {
if (condition.contains("host != ")) {
//white list
condition = org.apache.commons.lang3.StringUtils.substringBetween(condition, "host !=", " =>").trim();
@@ -306,8 +328,8 @@
route.setFilterRule("false");
route.setEnabled(true);
- Map<String, RouteRule.MatchPair> when = new HashMap<>();
- RouteRule.MatchPair matchPair = new RouteRule.MatchPair(new HashSet<>(), new HashSet<>());
+ Map<String, RouteUtils.MatchPair> when = new HashMap<>();
+ RouteUtils.MatchPair matchPair = new RouteUtils.MatchPair(new HashSet<>(), new HashSet<>());
when.put(Route.KEY_CONSUMER_HOST, matchPair);
if (accessDTO.getWhitelist() != null) {
@@ -318,7 +340,7 @@
}
StringBuilder sb = new StringBuilder();
- RouteRule.contidionToString(sb, when);
+ RouteUtils.contidionToString(sb, when);
route.setMatchRule(sb.toString());
return route;
}
@@ -330,7 +352,7 @@
} else {
conditionRouteDTO.setApplication(routingRule.getKey());
}
- conditionRouteDTO.setConditions(routingRule.getConditions());
+ conditionRouteDTO.setConditions(RouteUtils.filterConditionRuleFromConditions(routingRule.getConditions()));
conditionRouteDTO.setPriority(routingRule.getPriority());
conditionRouteDTO.setEnabled(routingRule.isEnabled());
conditionRouteDTO.setForce(routingRule.isForce());
@@ -338,7 +360,7 @@
return conditionRouteDTO;
}
- public static Route convertBlackWhiteListtoRoute(BlackWhiteList blackWhiteList, String scope, String key) {
+ public static Route convertBlackWhiteListtoRoute(List<String> blackWhiteList, String scope, String key) {
AccessDTO accessDTO = convertToAccessDTO(blackWhiteList, scope, key);
return convertAccessDTOtoRoute(accessDTO);
}
@@ -402,19 +424,19 @@
return condition;
}
- public static RouteRule createFromNameAndValueListString(Map<String, String> whenParams, Map<String, String> notWhenParams,
- Map<String, String> thenParams, Map<String, String> notThenParams) {
+ public static RouteUtils createFromNameAndValueListString(Map<String, String> whenParams, Map<String, String> notWhenParams,
+ Map<String, String> thenParams, Map<String, String> notThenParams) {
Map<String, MatchPair> when = parseNameAndValueListString2Condition(whenParams, notWhenParams);
Map<String, MatchPair> then = parseNameAndValueListString2Condition(thenParams, notThenParams);
- return new RouteRule(when, then);
+ return new RouteUtils(when, then);
}
- public static RouteRule createFromCondition(Map<String, MatchPair> whenCondition, Map<String, MatchPair> thenCondition) {
- return new RouteRule(whenCondition, thenCondition);
+ public static RouteUtils createFromCondition(Map<String, MatchPair> whenCondition, Map<String, MatchPair> thenCondition) {
+ return new RouteUtils(whenCondition, thenCondition);
}
- public static RouteRule copyWithRemove(RouteRule copy, Set<String> whenParams, Set<String> thenParams) {
+ public static RouteUtils copyWithRemove(RouteUtils copy, Set<String> whenParams, Set<String> thenParams) {
Map<String, MatchPair> when = new HashMap<String, MatchPair>();
for (Entry<String, MatchPair> entry : copy.getWhenCondition().entrySet()) {
if (whenParams == null || !whenParams.contains(entry.getKey())) {
@@ -429,7 +451,7 @@
}
}
- return new RouteRule(when, then);
+ return new RouteUtils(when, then);
}
/**
@@ -438,9 +460,9 @@
* @param copy Replace Base
* @param whenCondition WhenCondition to replace, if Base does not have an item, insert it directly.
* @param thenCondition ThenCondition to replace, if Base has no items, then insert directly.
- * @return RouteRule after replacement
+ * @return RouteUtils after replacement
*/
- public static RouteRule copyWithReplace(RouteRule copy, Map<String, MatchPair> whenCondition, Map<String, MatchPair> thenCondition) {
+ public static RouteUtils copyWithReplace(RouteUtils copy, Map<String, MatchPair> whenCondition, Map<String, MatchPair> thenCondition) {
if (null == copy) {
throw new NullPointerException("Argument copy is null!");
}
@@ -457,7 +479,7 @@
then.putAll(thenCondition);
}
- return new RouteRule(when, then);
+ return new RouteUtils(when, then);
}
// TODO ToString out of the current list is out of order, should we sort?
@@ -573,6 +595,14 @@
return sb.toString();
}
+ private static boolean isBlackList(String address) {
+ return (address.startsWith("host = ") && address.endsWith(" =>"));
+ }
+
+ private static boolean isWhiteList(String address) {
+ return (address.startsWith("host != ") && address.endsWith(" =>"));
+ }
+
@Override
public String toString() {
if (tostring != null)
@@ -603,7 +633,7 @@
return false;
if (getClass() != obj.getClass())
return false;
- RouteRule other = (RouteRule) obj;
+ RouteUtils other = (RouteUtils) obj;
if (thenCondition == null) {
if (other.thenCondition != null)
return false;
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
index 6d527ff..a3c6405 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
@@ -20,9 +20,9 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.dubbo.admin.common.exception.ConfigurationException;
import org.apache.dubbo.admin.common.util.Constants;
-import org.apache.dubbo.admin.data.config.GovernanceConfiguration;
-import org.apache.dubbo.admin.data.metadata.MetaDataCollector;
-import org.apache.dubbo.admin.data.metadata.impl.NoOpMetadataCollector;
+import org.apache.dubbo.admin.registry.config.GovernanceConfiguration;
+import org.apache.dubbo.admin.registry.metadata.MetaDataCollector;
+import org.apache.dubbo.admin.registry.metadata.impl.NoOpMetadataCollector;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.logger.Logger;
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/RoutingRule.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/RoutingRule.java
index 46b012f..7707e94 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/RoutingRule.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/RoutingRule.java
@@ -28,7 +28,7 @@
private boolean force;
private boolean runtime;
private List<String> conditions;
- private BlackWhiteList blackWhiteList;
+// private BlackWhiteList blackWhiteList;
public String getKey() {
@@ -87,11 +87,11 @@
this.conditions = conditions;
}
- public BlackWhiteList getBlackWhiteList() {
- return blackWhiteList;
- }
-
- public void setBlackWhiteList(BlackWhiteList blackWhiteList) {
- this.blackWhiteList = blackWhiteList;
- }
+// public BlackWhiteList getBlackWhiteList() {
+// return blackWhiteList;
+// }
+//
+// public void setBlackWhiteList(BlackWhiteList blackWhiteList) {
+// this.blackWhiteList = blackWhiteList;
+// }
}
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/GovernanceConfiguration.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/GovernanceConfiguration.java
similarity index 96%
rename from dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/GovernanceConfiguration.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/GovernanceConfiguration.java
index 8fb75ab..c6ed397 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/GovernanceConfiguration.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/GovernanceConfiguration.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.dubbo.admin.data.config;
+package org.apache.dubbo.admin.registry.config;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.SPI;
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/impl/ApolloConfiguration.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/impl/ApolloConfiguration.java
similarity index 95%
rename from dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/impl/ApolloConfiguration.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/impl/ApolloConfiguration.java
index 2bc0f90..13d4b2e 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/impl/ApolloConfiguration.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/impl/ApolloConfiguration.java
@@ -15,11 +15,11 @@
* limitations under the License.
*/
-package org.apache.dubbo.admin.data.config.impl;
+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.data.config.GovernanceConfiguration;
+import org.apache.dubbo.admin.registry.config.GovernanceConfiguration;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.SPI;
import org.springframework.beans.factory.annotation.Value;
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/impl/NoOpConfiguration.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/impl/NoOpConfiguration.java
similarity index 92%
rename from dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/impl/NoOpConfiguration.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/impl/NoOpConfiguration.java
index 08cb489..85dca2f 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/impl/NoOpConfiguration.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/impl/NoOpConfiguration.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.dubbo.admin.data.config.impl;
+package org.apache.dubbo.admin.registry.config.impl;
-import org.apache.dubbo.admin.data.config.GovernanceConfiguration;
+import org.apache.dubbo.admin.registry.config.GovernanceConfiguration;
import org.apache.dubbo.common.URL;
public class NoOpConfiguration implements GovernanceConfiguration {
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/impl/ZookeeperConfiguration.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/impl/ZookeeperConfiguration.java
similarity index 97%
rename from dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/impl/ZookeeperConfiguration.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/impl/ZookeeperConfiguration.java
index ffe4b49..0ba847a 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/impl/ZookeeperConfiguration.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/config/impl/ZookeeperConfiguration.java
@@ -15,14 +15,14 @@
* limitations under the License.
*/
-package org.apache.dubbo.admin.data.config.impl;
+package org.apache.dubbo.admin.registry.config.impl;
import org.apache.commons.lang3.StringUtils;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.dubbo.admin.common.util.Constants;
-import org.apache.dubbo.admin.data.config.GovernanceConfiguration;
+import org.apache.dubbo.admin.registry.config.GovernanceConfiguration;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.URL;
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/MetaDataCollector.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/metadata/MetaDataCollector.java
similarity index 95%
rename from dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/MetaDataCollector.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/metadata/MetaDataCollector.java
index 5b5e802..b5974a7 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/MetaDataCollector.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/metadata/MetaDataCollector.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.dubbo.admin.data.metadata;
+package org.apache.dubbo.admin.registry.metadata;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.SPI;
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/NoOpMetadataCollector.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/metadata/impl/NoOpMetadataCollector.java
similarity index 91%
rename from dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/NoOpMetadataCollector.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/metadata/impl/NoOpMetadataCollector.java
index 8e561a6..3638570 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/NoOpMetadataCollector.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/metadata/impl/NoOpMetadataCollector.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.dubbo.admin.data.metadata.impl;
+package org.apache.dubbo.admin.registry.metadata.impl;
-import org.apache.dubbo.admin.data.metadata.MetaDataCollector;
+import org.apache.dubbo.admin.registry.metadata.MetaDataCollector;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.metadata.identifier.MetadataIdentifier;
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/RedisMetaDataCollector.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/metadata/impl/RedisMetaDataCollector.java
similarity index 94%
rename from dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/RedisMetaDataCollector.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/metadata/impl/RedisMetaDataCollector.java
index b00238a..2431b8e 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/RedisMetaDataCollector.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/metadata/impl/RedisMetaDataCollector.java
@@ -15,10 +15,10 @@
* limitations under the License.
*/
-package org.apache.dubbo.admin.data.metadata.impl;
+package org.apache.dubbo.admin.registry.metadata.impl;
-import org.apache.dubbo.admin.data.metadata.MetaDataCollector;
+import org.apache.dubbo.admin.registry.metadata.MetaDataCollector;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.metadata.identifier.MetadataIdentifier;
import redis.clients.jedis.Jedis;
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/ZookeeperMetaDataCollector.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/metadata/impl/ZookeeperMetaDataCollector.java
similarity index 96%
rename from dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/ZookeeperMetaDataCollector.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/metadata/impl/ZookeeperMetaDataCollector.java
index fcab3b0..48c3cf3 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/ZookeeperMetaDataCollector.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/metadata/impl/ZookeeperMetaDataCollector.java
@@ -15,13 +15,13 @@
* limitations under the License.
*/
-package org.apache.dubbo.admin.data.metadata.impl;
+package org.apache.dubbo.admin.registry.metadata.impl;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.dubbo.admin.common.util.Constants;
-import org.apache.dubbo.admin.data.metadata.MetaDataCollector;
+import org.apache.dubbo.admin.registry.metadata.MetaDataCollector;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/AbstractService.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/AbstractService.java
index 914943d..d9e63d5 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/AbstractService.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/AbstractService.java
@@ -16,8 +16,8 @@
*/
package org.apache.dubbo.admin.service.impl;
-import org.apache.dubbo.admin.data.config.GovernanceConfiguration;
-import org.apache.dubbo.admin.data.metadata.MetaDataCollector;
+import org.apache.dubbo.admin.registry.config.GovernanceConfiguration;
+import org.apache.dubbo.admin.registry.metadata.MetaDataCollector;
import org.apache.dubbo.admin.service.RegistryServerSync;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.logger.Logger;
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
index b7e7def..bd1272e 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
@@ -19,13 +19,12 @@
import org.apache.dubbo.admin.common.exception.ResourceNotFoundException;
import org.apache.dubbo.admin.common.util.Constants;
import org.apache.dubbo.admin.common.util.ConvertUtil;
-import org.apache.dubbo.admin.common.util.RouteRule;
+import org.apache.dubbo.admin.common.util.RouteUtils;
import org.apache.dubbo.admin.common.util.YamlParser;
import org.apache.dubbo.admin.model.domain.Route;
import org.apache.dubbo.admin.model.dto.AccessDTO;
import org.apache.dubbo.admin.model.dto.ConditionRouteDTO;
import org.apache.dubbo.admin.model.dto.TagRouteDTO;
-import org.apache.dubbo.admin.model.store.BlackWhiteList;
import org.apache.dubbo.admin.model.store.RoutingRule;
import org.apache.dubbo.admin.model.store.TagRoute;
import org.apache.dubbo.admin.service.RouteService;
@@ -53,7 +52,7 @@
if (existConfig != null) {
existRule = YamlParser.loadObject(existConfig, RoutingRule.class);
}
- existRule = RouteRule.insertConditionRule(existRule, conditionRoute);
+ existRule = RouteUtils.insertConditionRule(existRule, conditionRoute);
//register2.7
dynamicConfiguration.setConfig(path, YamlParser.dumpObject(existRule));
@@ -74,8 +73,8 @@
throw new ResourceNotFoundException("no existing condition route for path: " + path);
}
RoutingRule routingRule = YamlParser.loadObject(existConfig, RoutingRule.class);
- ConditionRouteDTO oldConditionRoute = RouteRule.createConditionRouteFromRule(routingRule);
- routingRule = RouteRule.insertConditionRule(routingRule, newConditionRoute);
+ ConditionRouteDTO oldConditionRoute = RouteUtils.createConditionRouteFromRule(routingRule);
+ routingRule = RouteUtils.insertConditionRule(routingRule, newConditionRoute);
dynamicConfiguration.setConfig(path, YamlParser.dumpObject(routingRule));
//for 2.6
@@ -98,8 +97,9 @@
//throw exception
}
RoutingRule route = YamlParser.loadObject(config, RoutingRule.class);
- if (route.getBlackWhiteList() != null) {
- route.setConditions(null);
+ List<String> blackWhiteList = RouteUtils.filterBlackWhiteListFromConditions(route.getConditions());
+ if (blackWhiteList.size() != 0) {
+ route.setConditions(blackWhiteList);
dynamicConfiguration.setConfig(path, YamlParser.dumpObject(route));
} else {
dynamicConfiguration.deleteConfig(path);
@@ -108,7 +108,7 @@
//for 2.6
if (route.getScope().equals(Constants.SERVICE)) {
RoutingRule originRule = YamlParser.loadObject(config, RoutingRule.class);
- ConditionRouteDTO conditionRouteDTO = RouteRule.createConditionRouteFromRule(originRule);
+ ConditionRouteDTO conditionRouteDTO = RouteUtils.createConditionRouteFromRule(originRule);
Route old = convertRouteToOldRoute(conditionRouteDTO);
registry.unregister(old.toUrl().addParameter(Constants.COMPATIBLE_CONFIG, true));
}
@@ -120,16 +120,17 @@
String config = dynamicConfiguration.getConfig(path);
if (config != null) {
RoutingRule ruleDTO = YamlParser.loadObject(config, RoutingRule.class);
- BlackWhiteList old = ruleDTO.getBlackWhiteList();
- if (ruleDTO.getConditions() == null) {
+ List<String> blackWhiteList = RouteUtils.filterBlackWhiteListFromConditions(ruleDTO.getConditions());
+ List<String> conditions = RouteUtils.filterConditionRuleFromConditions(ruleDTO.getConditions());
+ if (conditions.size() == 0) {
dynamicConfiguration.deleteConfig(path);
} else {
- ruleDTO.setBlackWhiteList(null);
+ ruleDTO.setConditions(conditions);
dynamicConfiguration.setConfig(path, YamlParser.dumpObject(ruleDTO));
}
//2.6
- if (ruleDTO.getScope().equals(Constants.SERVICE) && old != null) {
- Route route = RouteRule.convertBlackWhiteListtoRoute(old, Constants.SERVICE, id);
+ if (ruleDTO.getScope().equals(Constants.SERVICE) && blackWhiteList.size() > 0) {
+ Route route = RouteUtils.convertBlackWhiteListtoRoute(blackWhiteList, Constants.SERVICE, id);
registry.unregister(route.toUrl());
}
}
@@ -140,7 +141,7 @@
String id = ConvertUtil.getIdFromDTO(accessDTO);
String path = getPath(id, Constants.CONDITION_ROUTE);
String config = dynamicConfiguration.getConfig(path);
- BlackWhiteList blackWhiteList = RouteRule.convertToBlackWhiteList(accessDTO);
+ List<String> blackWhiteList = RouteUtils.convertToBlackWhiteList(accessDTO);
RoutingRule ruleDTO;
if (config == null) {
ruleDTO = new RoutingRule();
@@ -151,19 +152,20 @@
ruleDTO.setScope(Constants.SERVICE);
}
ruleDTO.setKey(id);
- ruleDTO.setBlackWhiteList(blackWhiteList);
+ ruleDTO.setConditions(blackWhiteList);
} else {
ruleDTO = YamlParser.loadObject(config, RoutingRule.class);
- if (ruleDTO.getBlackWhiteList() != null) {
- //todo throw exception
+ if (ruleDTO.getConditions() == null) {
+ ruleDTO.setConditions(blackWhiteList);
+ } else {
+ ruleDTO.getConditions().addAll(blackWhiteList);
}
- ruleDTO.setBlackWhiteList(blackWhiteList);
}
dynamicConfiguration.setConfig(path, YamlParser.dumpObject(ruleDTO));
//for 2.6
if (ruleDTO.getScope().equals("service")) {
- Route route = RouteRule.convertAccessDTOtoRoute(accessDTO);
+ Route route = RouteUtils.convertAccessDTOtoRoute(accessDTO);
registry.register(route.toUrl());
}
@@ -175,8 +177,8 @@
String config = dynamicConfiguration.getConfig(path);
if (config != null) {
RoutingRule ruleDTO = YamlParser.loadObject(config, RoutingRule.class);
- BlackWhiteList blackWhiteList = ruleDTO.getBlackWhiteList();
- return RouteRule.convertToAccessDTO(blackWhiteList, ruleDTO.getScope(), ruleDTO.getKey());
+ List<String> blackWhiteList = RouteUtils.filterBlackWhiteListFromConditions(ruleDTO.getConditions());
+ return RouteUtils.convertToAccessDTO(blackWhiteList, ruleDTO.getScope(), ruleDTO.getKey());
}
return null;
}
@@ -185,20 +187,22 @@
public void updateAccess(AccessDTO accessDTO) {
String key = ConvertUtil.getIdFromDTO(accessDTO);
String path = getPath(key, Constants.CONDITION_ROUTE);
- BlackWhiteList blackWhiteList = RouteRule.convertToBlackWhiteList(accessDTO);
- BlackWhiteList old = null;
+ List<String> blackWhiteList = RouteUtils.convertToBlackWhiteList(accessDTO);
String config = dynamicConfiguration.getConfig(path);
+ List<String> oldList = null;
if (config != null) {
RoutingRule ruleDTO = YamlParser.loadObject(config, RoutingRule.class);
- old = ruleDTO.getBlackWhiteList();
- ruleDTO.setBlackWhiteList(blackWhiteList);
+ oldList = RouteUtils.filterBlackWhiteListFromConditions(ruleDTO.getConditions());
+ List<String> conditions = RouteUtils.filterConditionRuleFromConditions(ruleDTO.getConditions());
+ conditions.addAll(blackWhiteList);
+ ruleDTO.setConditions(conditions);
dynamicConfiguration.setConfig(path, YamlParser.dumpObject(ruleDTO));
}
//2.6
if (StringUtils.isNotEmpty(accessDTO.getService())) {
- Route oldRoute = RouteRule.convertBlackWhiteListtoRoute(old, Constants.SERVICE, key);
- Route newRoute = RouteRule.convertAccessDTOtoRoute(accessDTO);
+ Route oldRoute = RouteUtils.convertBlackWhiteListtoRoute(oldList, Constants.SERVICE, key);
+ Route newRoute = RouteUtils.convertAccessDTOtoRoute(accessDTO);
registry.unregister(oldRoute.toUrl());
registry.register(newRoute.toUrl());
}
@@ -213,7 +217,7 @@
if (ruleDTO.getScope().equals(Constants.SERVICE)) {
//for2.6
- URL oldURL = convertRouteToOldRoute(RouteRule.createConditionRouteFromRule(ruleDTO)).toUrl().addParameter(Constants.COMPATIBLE_CONFIG, true);
+ URL oldURL = convertRouteToOldRoute(RouteUtils.createConditionRouteFromRule(ruleDTO)).toUrl().addParameter(Constants.COMPATIBLE_CONFIG, true);
registry.unregister(oldURL);
oldURL = oldURL.addParameter("enabled", true);
registry.register(oldURL);
@@ -235,7 +239,7 @@
if (routeRule.getScope().equals(Constants.SERVICE)) {
//for 2.6
- URL oldURL = convertRouteToOldRoute(RouteRule.createConditionRouteFromRule(routeRule)).toUrl().addParameter(Constants.COMPATIBLE_CONFIG,true);
+ URL oldURL = convertRouteToOldRoute(RouteUtils.createConditionRouteFromRule(routeRule)).toUrl().addParameter(Constants.COMPATIBLE_CONFIG,true);
registry.unregister(oldURL);
oldURL = oldURL.addParameter("enabled", false);
registry.register(oldURL);
@@ -254,7 +258,7 @@
String config = dynamicConfiguration.getConfig(path);
if (config != null) {
RoutingRule routingRule = YamlParser.loadObject(config, RoutingRule.class);
- ConditionRouteDTO conditionRouteDTO = RouteRule.createConditionRouteFromRule(routingRule);
+ ConditionRouteDTO conditionRouteDTO = RouteUtils.createConditionRouteFromRule(routingRule);
return conditionRouteDTO;
}
return null;
@@ -264,7 +268,7 @@
public void createTagRoute(TagRouteDTO tagRoute) {
String id = ConvertUtil.getIdFromDTO(tagRoute);
String path = getPath(id,Constants.TAG_ROUTE);
- TagRoute store = RouteRule.convertTagroutetoStore(tagRoute);
+ TagRoute store = RouteUtils.convertTagroutetoStore(tagRoute);
dynamicConfiguration.setConfig(path, YamlParser.dumpObject(store));
}
@@ -276,7 +280,7 @@
throw new ResourceNotFoundException("can not find tagroute: " + id);
//throw exception
}
- TagRoute store = RouteRule.convertTagroutetoStore(tagRoute);
+ TagRoute store = RouteUtils.convertTagroutetoStore(tagRoute);
dynamicConfiguration.setConfig(path, YamlParser.dumpObject(store));
}
@@ -317,16 +321,16 @@
String config = dynamicConfiguration.getConfig(path);
if (config != null) {
TagRoute tagRoute = YamlParser.loadObject(config, TagRoute.class);
- return RouteRule.convertTagroutetoDisplay(tagRoute);
+ return RouteUtils.convertTagroutetoDisplay(tagRoute);
}
return null;
}
private String getPath(String key, String type) {
if (type.equals(Constants.CONDITION_ROUTE)) {
- return prefix + Constants.PATH_SEPARATOR + key + Constants.PATH_SEPARATOR + "routers";
+ return prefix + Constants.PATH_SEPARATOR + key + Constants.PATH_SEPARATOR + "condition-route";
} else {
- return prefix + Constants.PATH_SEPARATOR + key + Constants.PATH_SEPARATOR + "tagrouters";
+ return prefix + Constants.PATH_SEPARATOR + key + Constants.PATH_SEPARATOR + "tag-route";
}
}
diff --git a/dubbo-admin-frontend/src/components/ServiceSearch.vue b/dubbo-admin-frontend/src/components/ServiceSearch.vue
index 69ebfda..34af1f6 100644
--- a/dubbo-admin-frontend/src/components/ServiceSearch.vue
+++ b/dubbo-admin-frontend/src/components/ServiceSearch.vue
@@ -242,7 +242,7 @@
if (version != null) {
query = query + '&version=' + version
}
- return '/#/serviceDetail?' + query
+ return '#/serviceDetail?' + query
},
governanceHref: function (type, service, group, version) {
let base = '/#/governance/' + type
diff --git a/dubbo-admin-frontend/src/components/governance/AccessControl.vue b/dubbo-admin-frontend/src/components/governance/AccessControl.vue
index bd6513e..f67fb62 100644
--- a/dubbo-admin-frontend/src/components/governance/AccessControl.vue
+++ b/dubbo-admin-frontend/src/components/governance/AccessControl.vue
@@ -87,8 +87,16 @@
class="mr-2"
color="blue"
slot="activator"
- @click="toEdit(props.item)">edit</v-icon>
- <span>Edit</span>
+ @click="toEdit(props.item, true)">view</v-icon>
+ <span>{{$t('view')}}</span>
+ </v-tooltip>
+ <v-tooltip bottom>
+ <v-icon small
+ class="mr-2"
+ color="blue"
+ slot="activator"
+ @click="toEdit(props.item, false)">edit</v-icon>
+ <span>{{$t('edit')}}</span>
</v-tooltip>
<v-tooltip bottom>
<v-icon small
@@ -96,7 +104,7 @@
slot="activator"
color="red"
@click="toDelete(props.item)">delete</v-icon>
- <span>Delete</span>
+ <span>{{$t('delete')}}</span>
</v-tooltip>
</td>
</template>
@@ -144,18 +152,37 @@
</v-card-title>
<v-card-text>
<v-form ref="modalForm">
- <v-text-field label="Service Unique ID"
- :hint="$t('dataIdHint')"
- :readonly="modal.id != null"
- v-model="modal.service" />
+ <v-text-field
+ label="Service Unique ID"
+ :hint="$t('dataIdHint')"
+ :readonly="modal.readonly"
+ v-model="modal.service"
+ ></v-text-field>
<v-text-field
:label="$t('appName')"
:hint="$t('appNameHint')"
- :readonly="modal.id != null"
+ :readonly="modal.readonly"
v-model="modal.application"
></v-text-field>
- <v-subheader class="pa-0 mt-3">BLACK/WHITE LIST CONTENT</v-subheader>
- <ace-editor v-model="modal.content" />
+ <v-layout row justify-space-between>
+ <v-flex >
+ <v-text-field
+ :readonly="modal.readonly"
+ :label="$t('whiteList')"
+ v-modal="modal.whiteList"
+ :hint="$t('whiteListHint')">
+ </v-text-field>
+ </v-flex>
+ <v-spacer></v-spacer>
+ <v-flex>
+ <v-text-field
+ :label="$t('blackList')"
+ :hint="$t('blackListHint')"
+ v-modal="modal.blackList"
+ :readonly="modal.id != null">
+ </v-text-field>
+ </v-flex>
+ </v-layout>
</v-form>
</v-card-text>
<v-card-actions>
@@ -191,7 +218,6 @@
</template>
<script>
-import yaml from 'js-yaml'
import AceEditor from '@/components/public/AceEditor'
import Search from '@/components/public/Search'
@@ -210,6 +236,7 @@
accesses: [],
modal: {
enable: false,
+ readonly: false,
title: 'Create New',
saveBtn: 'Create',
click: () => {},
@@ -217,6 +244,8 @@
service: null,
application: null,
content: '',
+ blackList: '',
+ whiteList: '',
template:
'blacklist:\n' +
' - 1.1.1.1\n' +
@@ -311,18 +340,20 @@
})
},
createItem () {
- let doc = yaml.load(this.modal.content)
+ // let doc = yaml.load(this.modal.content)
this.filter = ''
if (!this.modal.service && !this.modal.application) {
this.$notify.error('Either service or application is needed')
return
}
let vm = this
+ let blackList = this.modal.blackList.split(',')
+ let whiteList = this.modal.whiteList.split(',')
this.$axios.post('/rules/access', {
service: this.modal.service,
application: this.modal.application,
- whitelist: doc.whitelist,
- blacklist: doc.blacklist
+ whitelist: whiteList,
+ blacklist: blackList
}).then(response => {
if (response.status === 201) {
if (vm.modal.service) {
@@ -338,7 +369,7 @@
this.showSnackbar('success', 'Create success')
}).catch(error => this.showSnackbar('error', error.response.data.message))
},
- toEdit (item) {
+ toEdit (item, readonly) {
let itemId = null
if (this.selected === 0) {
itemId = item.service
@@ -350,21 +381,26 @@
}
Object.assign(this.modal, {
enable: true,
+ readonly: readonly,
title: 'Edit',
saveBtn: 'Update',
click: this.editItem,
id: itemId,
service: item.service,
application: item.application,
- content: yaml.safeDump({blacklist: item.blacklist, whitelist: item.whitelist})
+ whiteList: item.whitelist,
+ blackList: item.blacklist
+ // content: yaml.safeDump({blacklist: item.blacklist, whitelist: item.whitelist})
})
},
editItem () {
- let doc = yaml.load(this.modal.content)
+ // let doc = yaml.load(this.modal.content)
+ let blackList = this.modal.blackList.split(',')
+ let whiteList = this.modal.whiteList.split(',')
let vm = this
this.$axios.put('/rules/access/' + this.modal.id, {
- whitelist: doc.whitelist,
- blacklist: doc.blacklist,
+ whitelist: whiteList,
+ blacklist: blackList,
application: this.modal.application,
service: this.modal.service
diff --git a/dubbo-admin-frontend/src/components/governance/LoadBalance.vue b/dubbo-admin-frontend/src/components/governance/LoadBalance.vue
index 0424a88..6a1eb56 100644
--- a/dubbo-admin-frontend/src/components/governance/LoadBalance.vue
+++ b/dubbo-admin-frontend/src/components/governance/LoadBalance.vue
@@ -119,20 +119,39 @@
label="Service Unique ID"
:hint="$t('dataIdHint')"
v-model="service"
+ :readonly="readonly"
></v-text-field>
<v-text-field
:label="$t('appName')"
:hint="$t('appNameHint')"
v-model="application"
+ :readonly="readonly"
></v-text-field>
- <v-subheader class="pa-0 mt-3">RULE CONTENT</v-subheader>
- <ace-editor v-model="ruleText" :readonly="readonly"/>
+ <v-layout row justify-space-between>
+ <v-flex >
+ <v-text-field
+ :label="$t('method')"
+ :hint="$t('methodHint')"
+ v-model="rule.method"
+ :readonly="readonly"
+ ></v-text-field>
+ </v-flex>
+ <v-spacer></v-spacer>
+ <v-flex>
+ <v-select
+ :items="rule.strategyKey"
+ :label="$t('strategy')"
+ v-model="rule.strategy"
+ :readonly="readonly"
+ ></v-select>
+ </v-flex>
+ </v-layout>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
- <v-btn color="darken-1" flat @click.native="closeDialog">Close</v-btn>
- <v-btn color="primary darken-1" depressed @click.native="saveItem">Save</v-btn>
+ <v-btn color="darken-1" flat @click.native="closeDialog">{{$t('close')}}</v-btn>
+ <v-btn color="primary darken-1" depressed @click.native="saveItem">{{$t('save')}}</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
@@ -143,8 +162,8 @@
<v-card-text >{{this.warnText}}</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
- <v-btn color="darken-1" flat @click.native="closeWarn">CANCLE</v-btn>
- <v-btn color="primary darken-1" depressed @click.native="deleteItem(warnStatus.id)">CONFIRM</v-btn>
+ <v-btn color="darken-1" flat @click.native="closeWarn">{{$t('cancel')}}</v-btn>
+ <v-btn color="primary darken-1" depressed @click.native="deleteItem(warnStatus.id)">{{$t('confirm')}}</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
@@ -153,7 +172,6 @@
</template>
<script>
- import yaml from 'js-yaml'
import AceEditor from '@/components/public/AceEditor'
import Search from '@/components/public/Search'
export default {
@@ -189,6 +207,25 @@
template:
'methodName: * # * for all methods\n' +
'strategy: # leastactive, random, roundrobin',
+ rule: {
+ method: '',
+ strategy: '',
+ strategyKey: [
+ {
+ text: 'Least Active',
+ value: 'leastactive'
+ },
+ {
+ text: 'Random',
+ value: 'random'
+ },
+ {
+ text: 'Round Robin',
+ value: 'roundrobin'
+ }
+
+ ]
+ },
ruleText: '',
readonly: false,
serviceHeaders: [],
@@ -230,7 +267,7 @@
},
{
- text: this.$('operation'),
+ text: this.$t('operation'),
value: 'operation',
sortable: false,
width: '115px'
@@ -278,7 +315,8 @@
},
saveItem: function () {
this.ruleText = this.verifyRuleText(this.ruleText)
- let balancing = yaml.safeLoad(this.ruleText)
+ // let balancing = yaml.safeLoad(this.ruleText)
+ let balancing = {}
if (!this.service && !this.application) {
this.$notify.error('Either service or application is needed')
return
@@ -286,6 +324,8 @@
let vm = this
balancing.service = this.service
balancing.application = this.application
+ balancing.methodName = this.rule.method
+ balancing.strategy = this.rule.strategy
if (this.updateId) {
if (this.updateId === 'close') {
this.closeDialog()
@@ -363,10 +403,12 @@
handleBalance: function (balancing, readonly) {
this.service = balancing.service
this.application = balancing.application
- delete balancing.service
- delete balancing.application
- delete balancing.id
- this.ruleText = yaml.safeDump(balancing)
+ // delete balancing.service
+ // delete balancing.application
+ // delete balancing.id
+ // this.ruleText = yaml.safeDump(balancing)
+ this.rule.method = balancing.methodName
+ this.rule.strategy = balancing.strategy
this.readonly = readonly
this.dialog = true
},
diff --git a/dubbo-admin-frontend/src/components/governance/WeightAdjust.vue b/dubbo-admin-frontend/src/components/governance/WeightAdjust.vue
index b5332cc..60515cd 100644
--- a/dubbo-admin-frontend/src/components/governance/WeightAdjust.vue
+++ b/dubbo-admin-frontend/src/components/governance/WeightAdjust.vue
@@ -118,16 +118,33 @@
label="Service Unique ID"
:hint="$t('serviceIdHint')"
v-model="service"
+ :readonly="readonly"
></v-text-field>
<v-text-field
:label="$t('appName')"
:hint="$t('appNameHint')"
v-model="application"
+ :readonly="readonly"
></v-text-field>
- <v-subheader class="pa-0 mt-3">{{$t('ruleContent')}}</v-subheader>
-
- <ace-editor v-model="ruleText" :readonly="readonly"></ace-editor>
-
+ <v-layout row justify-space-between>
+ <v-flex >
+ <v-text-field
+ :label="$t('weight')"
+ :hint="$t('weightHint')"
+ v-model="rule.weight"
+ :readonly="readonly"
+ ></v-text-field>
+ </v-flex>
+ <v-spacer></v-spacer>
+ <v-flex>
+ <v-text-field
+ :label="$t('address')"
+ :hint="$t('weightAddressHint')"
+ v-model="rule.address"
+ :readonly="readonly"
+ ></v-text-field>
+ </v-flex>
+ </v-layout>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
@@ -154,7 +171,6 @@
<script>
import AceEditor from '@/components/public/AceEditor'
- import yaml from 'js-yaml'
import Search from '@/components/public/Search'
export default {
components: {
@@ -181,9 +197,9 @@
warnStatus: {},
height: 0,
operations: [
- {id: 0, icon: 'visibility', tooltip: 'View'},
- {id: 1, icon: 'edit', tooltip: 'Edit'},
- {id: 3, icon: 'delete', tooltip: 'Delete'}
+ {id: 0, icon: 'visibility', tooltip: 'view'},
+ {id: 1, icon: 'edit', tooltip: 'edit'},
+ {id: 3, icon: 'delete', tooltip: 'delete'}
],
weights: [
],
@@ -193,6 +209,10 @@
' - 192.168.0.1\n' +
' - 192.168.0.2',
ruleText: '',
+ rule: {
+ weight: 100,
+ address: ''
+ },
readonly: false,
serviceHeaders: [],
appHeaders: []
@@ -261,6 +281,8 @@
},
closeDialog: function () {
this.ruleText = this.template
+ this.rule.address = ''
+ this.rule.weight = 100
this.service = ''
this.dialog = false
this.readonly = false
@@ -280,13 +302,16 @@
this.warn = false
},
saveItem: function () {
- let weight = yaml.safeLoad(this.ruleText)
+ let weight = {}
+ // let weight = yaml.safeLoad(this.ruleText)
if (!this.service && !this.application) {
this.$notify.error('Either service or application is needed')
return
}
weight.service = this.service
weight.application = this.application
+ weight.weight = this.rule.weight
+ weight.addresses = this.rule.address.split(',')
let vm = this
if (this.updateId) {
if (this.updateId === 'close') {
@@ -365,9 +390,11 @@
handleWeight: function (weight, readonly) {
this.service = weight.service
this.application = weight.application
- delete weight.service
- delete weight.application
- this.ruleText = yaml.safeDump(weight)
+ // delete weight.service
+ // delete weight.application
+ // this.ruleText = yaml.safeDump(weight)
+ this.rule.weight = weight.weight
+ this.rule.address = weight.addresses.join(',')
this.readonly = readonly
this.dialog = true
},
diff --git a/dubbo-admin-frontend/src/lang/en.js b/dubbo-admin-frontend/src/lang/en.js
index 028a760..520e144 100644
--- a/dubbo-admin-frontend/src/lang/en.js
+++ b/dubbo-admin-frontend/src/lang/en.js
@@ -47,9 +47,9 @@
method: 'Method',
weight: 'Weight',
create: 'CREATE',
- save: 'Save',
+ save: 'SAVE',
cancel: 'CANCEL',
- close: 'Close',
+ close: 'CLOSE',
confirm: 'CONFIRM',
ruleContent: 'RULE CONTENT',
createNewRoutingRule: 'Create New Routing Rule',
@@ -79,5 +79,15 @@
parameterList: 'parameterList',
returnType: 'returnType',
here: 'here',
- configAddress: 'https://github.com/apache/incubator-dubbo-ops/wiki/Dubbo-Admin-configuration'
+ configAddress: 'https://github.com/apache/incubator-dubbo-ops/wiki/Dubbo-Admin-configuration',
+ whiteList: 'White List',
+ whiteListHint: 'White list IP address, divided by comma: 1.1.1.1,2.2.2.2',
+ blackList: 'Black List',
+ blackListHint: 'Black list IP address, divided by comma: 3.3.3.3,4.4.4.4',
+ address: 'Address',
+ weightAddressHint: 'IP addresses to set this weight, divided by comma: 1.1.1.1,2.2.2.2',
+ weightHint: 'weight value, default is 100',
+ methodHint: 'choose method of load balancing, * for all methods',
+ strategy: 'Strategy',
+ balanceStrategyHint: 'load balancing strategy'
}
diff --git a/dubbo-admin-frontend/src/lang/zh.js b/dubbo-admin-frontend/src/lang/zh.js
index b4acdeb..490afac 100644
--- a/dubbo-admin-frontend/src/lang/zh.js
+++ b/dubbo-admin-frontend/src/lang/zh.js
@@ -79,5 +79,15 @@
returnType: '返回值',
noMetadataHint: '无元数据信息,请升级至Dubbo2.7及以上版本,或者查看application.properties中关于config center的配置,详见',
here: '这里',
- configAddress: 'https://github.com/apache/incubator-dubbo-ops/wiki/Dubbo-Admin%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E'
+ configAddress: 'https://github.com/apache/incubator-dubbo-ops/wiki/Dubbo-Admin%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E',
+ whiteList: '白名单',
+ whiteListHint: '白名单IP列表, 多个地址用逗号分隔: 1.1.1.1,2.2.2.2',
+ blackList: '黑名单',
+ blackListHint: '黑名单IP列表, 多个地址用逗号分隔: 3.3.3.3,4.4.4.4',
+ address: '地址列表',
+ weightAddressHint: '此权重设置的IP地址,用逗号分隔: 1.1.1.1,2.2.2.2',
+ weightHint: '权重值,默认100',
+ methodHint: '负载均衡生效的方法,*代表所有方法',
+ strategy: '策略',
+ balanceStrategyHint: '负载均衡策略'
}