This is an automated email from the ASF dual-hosted git repository.
ranke pushed a commit to branch dev-change-ui2antd
in repository https://gitbox.apache.org/repos/asf/dubbo-admin.git
The following commit(s) were added to refs/heads/dev-change-ui2antd by this
push:
new c2058e7 Merge the latest code into the antd branch (#721)
c2058e7 is described below
commit c2058e71b9816ad7bfbd38d3bcf23e99a956bc96
Author: 邪影oO <[email protected]>
AuthorDate: Tue Mar 30 13:45:00 2021 +0800
Merge the latest code into the antd branch (#721)
* Fix and optimize some problems of conditional routing when using ZK to
make it work (#704)
* Fix and optimize some problems of conditional routing when using ZK to
make it work
* Fix UT problem
* fix #19 of api docs bug ,
https://github.com/apache/dubbo-spi-extensions/issues/19 (#707)
* nacos support auth (#709)
Co-authored-by: yanhao <[email protected]>
* Fix route rule some problem (#712)
* `BaseDTO` remove service
fix condition query problem
* remove condition service group
fix serviceGroup and serviceVersion null string
* fix test
* fix condition application query
* fix ci
* fix #714 (#719)
Co-authored-by: tangziran <823013778@qqcom>
* fix nacos dataId can't match dubbo (#717)
* Merge the latest code into the antd branch
Co-authored-by: haoyann <[email protected]>
Co-authored-by: yanhao <[email protected]>
Co-authored-by: tzr164 <[email protected]>
Co-authored-by: tangziran <823013778@qqcom>
---
.../dubbo/admin/common/util/ConvertUtil.java | 30 ++-
.../controller/ConditionRoutesController.java | 76 +++---
.../admin/model/dto/ConditionRouteResultDTO.java | 49 ++++
.../registry/config/impl/NacosConfiguration.java | 2 +-
.../apache/dubbo/admin/service/RouteService.java | 9 +-
.../dubbo/admin/service/impl/RouteServiceImpl.java | 25 +-
.../admin/controller/AccessesControllerTest.java | 3 +-
.../controller/ConditionRoutesControllerTest.java | 259 +++++++++++++++------
dubbo-admin-ui/src/components/apiDocs/ApiDocs.vue | 58 ++++-
.../src/components/governance/RoutingRule.vue | 43 ++--
10 files changed, 404 insertions(+), 150 deletions(-)
diff --git
a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/ConvertUtil.java
b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/ConvertUtil.java
index cc7a2b8..a592b82 100644
---
a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/ConvertUtil.java
+++
b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/ConvertUtil.java
@@ -54,13 +54,20 @@ public class ConvertUtil {
if (StringUtils.isNotEmpty(baseDTO.getApplication())) {
id = baseDTO.getApplication();
} else {
- // id format: "${class}:${version}:${group}"
- id = new
StringBuilder(baseDTO.getService()).append(COLON).append(null2EmptyString(baseDTO.getServiceVersion()))
-
.append(COLON).append(null2EmptyString(baseDTO.getServiceGroup())).toString();
+ id = baseDTO.getService();
}
return id;
}
+ public static String getIdFromDTO(BaseDTO baseDTO, String serviceVersion,
String serviceGroup) {
+ if (StringUtils.isNotEmpty(baseDTO.getApplication())) {
+ return baseDTO.getApplication();
+ }
+ // id format: "${class}:${version}:${group}"
+ return new
StringBuilder(baseDTO.getService()).append(COLON).append(null2EmptyString(serviceVersion))
+
.append(COLON).append(null2EmptyString(serviceGroup)).toString();
+ }
+
/**
* Detach interface class, version and group from id.
* @param id
@@ -74,17 +81,18 @@ public class ConvertUtil {
}
}
- public static String getServiceIdFromDTO(BaseDTO baseDTO, boolean
groupAsFolder) {
+ public static String getServiceIdFromDTO(BaseDTO baseDTO, String
serviceVersion, String serviceGroup,
+ boolean groupAsFolder) {
StringBuilder buf = new StringBuilder();
buf.append(baseDTO.getService());
- if (StringUtils.isNotEmpty(baseDTO.getServiceVersion())) {
- buf.append(COLON).append(baseDTO.getServiceVersion());
+ if (StringUtils.isNotEmpty(serviceVersion)) {
+ buf.append(COLON).append(serviceVersion);
}
- if (StringUtils.isNotEmpty(baseDTO.getServiceGroup())) {
+ if (StringUtils.isNotEmpty(serviceGroup)) {
if (groupAsFolder) {
- buf.insert(0, baseDTO.getServiceGroup() + "/");
+ buf.insert(0, serviceGroup + "/");
} else {
- buf.append(COLON).append(baseDTO.getServiceGroup());
+ buf.append(COLON).append(serviceGroup);
}
}
return buf.toString();
@@ -99,9 +107,9 @@ public class ConvertUtil {
public static String getScopeFromDTO(BaseDTO baseDTO) {
if (StringUtils.isNotEmpty(baseDTO.getApplication())) {
- return org.apache.dubbo.admin.common.util.Constants.APPLICATION;
+ return Constants.APPLICATION;
} else {
- return org.apache.dubbo.admin.common.util.Constants.SERVICE;
+ return Constants.SERVICE;
}
}
diff --git
a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ConditionRoutesController.java
b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ConditionRoutesController.java
index 6cbebe7..6a7a63b 100644
---
a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ConditionRoutesController.java
+++
b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ConditionRoutesController.java
@@ -24,7 +24,9 @@ import
org.apache.dubbo.admin.common.exception.ParamValidationException;
import org.apache.dubbo.admin.common.exception.ResourceNotFoundException;
import org.apache.dubbo.admin.common.exception.VersionValidationException;
import org.apache.dubbo.admin.common.util.Constants;
+import org.apache.dubbo.admin.common.util.ConvertUtil;
import org.apache.dubbo.admin.model.dto.ConditionRouteDTO;
+import org.apache.dubbo.admin.model.dto.ConditionRouteResultDTO;
import org.apache.dubbo.admin.service.ProviderService;
import org.apache.dubbo.admin.service.RouteService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -55,7 +57,9 @@ public class ConditionRoutesController {
@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
- public boolean createRule(@RequestBody ConditionRouteDTO routeDTO,
@PathVariable String env) {
+ public boolean createRule(@RequestBody ConditionRouteDTO routeDTO,
@PathVariable String env,
+ @RequestParam(required = false) String
serviceVersion,
+ @RequestParam(required = false) String
serviceGroup) {
String serviceName = routeDTO.getService();
String app = routeDTO.getApplication();
if (StringUtils.isEmpty(serviceName) && StringUtils.isEmpty(app)) {
@@ -64,8 +68,7 @@ public class ConditionRoutesController {
if (StringUtils.isNotEmpty(app) &&
providerService.findVersionInApplication(app).equals("2.6")) {
throw new VersionValidationException("dubbo 2.6 does not support
application scope routing rule");
}
-
- routeService.createConditionRoute(routeDTO);
+ routeService.createConditionRoute(routeDTO, serviceVersion,
serviceGroup);
return true;
}
@@ -75,33 +78,34 @@ public class ConditionRoutesController {
@RequestParam(required = false) String
serviceGroup) {
id = id.replace(Constants.ANY_VALUE, Constants.PATH_SEPARATOR);
ConditionRouteDTO crDTO = new ConditionRouteDTO();
+ String serviceName = newConditionRoute.getService();
+ if (StringUtils.isNotEmpty(serviceName)) {
+ id = ConvertUtil.getIdFromDTO(newConditionRoute, serviceVersion,
serviceGroup);
+ }
crDTO.setService(id);
- crDTO.setServiceVersion(serviceVersion);
- crDTO.setServiceGroup(serviceGroup);
ConditionRouteDTO oldConditionRoute =
routeService.findConditionRoute(crDTO);
if (oldConditionRoute == null) {
throw new ResourceNotFoundException("can not find route rule for:
" + id);
}
- routeService.updateConditionRoute(newConditionRoute);
+ routeService.updateConditionRoute(newConditionRoute, serviceVersion,
serviceGroup);
return true;
}
@RequestMapping(method = RequestMethod.GET)
- public List<ConditionRouteDTO> searchRoutes(@RequestParam(required =
false) String application,
- @RequestParam(required =
false) String service, @PathVariable String env,
- @RequestParam(required =
false) String serviceVersion,
- @RequestParam(required =
false) String serviceGroup) {
- ConditionRouteDTO conditionRoute;
- List<ConditionRouteDTO> result = new ArrayList<>();
+ public List<ConditionRouteResultDTO> searchRoutes(@RequestParam(required =
false) String application,
+ @RequestParam(required =
false) String service, @PathVariable String env,
+ @RequestParam(required =
false) String serviceVersion,
+ @RequestParam(required =
false) String serviceGroup) {
+ ConditionRouteResultDTO conditionRoute;
+ List<ConditionRouteResultDTO> result = new ArrayList<>();
ConditionRouteDTO crDTO = new ConditionRouteDTO();
if (StringUtils.isNotBlank(application)) {
crDTO.setService(application);
conditionRoute = routeService.findConditionRoute(crDTO);
} else if (StringUtils.isNotBlank(service)) {
crDTO.setService(service);
- crDTO.setServiceVersion(serviceVersion);
- crDTO.setServiceGroup(serviceGroup);
- conditionRoute = routeService.findConditionRoute(crDTO);
+ String id = ConvertUtil.getIdFromDTO(crDTO, serviceVersion,
serviceGroup);
+ conditionRoute = routeService.findConditionRoute(id);
} else {
throw new ParamValidationException("Either Service or application
is required.");
}
@@ -112,15 +116,18 @@ public class ConditionRoutesController {
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
- public ConditionRouteDTO detailRoute(@PathVariable String id,
@PathVariable String env,
- @RequestParam(required = false)
String serviceVersion,
- @RequestParam(required = false)
String serviceGroup) {
+ public ConditionRouteResultDTO detailRoute(@PathVariable String id,
@PathVariable String env,
+ @RequestParam(required = false)
String serviceVersion,
+ @RequestParam(required = false)
String serviceGroup,
+ @RequestParam String scope) {
id = id.replace(Constants.ANY_VALUE, Constants.PATH_SEPARATOR);
ConditionRouteDTO crDTO = new ConditionRouteDTO();
crDTO.setService(id);
- crDTO.setServiceVersion(serviceVersion);
- crDTO.setServiceGroup(serviceGroup);
- ConditionRouteDTO conditionRoute =
routeService.findConditionRoute(crDTO);
+ if (Constants.SERVICE.equals(scope)) {
+ id = ConvertUtil.getIdFromDTO(crDTO, serviceVersion, serviceGroup);
+ crDTO.setService(id);
+ }
+ ConditionRouteResultDTO conditionRoute =
routeService.findConditionRoute(crDTO);
if (conditionRoute == null || conditionRoute.getConditions() == null) {
throw new ResourceNotFoundException("Unknown ID!");
}
@@ -130,12 +137,15 @@ public class ConditionRoutesController {
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
public boolean deleteRoute(@PathVariable String id, @PathVariable String
env,
@RequestParam(required = false) String
serviceVersion,
- @RequestParam(required = false) String
serviceGroup) {
+ @RequestParam(required = false) String
serviceGroup,
+ @RequestParam String scope) {
id = id.replace(Constants.ANY_VALUE, Constants.PATH_SEPARATOR);
ConditionRouteDTO crDTO = new ConditionRouteDTO();
crDTO.setService(id);
- crDTO.setServiceVersion(serviceVersion);
- crDTO.setServiceGroup(serviceGroup);
+ if (Constants.SERVICE.equals(scope)) {
+ id = ConvertUtil.getIdFromDTO(crDTO, serviceVersion, serviceGroup);
+ crDTO.setService(id);
+ }
routeService.deleteConditionRoute(crDTO);
return true;
}
@@ -143,12 +153,15 @@ public class ConditionRoutesController {
@RequestMapping(value = "/enable/{id}", method = RequestMethod.PUT)
public boolean enableRoute(@PathVariable String id, @PathVariable String
env,
@RequestParam(required = false) String
serviceVersion,
- @RequestParam(required = false) String
serviceGroup) {
+ @RequestParam(required = false) String
serviceGroup,
+ @RequestParam String scope) {
id = id.replace(Constants.ANY_VALUE, Constants.PATH_SEPARATOR);
ConditionRouteDTO crDTO = new ConditionRouteDTO();
crDTO.setService(id);
- crDTO.setServiceVersion(serviceVersion);
- crDTO.setServiceGroup(serviceGroup);
+ if (Constants.SERVICE.equals(scope)) {
+ id = ConvertUtil.getIdFromDTO(crDTO, serviceVersion, serviceGroup);
+ crDTO.setService(id);
+ }
routeService.enableConditionRoute(crDTO);
return true;
}
@@ -156,12 +169,15 @@ public class ConditionRoutesController {
@RequestMapping(value = "/disable/{id}", method = RequestMethod.PUT)
public boolean disableRoute(@PathVariable String id, @PathVariable String
env,
@RequestParam(required = false) String
serviceVersion,
- @RequestParam(required = false) String
serviceGroup) {
+ @RequestParam(required = false) String
serviceGroup,
+ @RequestParam String scope) {
id = id.replace(Constants.ANY_VALUE, Constants.PATH_SEPARATOR);
ConditionRouteDTO crDTO = new ConditionRouteDTO();
crDTO.setService(id);
- crDTO.setServiceVersion(serviceVersion);
- crDTO.setServiceGroup(serviceGroup);
+ if (Constants.SERVICE.equals(scope)) {
+ id = ConvertUtil.getIdFromDTO(crDTO, serviceVersion, serviceGroup);
+ crDTO.setService(id);
+ }
routeService.disableConditionRoute(crDTO);
return true;
}
diff --git
a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/model/dto/ConditionRouteResultDTO.java
b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/model/dto/ConditionRouteResultDTO.java
new file mode 100644
index 0000000..2f9d247
--- /dev/null
+++
b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/model/dto/ConditionRouteResultDTO.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.dubbo.admin.model.dto;
+
+
+public class ConditionRouteResultDTO extends ConditionRouteDTO {
+ private String serviceVersion;
+ private String serviceGroup;
+ private String scope;
+
+ public String getServiceVersion() {
+ return serviceVersion;
+ }
+
+ public void setServiceVersion(String serviceVersion) {
+ this.serviceVersion = serviceVersion;
+ }
+
+ public String getServiceGroup() {
+ return serviceGroup;
+ }
+
+ public void setServiceGroup(String serviceGroup) {
+ this.serviceGroup = serviceGroup;
+ }
+
+ public String getScope() {
+ return scope;
+ }
+
+ public void setScope(String scope) {
+ this.scope = scope;
+ }
+}
diff --git
a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/config/impl/NacosConfiguration.java
b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/config/impl/NacosConfiguration.java
index 72fae60..f5d0c7b 100644
---
a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/config/impl/NacosConfiguration.java
+++
b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/config/impl/NacosConfiguration.java
@@ -192,7 +192,7 @@ public class NacosConfiguration implements
GovernanceConfiguration {
groupAndDataId[1] = split[2];
} else {
groupAndDataId[0] = group;
- groupAndDataId[1] = split[1] + Constants.PUNCTUATION_POINT +
split[2];
+ groupAndDataId[1] = split[2];
}
return groupAndDataId;
}
diff --git
a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/RouteService.java
b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/RouteService.java
index b63c175..ef42f25 100644
---
a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/RouteService.java
+++
b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/RouteService.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.admin.service;
import org.apache.dubbo.admin.model.dto.AccessDTO;
import org.apache.dubbo.admin.model.dto.ConditionRouteDTO;
+import org.apache.dubbo.admin.model.dto.ConditionRouteResultDTO;
import org.apache.dubbo.admin.model.dto.TagRouteDTO;
/**
@@ -26,9 +27,9 @@ import org.apache.dubbo.admin.model.dto.TagRouteDTO;
*/
public interface RouteService {
- void createConditionRoute(ConditionRouteDTO conditionRoute);
+ void createConditionRoute(ConditionRouteDTO conditionRoute, String
serviceVersion, String serviceGroup);
- void updateConditionRoute(ConditionRouteDTO newConditionRoute);
+ void updateConditionRoute(ConditionRouteDTO newConditionRoute, String
serviceVersion, String serviceGroup);
void deleteConditionRoute(ConditionRouteDTO conditionRoute);
@@ -46,9 +47,9 @@ public interface RouteService {
void disableConditionRoute(ConditionRouteDTO conditionRoute);
- ConditionRouteDTO findConditionRoute(ConditionRouteDTO crDTO);
+ ConditionRouteResultDTO findConditionRoute(ConditionRouteDTO crDTO);
- ConditionRouteDTO findConditionRoute(String id);
+ ConditionRouteResultDTO findConditionRoute(String id);
void createTagRoute(TagRouteDTO tagRoute);
diff --git
a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
index fe0f085..a365eef 100644
---
a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
+++
b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
@@ -24,12 +24,14 @@ 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.ConditionRouteResultDTO;
import org.apache.dubbo.admin.model.dto.TagRouteDTO;
import org.apache.dubbo.admin.model.store.RoutingRule;
import org.apache.dubbo.admin.model.store.TagRoute;
import org.apache.dubbo.admin.service.RouteService;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.utils.StringUtils;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import java.util.LinkedList;
@@ -41,8 +43,8 @@ public class RouteServiceImpl extends AbstractService
implements RouteService {
private String prefix = Constants.CONFIG_KEY;
@Override
- public void createConditionRoute(ConditionRouteDTO conditionRoute) {
- String id = ConvertUtil.getIdFromDTO(conditionRoute);
+ public void createConditionRoute(ConditionRouteDTO conditionRoute, String
serviceVersion, String serviceGroup) {
+ String id = ConvertUtil.getIdFromDTO(conditionRoute, serviceVersion,
serviceGroup);
String path = getPath(id, Constants.CONDITION_ROUTE);
String existConfig = dynamicConfiguration.getConfig(path);
RoutingRule existRule = null;
@@ -63,8 +65,8 @@ public class RouteServiceImpl extends AbstractService
implements RouteService {
}
@Override
- public void updateConditionRoute(ConditionRouteDTO newConditionRoute) {
- String id = ConvertUtil.getIdFromDTO(newConditionRoute);
+ public void updateConditionRoute(ConditionRouteDTO newConditionRoute,
String serviceVersion, String serviceGroup) {
+ String id = ConvertUtil.getIdFromDTO(newConditionRoute,
serviceVersion, serviceGroup);
String path = getPath(id, Constants.CONDITION_ROUTE);
String existConfig = dynamicConfiguration.getConfig(path);
if (existConfig == null) {
@@ -261,12 +263,12 @@ public class RouteServiceImpl extends AbstractService
implements RouteService {
}
@Override
- public ConditionRouteDTO findConditionRoute(ConditionRouteDTO crDTO) {
+ public ConditionRouteResultDTO findConditionRoute(ConditionRouteDTO crDTO)
{
return findConditionRoute(ConvertUtil.getIdFromDTO(crDTO));
}
@Override
- public ConditionRouteDTO findConditionRoute(String id) {
+ public ConditionRouteResultDTO findConditionRoute(String id) {
String path = getPath(id, Constants.CONDITION_ROUTE);
String config = dynamicConfiguration.getConfig(path);
if (config != null) {
@@ -276,12 +278,17 @@ public class RouteServiceImpl extends AbstractService
implements RouteService {
if (org.apache.commons.lang3.StringUtils.isNotBlank(service)) {
conditionRouteDTO.setService(service.replace("*", "/"));
}
+ ConditionRouteResultDTO result = new ConditionRouteResultDTO();
+ BeanUtils.copyProperties(conditionRouteDTO, result);
+ result.setScope(routingRule.getScope());
String[] detachResult = ConvertUtil.detachId(id);
if (detachResult.length > 1) {
- conditionRouteDTO.setServiceVersion(detachResult[1]);
- conditionRouteDTO.setServiceGroup(detachResult[2]);
+ result.setServiceVersion(detachResult[1]);
+ }
+ if (detachResult.length > 2) {
+ result.setServiceGroup(detachResult[2]);
}
- return conditionRouteDTO;
+ return result;
}
return null;
}
diff --git
a/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/AccessesControllerTest.java
b/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/AccessesControllerTest.java
index e087898..aaf6c73 100644
---
a/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/AccessesControllerTest.java
+++
b/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/AccessesControllerTest.java
@@ -22,6 +22,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.dubbo.admin.AbstractSpringIntegrationTest;
import org.apache.dubbo.admin.model.dto.AccessDTO;
import org.apache.dubbo.admin.model.dto.ConditionRouteDTO;
+import org.apache.dubbo.admin.model.dto.ConditionRouteResultDTO;
import org.apache.dubbo.admin.service.ProviderService;
import org.apache.dubbo.admin.service.RouteService;
import org.junit.After;
@@ -130,7 +131,7 @@ public class AccessesControllerTest extends
AbstractSpringIntegrationTest {
restTemplate.put(url("/api/{env}/rules/access/{id}"), accessDTO, env,
id);
verify(routeService).findConditionRoute(id);
//
- ConditionRouteDTO conditionRouteDTO = mock(ConditionRouteDTO.class);
+ ConditionRouteResultDTO conditionRouteDTO =
mock(ConditionRouteResultDTO.class);
when(routeService.findConditionRoute(id)).thenReturn(conditionRouteDTO);
restTemplate.put(url("/api/{env}/rules/access/{id}"), accessDTO, env,
id);
verify(routeService).updateAccess(any(AccessDTO.class));
diff --git
a/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/ConditionRoutesControllerTest.java
b/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/ConditionRoutesControllerTest.java
index 4a879cf..92c24ac 100644
---
a/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/ConditionRoutesControllerTest.java
+++
b/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/ConditionRoutesControllerTest.java
@@ -67,7 +67,7 @@ public class ConditionRoutesControllerTest extends
AbstractSpringIntegrationTest
ConditionRouteDTO dto = new ConditionRouteDTO();
ResponseEntity<String> responseEntity = restTemplate.postForEntity(
- url("/api/{env}/rules/route/condition"), dto, String.class, env
+ url("/api/{env}/rules/route/condition"), dto, String.class, env
);
assertThat(responseEntity.getStatusCode(), is(HttpStatus.BAD_REQUEST));
assertThat(responseEntity.getBody(), containsString("serviceName and app
is Empty!"));
@@ -75,7 +75,7 @@ public class ConditionRoutesControllerTest extends
AbstractSpringIntegrationTest
dto.setApplication("application" + uuid);
when(providerService.findVersionInApplication(dto.getApplication())).thenReturn("2.6");
responseEntity = restTemplate.postForEntity(
- url("/api/{env}/rules/route/condition"), dto, String.class, env
+ url("/api/{env}/rules/route/condition"), dto, String.class, env
);
assertThat(responseEntity.getStatusCode(),
is(HttpStatus.INTERNAL_SERVER_ERROR));
assertThat(responseEntity.getBody(), containsString("dubbo 2.6 does not
support application scope routing rule"));
@@ -86,6 +86,8 @@ public class ConditionRoutesControllerTest extends
AbstractSpringIntegrationTest
String uuid = UUID.randomUUID().toString();
String application = "application" + uuid;
String service = "service" + uuid;
+ String serviceVersion = "version" + uuid;
+ String serviceGroup = "group" + uuid;
List<String> conditions = Collections.singletonList("=> host !=
172.22.3.91");
ConditionRouteDTO dto = new ConditionRouteDTO();
@@ -93,7 +95,7 @@ public class ConditionRoutesControllerTest extends
AbstractSpringIntegrationTest
dto.setConditions(conditions);
ResponseEntity<String> responseEntity = restTemplate.postForEntity(
- url("/api/{env}/rules/route/condition"), dto, String.class, env
+ url("/api/{env}/rules/route/condition" + "?serviceVersion=" +
serviceVersion + "&serviceGroup=" + serviceGroup), dto, String.class, env
);
assertThat(responseEntity.getStatusCode(), is(HttpStatus.CREATED));
@@ -101,7 +103,7 @@ public class ConditionRoutesControllerTest extends
AbstractSpringIntegrationTest
when(providerService.findVersionInApplication(dto.getApplication())).thenReturn("2.7");
responseEntity = restTemplate.postForEntity(
- url("/api/{env}/rules/route/condition"), dto, String.class, env
+ url("/api/{env}/rules/route/condition"), dto, String.class, env
);
assertThat(responseEntity.getStatusCode(), is(HttpStatus.CREATED));
}
@@ -110,14 +112,14 @@ public class ConditionRoutesControllerTest extends
AbstractSpringIntegrationTest
public void shouldUpdateRule() throws Exception {
String service = "org.apache.dubbo.demo.DemoService";
String content = "conditions:\n"
- + "- => host != 172.22.3.111\n"
- + "- => host != 172.22.3.112\n"
- + "enabled: true\n"
- + "force: true\n"
- + "key: " + service + "\n"
- + "priority: 0\n"
- + "runtime: false\n"
- + "scope: service";
+ + "- => host != 172.22.3.111\n"
+ + "- => host != 172.22.3.112\n"
+ + "enabled: true\n"
+ + "force: true\n"
+ + "key: " + service + "\n"
+ + "priority: 0\n"
+ + "runtime: false\n"
+ + "scope: service";
String path = "/dubbo/config/dubbo/" + service + "::.condition-router";
zkClient.create().creatingParentContainersIfNeeded().forPath(path);
zkClient.setData().forPath(path, content.getBytes());
@@ -129,8 +131,8 @@ public class ConditionRoutesControllerTest extends
AbstractSpringIntegrationTest
dto.setService(service);
ResponseEntity<String> responseEntity = restTemplate.exchange(
- url("/api/{env}/rules/route/condition/{service}"), HttpMethod.PUT,
- new HttpEntity<>(dto, null), String.class, env, service
+ url("/api/{env}/rules/route/condition/{service}"), HttpMethod.PUT,
+ new HttpEntity<>(dto, null), String.class, env, service
);
assertThat(responseEntity.getStatusCode(), is(HttpStatus.OK));
@@ -144,54 +146,81 @@ public class ConditionRoutesControllerTest extends
AbstractSpringIntegrationTest
public void shouldGetServiceRule() throws Exception {
String service = "org.apache.dubbo.demo.DemoService";
String content = "conditions:\n"
- + "- => host != 172.22.3.111\n"
- + "- => host != 172.22.3.112\n"
- + "enabled: true\n"
- + "force: true\n"
- + "key: " + service + "\n"
- + "priority: 0\n"
- + "runtime: false\n"
- + "scope: service";
+ + "- => host != 172.22.3.111\n"
+ + "- => host != 172.22.3.112\n"
+ + "enabled: true\n"
+ + "force: true\n"
+ + "key: " + service + "\n"
+ + "priority: 0\n"
+ + "runtime: false\n"
+ + "scope: service";
String path = "/dubbo/config/dubbo/" + service + "::.condition-router";
zkClient.create().creatingParentContainersIfNeeded().forPath(path);
zkClient.setData().forPath(path, content.getBytes());
ResponseEntity<List<ConditionRouteDTO>> responseEntity =
restTemplate.exchange(
- url("/api/{env}/rules/route/condition/?service={service}"),
HttpMethod.GET,
- null, new ParameterizedTypeReference<List<ConditionRouteDTO>>() {
- }, env, service
+ url("/api/{env}/rules/route/condition/?service={service}"),
HttpMethod.GET,
+ null, new ParameterizedTypeReference<List<ConditionRouteDTO>>() {
+ }, env, service
);
assertThat(responseEntity.getStatusCode(), is(HttpStatus.OK));
assertThat(responseEntity.getBody(), hasSize(1));
List<String> conditions = responseEntity.getBody()
- .stream()
- .flatMap(it -> it.getConditions().stream())
- .collect(Collectors.toList());
+ .stream()
+ .flatMap(it -> it.getConditions().stream())
+ .collect(Collectors.toList());
assertThat(conditions, hasSize(2));
assertThat(conditions, containsInAnyOrder("=> host != 172.22.3.111", "=>
host != 172.22.3.112"));
}
@Test
- public void shouldDeleteRule() throws Exception {
+ public void serviceShouldDeleteRule() throws Exception {
String service = "org.apache.dubbo.demo.DemoService";
- String content = "conditions:\n"
- + "- => host != 172.22.3.111\n"
- + "- => host != 172.22.3.112\n"
- + "enabled: true\n"
- + "force: true\n"
- + "key: " + service + "\n"
- + "priority: 0\n"
- + "runtime: false\n"
- + "scope: service";
+ String serviceContent = "conditions:\n"
+ + "- => host != 172.22.3.111\n"
+ + "- => host != 172.22.3.112\n"
+ + "enabled: true\n"
+ + "force: true\n"
+ + "key: " + service + "\n"
+ + "priority: 0\n"
+ + "runtime: false\n"
+ + "scope: service";
String path = "/dubbo/config/dubbo/" + service + "::.condition-router";
zkClient.create().creatingParentContainersIfNeeded().forPath(path);
- zkClient.setData().forPath(path, content.getBytes());
+ zkClient.setData().forPath(path, serviceContent.getBytes());
+
+ assertNotNull("zk path should not be null before deleting",
zkClient.checkExists().forPath(path));
+
+ ResponseEntity<String> responseEntity = restTemplate.exchange(
+ url("/api/{env}/rules/route/condition/{service}" +
"?scope=service"), HttpMethod.DELETE,
+ null, String.class, env, service
+ );
+ assertThat(responseEntity.getStatusCode(), is(HttpStatus.OK));
+
+ assertNull(zkClient.checkExists().forPath(path));
+ }
+
+ @Test
+ public void applicationShouldDeleteRule() throws Exception {
+ String application = "test-application";
+ String serviceContent = "conditions:\n"
+ + "- => host != 172.22.3.111\n"
+ + "- => host != 172.22.3.112\n"
+ + "enabled: true\n"
+ + "force: true\n"
+ + "key: " + application + "\n"
+ + "priority: 0\n"
+ + "runtime: false\n"
+ + "scope: application";
+ String path = "/dubbo/config/dubbo/" + application + ".condition-router";
+ zkClient.create().creatingParentContainersIfNeeded().forPath(path);
+ zkClient.setData().forPath(path, serviceContent.getBytes());
assertNotNull("zk path should not be null before deleting",
zkClient.checkExists().forPath(path));
ResponseEntity<String> responseEntity = restTemplate.exchange(
- url("/api/{env}/rules/route/condition/{service}"), HttpMethod.DELETE,
- null, String.class, env, service
+ url("/api/{env}/rules/route/condition/{service}" +
"?scope=application"), HttpMethod.DELETE,
+ null, String.class, env, application
);
assertThat(responseEntity.getStatusCode(), is(HttpStatus.OK));
@@ -201,29 +230,56 @@ public class ConditionRoutesControllerTest extends
AbstractSpringIntegrationTest
@Test
public void shouldThrowWhenDetailRouteWithUnknownId() {
ResponseEntity<String> responseEntity = restTemplate.getForEntity(
- url("/api/{env}/rules/route/condition/{id}"), String.class, env,
"non-existed-service"
+ url("/api/{env}/rules/route/condition/{id}" + "?scope=service"),
String.class, env, "non-existed-service"
);
assertThat(responseEntity.getStatusCode(), is(HttpStatus.NOT_FOUND));
}
@Test
- public void shouldGetRouteDetail() throws Exception {
+ public void serviceShouldGetRouteDetail() throws Exception {
String service = "org.apache.dubbo.demo.DemoService";
String content = "conditions:\n"
- + "- => host != 172.22.3.111\n"
- + "- => host != 172.22.3.112\n"
- + "enabled: true\n"
- + "force: true\n"
- + "key: " + service + "\n"
- + "priority: 0\n"
- + "runtime: false\n"
- + "scope: service";
+ + "- => host != 172.22.3.111\n"
+ + "- => host != 172.22.3.112\n"
+ + "enabled: true\n"
+ + "force: true\n"
+ + "key: " + service + "\n"
+ + "priority: 0\n"
+ + "runtime: false\n"
+ + "scope: service";
String path = "/dubbo/config/dubbo/" + service + "::.condition-router";
zkClient.create().creatingParentContainersIfNeeded().forPath(path);
zkClient.setData().forPath(path, content.getBytes());
ResponseEntity<ConditionRouteDTO> responseEntity =
restTemplate.getForEntity(
- url("/api/{env}/rules/route/condition/{id}"), ConditionRouteDTO.class,
env, service
+ url("/api/{env}/rules/route/condition/{id}" + "?scope=service"),
ConditionRouteDTO.class, env, service
+ );
+ assertThat(responseEntity.getStatusCode(), is(HttpStatus.OK));
+
+ ConditionRouteDTO conditionRouteDTO = responseEntity.getBody();
+ assertNotNull(conditionRouteDTO);
+ assertThat(conditionRouteDTO.getConditions(), hasSize(2));
+ assertThat(conditionRouteDTO.getConditions(), containsInAnyOrder("=> host
!= 172.22.3.111", "=> host != 172.22.3.112"));
+ }
+
+ @Test
+ public void applicationShouldGetRouteDetail() throws Exception {
+ String application = "test-application";
+ String content = "conditions:\n"
+ + "- => host != 172.22.3.111\n"
+ + "- => host != 172.22.3.112\n"
+ + "enabled: true\n"
+ + "force: true\n"
+ + "key: " + application + "\n"
+ + "priority: 0\n"
+ + "runtime: false\n"
+ + "scope: application";
+ String path = "/dubbo/config/dubbo/" + application + ".condition-router";
+ zkClient.create().creatingParentContainersIfNeeded().forPath(path);
+ zkClient.setData().forPath(path, content.getBytes());
+
+ ResponseEntity<ConditionRouteDTO> responseEntity =
restTemplate.getForEntity(
+ url("/api/{env}/rules/route/condition/{id}" +
"?scope=application"), ConditionRouteDTO.class, env, application
);
assertThat(responseEntity.getStatusCode(), is(HttpStatus.OK));
@@ -234,17 +290,17 @@ public class ConditionRoutesControllerTest extends
AbstractSpringIntegrationTest
}
@Test
- public void shouldEnableRoute() throws Exception {
+ public void serviceShouldEnableRoute() throws Exception {
String service = "org.apache.dubbo.demo.DemoService";
String content = "conditions:\n"
- + "- => host != 172.22.3.111\n"
- + "- => host != 172.22.3.112\n"
- + "enabled: false\n"
- + "force: true\n"
- + "key: " + service + "\n"
- + "priority: 0\n"
- + "runtime: false\n"
- + "scope: service";
+ + "- => host != 172.22.3.111\n"
+ + "- => host != 172.22.3.112\n"
+ + "enabled: false\n"
+ + "force: true\n"
+ + "key: " + service + "\n"
+ + "priority: 0\n"
+ + "runtime: false\n"
+ + "scope: service";
String path = "/dubbo/config/dubbo/" + service + "::.condition-router";
zkClient.create().creatingParentContainersIfNeeded().forPath(path);
zkClient.setData().forPath(path, content.getBytes());
@@ -254,7 +310,36 @@ public class ConditionRoutesControllerTest extends
AbstractSpringIntegrationTest
RoutingRule rule = YamlParser.loadObject(updatedConfig, RoutingRule.class);
assertFalse(rule.isEnabled());
- restTemplate.put(url("/api/{env}/rules/route/condition/enable/{id}"),
null, env, service);
+ restTemplate.put(url("/api/{env}/rules/route/condition/enable/{id}" +
"?scope=service"), null, env, service);
+
+ bytes = zkClient.getData().forPath(path);
+ updatedConfig = new String(bytes);
+ rule = YamlParser.loadObject(updatedConfig, RoutingRule.class);
+ assertTrue(rule.isEnabled());
+ }
+
+ @Test
+ public void applicationShouldEnableRoute() throws Exception {
+ String application = "test-application";
+ String content = "conditions:\n"
+ + "- => host != 172.22.3.111\n"
+ + "- => host != 172.22.3.112\n"
+ + "enabled: false\n"
+ + "force: true\n"
+ + "key: " + application + "\n"
+ + "priority: 0\n"
+ + "runtime: false\n"
+ + "scope: service";
+ String path = "/dubbo/config/dubbo/" + application + ".condition-router";
+ zkClient.create().creatingParentContainersIfNeeded().forPath(path);
+ zkClient.setData().forPath(path, content.getBytes());
+
+ byte[] bytes = zkClient.getData().forPath(path);
+ String updatedConfig = new String(bytes);
+ RoutingRule rule = YamlParser.loadObject(updatedConfig, RoutingRule.class);
+ assertFalse(rule.isEnabled());
+
+ restTemplate.put(url("/api/{env}/rules/route/condition/enable/{id}" +
"?scope=application"), null, env, application);
bytes = zkClient.getData().forPath(path);
updatedConfig = new String(bytes);
@@ -263,17 +348,17 @@ public class ConditionRoutesControllerTest extends
AbstractSpringIntegrationTest
}
@Test
- public void shouldDisableRoute() throws Exception {
+ public void serviceShouldDisableRoute() throws Exception {
String service = "org.apache.dubbo.demo.DemoService";
String content = "conditions:\n"
- + "- => host != 172.22.3.111\n"
- + "- => host != 172.22.3.112\n"
- + "enabled: true\n"
- + "force: false\n"
- + "key: " + service + "\n"
- + "priority: 0\n"
- + "runtime: false\n"
- + "scope: service";
+ + "- => host != 172.22.3.111\n"
+ + "- => host != 172.22.3.112\n"
+ + "enabled: true\n"
+ + "force: false\n"
+ + "key: " + service + "\n"
+ + "priority: 0\n"
+ + "runtime: false\n"
+ + "scope: service";
String path = "/dubbo/config/dubbo/" + service + "::.condition-router";
zkClient.create().creatingParentContainersIfNeeded().forPath(path);
zkClient.setData().forPath(path, content.getBytes());
@@ -283,11 +368,41 @@ public class ConditionRoutesControllerTest extends
AbstractSpringIntegrationTest
RoutingRule rule = YamlParser.loadObject(updatedConfig, RoutingRule.class);
assertTrue(rule.isEnabled());
- restTemplate.put(url("/api/{env}/rules/route/condition/disable/{id}"),
null, env, service);
+ restTemplate.put(url("/api/{env}/rules/route/condition/disable/{id}" +
"?scope=service"), null, env, service);
+
+ bytes = zkClient.getData().forPath(path);
+ updatedConfig = new String(bytes);
+ rule = YamlParser.loadObject(updatedConfig, RoutingRule.class);
+ assertFalse(rule.isEnabled());
+ }
+
+ @Test
+ public void applicationShouldDisableRoute() throws Exception {
+ String application = "test-application";
+ String content = "conditions:\n"
+ + "- => host != 172.22.3.111\n"
+ + "- => host != 172.22.3.112\n"
+ + "enabled: true\n"
+ + "force: false\n"
+ + "key: " + application + "\n"
+ + "priority: 0\n"
+ + "runtime: false\n"
+ + "scope: application";
+ String path = "/dubbo/config/dubbo/" + application + ".condition-router";
+ zkClient.create().creatingParentContainersIfNeeded().forPath(path);
+ zkClient.setData().forPath(path, content.getBytes());
+
+ byte[] bytes = zkClient.getData().forPath(path);
+ String updatedConfig = new String(bytes);
+ RoutingRule rule = YamlParser.loadObject(updatedConfig, RoutingRule.class);
+ assertTrue(rule.isEnabled());
+
+ restTemplate.put(url("/api/{env}/rules/route/condition/disable/{id}" +
"?scope=application"), null, env, application);
bytes = zkClient.getData().forPath(path);
updatedConfig = new String(bytes);
rule = YamlParser.loadObject(updatedConfig, RoutingRule.class);
assertFalse(rule.isEnabled());
}
+
}
diff --git a/dubbo-admin-ui/src/components/apiDocs/ApiDocs.vue
b/dubbo-admin-ui/src/components/apiDocs/ApiDocs.vue
index 1499be9..2ea8fac 100644
--- a/dubbo-admin-ui/src/components/apiDocs/ApiDocs.vue
+++ b/dubbo-admin-ui/src/components/apiDocs/ApiDocs.vue
@@ -15,7 +15,7 @@
- limitations under the License.
-->
<template>
- <v-container grid-list-xl fluid>
+ <v-container grid-list-xl fluid v-scroll:#scroll-target="onScroll">
<v-layout row wrap>
<v-flex lg12>
<breadcrumb title="apiDocs" :items="breads"></breadcrumb>
@@ -50,7 +50,7 @@
</v-layout>
<v-layout row wrap>
- <v-flex lg3>
+ <v-flex lg3
:class="{'sticky_top':isApiListDivFixed,'menu_panel_class':isBigScreen}" >
<v-card id="apiListDiv"
class="mx-auto"
>
@@ -59,7 +59,7 @@
<v-toolbar-title>{{ $t('apiDocsRes.apiListText') }}</v-toolbar-title>
<v-spacer></v-spacer>
</v-toolbar>
- <v-list>
+ <v-list :class="isBigScreen?'menu_panel_content':''">
<v-list-group
v-for="item in apiModules"
:key="item.title"
@@ -87,8 +87,8 @@
</v-list>
</v-card>
</v-flex>
- <v-flex lg9>
- <v-card id="apiFormDiv">
+ <v-flex lg9 :class="isBigScreen?'apidocs_content':''">
+ <v-card id="apiFormDiv" ref="apiFormDiv">
<apiForm :formInfo="formInfo" />
</v-card>
</v-flex>
@@ -105,6 +105,21 @@ export default {
Breadcrumb,
ApiForm
},
+ computed:{
+ isBigScreen:function(){
+ const _this = this;
+ var isBigScreen = false;
+ if(_this.$vuetify.breakpoint){
+ isBigScreen = _this.$vuetify.breakpoint.md ||
_this.$vuetify.breakpoint.lg || _this.$vuetify.breakpoint.xl;
+ }
+
+ return isBigScreen;
+ }
+ },
+ created(){
+ const _this = this;
+ console.debug(_this.$vuetify.breakpoint.md);
+ },
data: () => ({
breads: [
{
@@ -196,17 +211,48 @@ export default {
document.getElementById('apiListDiv').classList.remove('apiListDiv-fixed')
document.getElementById('apiListDiv').style.top = '0px'
}
+ },
+ onScroll () {
+ const _this = this;
+ var scrollTop = document.documentElement.scrollTop ||
document.body.scrollTop
+ var offsetTop = document.getElementById('apiFormDiv').offsetTop
+
+ if(scrollTop >= offsetTop && _this.isBigScreen){
+ _this.isApiListDivFixed = true;
+ }else{
+ _this.isApiListDivFixed = false;
+ }
+
}
},
mounted () {
- window.addEventListener('scroll', this.fixedApiListDiv)
+ window.addEventListener('scroll', this.onScroll)
}
}
</script>
<style scoped>
+ .sticky_top{
+ position: fixed;
+ top:64px;
+ }
+
+ .menu_panel_content{
+ max-height: 500px;
+ overflow-y: scroll;
+ }
+
.apiListDiv-fixed{
position: fixed;
}
+ .menu_panel_class{
+ position: fixed;
+ width: 25%;
+ z-index: 1000;
+ }
+
+ .apidocs_content{
+ margin-left:30%;
+ }
</style>
diff --git a/dubbo-admin-ui/src/components/governance/RoutingRule.vue
b/dubbo-admin-ui/src/components/governance/RoutingRule.vue
index 4316161..b61deb9 100644
--- a/dubbo-admin-ui/src/components/governance/RoutingRule.vue
+++ b/dubbo-admin-ui/src/components/governance/RoutingRule.vue
@@ -90,7 +90,7 @@
>
<template slot="items" slot-scope="props">
<td class="text-xs-left">{{ props.item.service }}</td>
- <td class="text-xs-left">{{ props.item.group }}</td>
+ <td class="text-xs-left">{{ props.item.serviceGroup }}</td>
<td class="text-xs-left">{{ props.item.enabled }}</td>
<td class="text-xs-center px-0">
<v-tooltip bottom v-for="op in operations" :key="op.id">
@@ -381,15 +381,15 @@ export default {
}
const vm = this
rule.service = this.service
- rule.serviceVersion = this.serviceVersion
- rule.serviceGroup = this.serviceGroup
+ const serviceVersion = this.serviceVersion == null ? '' :
this.serviceVersion
+ const serviceGroup = this.serviceGroup == null ? '' : this.serviceGroup
rule.application = this.application
if (this.updateId !== '') {
if (this.updateId === 'close') {
this.closeDialog()
} else {
rule.id = this.updateId
- this.$axios.put('/rules/route/condition/' + rule.id, rule)
+ this.$axios.put('/rules/route/condition/' + rule.id +
'?serviceVersion=' + serviceVersion + '&serviceGroup=' + serviceGroup, rule)
.then(response => {
if (response.status === 200) {
if (vm.service) {
@@ -407,7 +407,7 @@ export default {
})
}
} else {
- this.$axios.post('/rules/route/condition/', rule)
+ this.$axios.post('/rules/route/condition/' + '?serviceVersion=' +
serviceVersion + '&serviceGroup=' + serviceGroup, rule)
.then(response => {
if (response.status === 201) {
if (vm.service) {
@@ -439,27 +439,34 @@ export default {
if (itemId.includes('/')) {
itemId = itemId.replace('/', '*')
}
+ const serviceVersion = item.serviceVersion == null ? '' :
item.serviceVersion
+ const serviceGroup = item.serviceGroup == null ? '' : item.serviceGroup
+ const scope = item.scope == null ? '' : item.scope
switch (icon) {
case 'visibility':
- this.$axios.get('/rules/route/condition/' + itemId +
'?serviceVersion=' + item.serviceVersion + '&serviceGroup=' + item.serviceGroup)
+ this.$axios.get('/rules/route/condition/' + itemId +
'?serviceVersion=' + serviceVersion + '&serviceGroup=' + serviceGroup +
'&scope=' + scope)
.then(response => {
const conditionRoute = response.data
this.serviceVersion = conditionRoute.serviceVersion
this.serviceGroup = conditionRoute.serviceGroup
+ this.scope = conditionRoute.scope
delete conditionRoute.serviceVersion
delete conditionRoute.serviceGroup
+ delete conditionRoute.scope
this.handleBalance(conditionRoute, true)
this.updateId = 'close'
})
break
case 'edit':
- this.$axios.get('/rules/route/condition/' + itemId +
'?serviceVersion=' + item.serviceVersion + '&serviceGroup=' + item.serviceGroup)
+ this.$axios.get('/rules/route/condition/' + itemId +
'?serviceVersion=' + serviceVersion + '&serviceGroup=' + serviceGroup +
'&scope=' + scope)
.then(response => {
const conditionRoute = response.data
this.serviceVersion = conditionRoute.serviceVersion
this.serviceGroup = conditionRoute.serviceGroup
+ this.scope = conditionRoute.scope
delete conditionRoute.serviceVersion
delete conditionRoute.serviceGroup
+ delete conditionRoute.scope
this.handleBalance(conditionRoute, false)
this.updateId = itemId
})
@@ -468,22 +475,25 @@ export default {
this.openWarn(' Are you sure to block Routing Rule', 'service: ' +
oldItemId)
this.warnStatus.operation = 'disable'
this.warnStatus.id = itemId
- this.warnStatus.serviceVersion = item.serviceVersion
- this.warnStatus.serviceGroup = item.serviceGroup
+ this.warnStatus.serviceVersion = serviceVersion
+ this.warnStatus.serviceGroup = serviceGroup
+ this.warnStatus.scope = scope
break
case 'check_circle_outline':
this.openWarn(' Are you sure to enable Routing Rule', 'service: ' +
oldItemId)
this.warnStatus.operation = 'enable'
this.warnStatus.id = itemId
- this.warnStatus.serviceVersion = item.serviceVersion
- this.warnStatus.serviceGroup = item.serviceGroup
+ this.warnStatus.serviceVersion = serviceVersion
+ this.warnStatus.serviceGroup = serviceGroup
+ this.warnStatus.scope = scope
break
case 'delete':
this.openWarn('warnDeleteRouteRule', 'service: ' + oldItemId)
this.warnStatus.operation = 'delete'
this.warnStatus.id = itemId
- this.warnStatus.serviceVersion = item.serviceVersion
- this.warnStatus.serviceGroup = item.serviceGroup
+ this.warnStatus.serviceVersion = serviceVersion
+ this.warnStatus.serviceGroup = serviceGroup
+ this.warnStatus.scope = scope
}
},
handleBalance: function (conditionRoute, readonly) {
@@ -507,8 +517,9 @@ export default {
const operation = warnStatus.operation
const serviceVersion = warnStatus.serviceVersion
const serviceGroup = warnStatus.serviceGroup
+ const scope = warnStatus.scope
if (operation === 'delete') {
- this.$axios.delete('/rules/route/condition/' + id + '?serviceVersion='
+ serviceVersion + '&serviceGroup=' + serviceGroup)
+ this.$axios.delete('/rules/route/condition/' + id + '?serviceVersion='
+ serviceVersion + '&serviceGroup=' + serviceGroup + '&scope=' + scope)
.then(response => {
if (response.status === 200) {
this.warn = false
@@ -517,7 +528,7 @@ export default {
}
})
} else if (operation === 'disable') {
- this.$axios.put('/rules/route/condition/disable/' + id +
'?serviceVersion=' + serviceVersion + '&serviceGroup=' + serviceGroup)
+ this.$axios.put('/rules/route/condition/disable/' + id +
'?serviceVersion=' + serviceVersion + '&serviceGroup=' + serviceGroup +
'&scope=' + scope)
.then(response => {
if (response.status === 200) {
this.warn = false
@@ -526,7 +537,7 @@ export default {
}
})
} else if (operation === 'enable') {
- this.$axios.put('/rules/route/condition/enable/' + id +
'?serviceVersion=' + serviceVersion + '&serviceGroup=' + serviceGroup)
+ this.$axios.put('/rules/route/condition/enable/' + id +
'?serviceVersion=' + serviceVersion + '&serviceGroup=' + serviceGroup +
'&scope=' + scope)
.then(response => {
if (response.status === 200) {
this.warn = false