Skip to content

Commit d34a7be

Browse files
committed
添加Client Policy Infos查看
1 parent a1e2b15 commit d34a7be

File tree

10 files changed

+103
-9
lines changed

10 files changed

+103
-9
lines changed

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/DefaultCachePolicyDecisionManager.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import cn.springcloud.gray.model.DecisionDefinition;
66
import cn.springcloud.gray.model.PolicyDefinition;
77

8+
import java.util.Map;
89
import java.util.function.Supplier;
910

1011
/**
@@ -92,6 +93,11 @@ public boolean testPolicyPredicate(String predicateType, DecisionInputArgs decis
9293
return delegater.testPolicyPredicate(predicateType, decisionInputArgs, defaultResult);
9394
}
9495

96+
@Override
97+
public Map<String, PolicyInfo> getAllPolicyInfos() {
98+
return delegater.getAllPolicyInfos();
99+
}
100+
95101

96102
protected Policy getCachePolicy(String key, Supplier<Policy> supplier) {
97103
return policyCache.get(key, k -> supplier.get());

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/DefaultPolicyDecisionManager.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44
import cn.springcloud.gray.model.DecisionDefinition;
55
import cn.springcloud.gray.model.PolicyDefinition;
66

7-
import java.util.ArrayList;
8-
import java.util.List;
9-
import java.util.Map;
10-
import java.util.Objects;
7+
import java.util.*;
118
import java.util.concurrent.ConcurrentHashMap;
129

1310
/**
@@ -107,6 +104,11 @@ public boolean testPolicyPredicate(String predicateType, DecisionInputArgs decis
107104
return policyPredicate.test(decisionInputArgs);
108105
}
109106

107+
@Override
108+
public Map<String, PolicyInfo> getAllPolicyInfos() {
109+
return Collections.unmodifiableMap(policyInfos);
110+
}
111+
110112
private PolicyInfo getExistingPolicyInfo(String policyId) {
111113
PolicyInfo policyInfo = getPolicyInfo(policyId);
112114
assertPolicyInfo(policyInfo);

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/PolicyDecisionManager.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import java.util.Collection;
88
import java.util.List;
9+
import java.util.Map;
910
import java.util.Objects;
1011
import java.util.stream.Collectors;
1112

@@ -60,4 +61,6 @@ default boolean testPolicyPredicate(String predicateType, DecisionInputArgs deci
6061
}
6162

6263
boolean testPolicyPredicate(String predicateType, DecisionInputArgs decisionInputArgs, boolean defaultResult);
64+
65+
Map<String, PolicyInfo> getAllPolicyInfos();
6366
}

spring-cloud-gray-plugins/spring-cloud-gray-plugin-webflux/src/main/java/cn/springcloud/gray/web/resources/GrayListResource.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import cn.springcloud.gray.GrayManager;
44
import cn.springcloud.gray.api.ApiRes;
5+
import cn.springcloud.gray.decision.PolicyDecisionManager;
6+
import cn.springcloud.gray.decision.PolicyInfo;
57
import cn.springcloud.gray.model.GrayInstance;
68
import cn.springcloud.gray.model.GrayTrackDefinition;
79
import cn.springcloud.gray.request.track.GrayTrackHolder;
@@ -25,7 +27,8 @@ public class GrayListResource {
2527

2628
@Autowired
2729
private GrayTrackHolder grayTrackHolder;
28-
30+
@Autowired
31+
private PolicyDecisionManager policyDecisionManager;
2932

3033
@Autowired
3134
private GrayManager grayManager;
@@ -44,6 +47,20 @@ public Mono<ApiRes<Map<String, Collection<GrayInstance>>>> getAllGrayServiceInfo
4447
.build());
4548
}
4649

50+
/**
51+
* 返回维护的所有策略信息
52+
*
53+
* @return
54+
*/
55+
@GetMapping("/policy/allInfos")
56+
public Mono<ApiRes<Map<String, PolicyInfo>>> getAllPolicyInfos() {
57+
return Mono.just(
58+
ApiRes.<Map<String, PolicyInfo>>builder()
59+
.code(ApiRes.CODE_SUCCESS)
60+
.data(policyDecisionManager.getAllPolicyInfos())
61+
.build());
62+
}
63+
4764
/**
4865
* 返回维护的所有灰度追踪信息
4966
*

spring-cloud-gray-plugins/spring-cloud-gray-plugin-webmvc/src/main/java/cn/springcloud/gray/web/resources/GrayListResource.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import cn.springcloud.gray.GrayManager;
44
import cn.springcloud.gray.api.ApiRes;
5+
import cn.springcloud.gray.decision.PolicyDecisionManager;
6+
import cn.springcloud.gray.decision.PolicyInfo;
57
import cn.springcloud.gray.model.GrayInstance;
68
import cn.springcloud.gray.model.GrayTrackDefinition;
79
import cn.springcloud.gray.request.track.GrayTrackHolder;
@@ -24,7 +26,8 @@ public class GrayListResource {
2426

2527
@Autowired
2628
private GrayTrackHolder grayTrackHolder;
27-
29+
@Autowired
30+
private PolicyDecisionManager policyDecisionManager;
2831

2932
@Autowired
3033
private GrayManager grayManager;
@@ -42,6 +45,19 @@ public ApiRes<Map<String, Collection<GrayInstance>>> getAllGrayServiceInfos() {
4245
.build();
4346
}
4447

48+
/**
49+
* 返回维护的所有策略信息
50+
*
51+
* @return
52+
*/
53+
@GetMapping("/policy/allInfos")
54+
public ApiRes<Map<String, PolicyInfo>> getAllPolicyInfos() {
55+
return ApiRes.<Map<String, PolicyInfo>>builder()
56+
.code(ApiRes.CODE_SUCCESS)
57+
.data(policyDecisionManager.getAllPolicyInfos())
58+
.build();
59+
}
60+
4561
/**
4662
* 返回维护的所有灰度追踪信息
4763
*

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/dao/repository/GrayDecisionRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
@Repository
1313
public interface GrayDecisionRepository extends JpaRepository<GrayDecisionDO, Long>, JpaSpecificationExecutor<GrayDecisionDO> {
14-
List<GrayDecisionDO> findByPolicyId(Long policyId);
14+
List<GrayDecisionDO> findByPolicyIdAndDelFlag(Long policyId, boolean delFlag);
1515

1616
void deleteAllByPolicyId(Long id);
1717

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/resources/rest/ClientGrayListResource.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import cn.springcloud.gray.model.GrayInstance;
55
import cn.springcloud.gray.model.GrayTrackDefinition;
66
import cn.springcloud.gray.server.module.client.ClientRemoteModule;
7+
import cn.springcloud.gray.server.utils.ApiResHelper;
8+
import cn.springcloud.gray.utils.StringUtils;
79
import com.fasterxml.jackson.core.type.TypeReference;
810
import com.fasterxml.jackson.databind.ObjectMapper;
911
import org.springframework.beans.factory.annotation.Autowired;
@@ -14,6 +16,8 @@
1416
import org.springframework.web.bind.annotation.RestController;
1517
import org.springframework.web.client.RestTemplate;
1618

19+
import javax.annotation.PostConstruct;
20+
import java.util.HashMap;
1721
import java.util.List;
1822
import java.util.Map;
1923

@@ -32,6 +36,12 @@ public class ClientGrayListResource {
3236
private RestTemplate restTemplate;
3337

3438
private ObjectMapper objectMapper = new ObjectMapper();
39+
private Map<String, String> infoUrls = new HashMap<>();
40+
41+
@PostConstruct
42+
public void init() {
43+
infoUrls.put("POLICY", "/gray/list/policy/allInfos");
44+
}
3545

3646
@GetMapping("/track/allDefinitions")
3747
public ApiRes<List<GrayTrackDefinition>> getAllGrayTracks(
@@ -60,4 +70,23 @@ public ApiRes<Map<String, List<GrayInstance>>> getAllGrayServiceInfos(
6070
});
6171
}
6272

73+
@GetMapping("/infos")
74+
public ApiRes<Object> getGrayClientInfos(
75+
@RequestParam("serviceId") String serviceId,
76+
@RequestParam("instanceId") String instanceId,
77+
@RequestParam("infoType") String infoType) {
78+
String uri = infoUrls.get(infoType);
79+
if (StringUtils.isEmpty(uri)) {
80+
return ApiResHelper.notFound(String.format("没有找到type为'%s'的info", infoType));
81+
}
82+
return clientRemoteModule.callClient(serviceId, instanceId,
83+
uri, url -> {
84+
return restTemplate.execute(url, HttpMethod.GET, null, res -> {
85+
return objectMapper.readValue(res.getBody(), new TypeReference<ApiRes<Object>>() {
86+
});
87+
});
88+
});
89+
}
90+
91+
6392
}

spring-cloud-gray-webui/src/api/gray-client.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,12 @@ export function getServiceAllInfos(serviceId, instanceId) {
2020
params: params
2121
})
2222
}
23+
24+
export function getClientInfos(serviceId, instanceId, infoType) {
25+
var params = { 'serviceId': serviceId, 'instanceId': instanceId, 'infoType': infoType }
26+
return request({
27+
url: '/gray/client/grayList/infos',
28+
method: 'get',
29+
params: params
30+
})
31+
}

spring-cloud-gray-webui/src/views/gray-instance/complex-table.vue

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@
136136
<el-dropdown-menu slot="dropdown">
137137
<el-dropdown-item @click.native="showGrayInfos(row, 'SERVICES')">服务/实例</el-dropdown-item>
138138
<el-dropdown-item @click.native="showGrayInfos(row, 'TRACKS')">追踪</el-dropdown-item>
139+
<el-dropdown-item @click.native="showGrayInfos(row, 'POLICY')">策略</el-dropdown-item>
139140
</el-dropdown-menu>
140141
</el-dropdown>
141142
</template>
@@ -204,7 +205,7 @@
204205
<script>
205206
import { fetchList, deleteInstance, createInstance, updateInstance, tryChangeInstanceStatus } from '@/api/gray-instance'
206207
import { putData } from '@/api/api-request'
207-
import { getServiceAllInfos, getAllDefinitions } from '@/api/gray-client'
208+
import { getServiceAllInfos, getAllDefinitions, getClientInfos } from '@/api/gray-client'
208209
import waves from '@/directive/waves' // waves directive
209210
import { parseTime } from '@/utils'
210211
import Pagination from '@/components/Pagination' // secondary package based on el-pagination
@@ -519,6 +520,11 @@ export default {
519520
this.grayInfo.content = res.data
520521
this.grayInfo.loading = false
521522
})
523+
} else {
524+
getClientInfos(this.listQuery.serviceId, this.grayInfo.instanceId, this.grayInfo.type).then(res => {
525+
this.grayInfo.content = res.data
526+
this.grayInfo.loading = false
527+
})
522528
}
523529
},
524530
handleDownload() {

spring-cloud-gray-webui/src/views/gray-instance/discovery-instances.vue

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
<el-dropdown-menu slot="dropdown">
7676
<el-dropdown-item @click.native="showGrayInfos(row, 'SERVICES')">服务/实例</el-dropdown-item>
7777
<el-dropdown-item @click.native="showGrayInfos(row, 'TRACKS')">追踪</el-dropdown-item>
78+
<el-dropdown-item @click.native="showGrayInfos(row, 'POLICY')">策略</el-dropdown-item>
7879
</el-dropdown-menu>
7980
</el-dropdown>
8081
</template>
@@ -99,7 +100,7 @@
99100
<script>
100101
import { fetchList, createInstance, tryChangeInstanceStatus } from '@/api/discovery-instance'
101102
import waves from '@/directive/waves' // waves directive
102-
import { getServiceAllInfos, getAllDefinitions } from '@/api/gray-client'
103+
import { getServiceAllInfos, getAllDefinitions, getClientInfos } from '@/api/gray-client'
103104
import { parseTime } from '@/utils'
104105
105106
export default {
@@ -278,6 +279,11 @@ export default {
278279
this.grayInfo.content = res.data
279280
this.grayInfo.loading = false
280281
})
282+
} else {
283+
getClientInfos(this.listQuery.serviceId, this.grayInfo.instanceId, this.grayInfo.type).then(res => {
284+
this.grayInfo.content = res.data
285+
this.grayInfo.loading = false
286+
})
281287
}
282288
},
283289
formatJson(filterVal, jsonData) {

0 commit comments

Comments
 (0)