Skip to content

Commit 07fa2f1

Browse files
authored
Merge pull request #15 from SpringCloud/A
A
2 parents 5de0150 + b7ee02e commit 07fa2f1

File tree

3 files changed

+48
-4
lines changed

3 files changed

+48
-4
lines changed

spring-cloud-gray-client-netflix/src/main/java/cn/springcloud/gray/client/netflix/eureka/EurekaInstatnceTransformer.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,24 @@ public static InstanceInfo.InstanceStatus toEurekaInstanceStatus(InstanceStatus
2727
}
2828
}
2929

30+
31+
public static InstanceStatus toGrayInstanceStatus(InstanceInfo.InstanceStatus status) {
32+
if (status == null) {
33+
return InstanceStatus.UNKNOWN;
34+
}
35+
switch (status) {
36+
case DOWN:
37+
return InstanceStatus.DOWN;
38+
case UP:
39+
return InstanceStatus.UP;
40+
case STARTING:
41+
return InstanceStatus.STARTING;
42+
case OUT_OF_SERVICE:
43+
return InstanceStatus.OUT_OF_SERVICE;
44+
default:
45+
return InstanceStatus.UNKNOWN;
46+
}
47+
}
48+
49+
3050
}

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/configuration/DBStorageConfiguration.java

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

33
import cn.springcloud.gray.event.GrayEventPublisher;
44
import cn.springcloud.gray.server.configuration.properties.GrayServerProperties;
5+
import cn.springcloud.gray.server.discovery.ServiceDiscovery;
56
import cn.springcloud.gray.server.module.GrayInstanceRecordEvictor;
67
import cn.springcloud.gray.server.module.GrayServerModule;
78
import cn.springcloud.gray.server.module.GrayServerTrackModule;
@@ -40,11 +41,11 @@ public class DBGrayServrConfiguration {
4041

4142
@Bean
4243
public GrayServerModule grayServerModule(
43-
GrayEventPublisher grayEventPublisher,
44+
GrayEventPublisher grayEventPublisher, @Autowired(required = false) ServiceDiscovery serviceDiscovery,
4445
GrayServiceService grayServiceService, GrayInstanceService grayInstanceService,
4546
GrayDecisionService grayDecisionService, GrayPolicyService grayPolicyService) {
4647
return new JPAGrayServerModule(
47-
grayServerProperties, grayEventPublisher, grayServiceService, grayInstanceService,
48+
grayServerProperties, grayEventPublisher, serviceDiscovery, grayServiceService, grayInstanceService,
4849
grayDecisionService, grayPolicyService);
4950
}
5051

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/module/jpa/JPAGrayServerModule.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
import cn.springcloud.gray.event.GrayEventPublisher;
66
import cn.springcloud.gray.event.SourceType;
77
import cn.springcloud.gray.model.GrayStatus;
8+
import cn.springcloud.gray.model.InstanceInfo;
89
import cn.springcloud.gray.model.InstanceStatus;
910
import cn.springcloud.gray.server.configuration.properties.GrayServerProperties;
11+
import cn.springcloud.gray.server.discovery.ServiceDiscovery;
1012
import cn.springcloud.gray.server.module.GrayServerModule;
1113
import cn.springcloud.gray.server.module.domain.GrayDecision;
1214
import cn.springcloud.gray.server.module.domain.GrayInstance;
@@ -33,14 +35,19 @@ public class JPAGrayServerModule implements GrayServerModule {
3335
private GrayPolicyService grayPolicyService;
3436
private GrayEventPublisher grayEventPublisher;
3537
private GrayServerProperties grayServerProperties;
38+
private ServiceDiscovery serviceDiscovery;
3639

3740
public JPAGrayServerModule(
38-
GrayServerProperties grayServerProperties, GrayEventPublisher grayEventPublisher,
41+
GrayServerProperties grayServerProperties,
42+
GrayEventPublisher grayEventPublisher,
43+
ServiceDiscovery serviceDiscovery,
3944
GrayServiceService grayServiceService,
4045
GrayInstanceService grayInstanceService,
41-
GrayDecisionService grayDecisionService, GrayPolicyService grayPolicyService) {
46+
GrayDecisionService grayDecisionService,
47+
GrayPolicyService grayPolicyService) {
4248
this.grayServerProperties = grayServerProperties;
4349
this.grayEventPublisher = grayEventPublisher;
50+
this.serviceDiscovery = serviceDiscovery;
4451
this.grayServiceService = grayServiceService;
4552
this.grayInstanceService = grayInstanceService;
4653
this.grayDecisionService = grayDecisionService;
@@ -89,6 +96,22 @@ public void updateGrayStatus(String instanceId, GrayStatus grayStatus) {
8996

9097
@Override
9198
public void saveGrayInstance(GrayInstance instance) {
99+
GrayService grayService = grayServiceService.findOneModel(instance.getServiceId());
100+
if (grayService == null) {
101+
grayService = GrayService.builder()
102+
.serviceId(instance.getServiceId())
103+
.serviceName(instance.getServiceId())
104+
.build();
105+
grayServiceService.saveModel(grayService);
106+
}
107+
if (Objects.isNull(instance.getInstanceStatus()) && !Objects.isNull(serviceDiscovery)) {
108+
InstanceInfo instanceInfo =
109+
serviceDiscovery.getInstanceInfo(instance.getServiceId(), instance.getInstanceId());
110+
if (!Objects.isNull(instanceInfo)) {
111+
instance.setInstanceStatus(instanceInfo.getInstanceStatus());
112+
}
113+
114+
}
92115
grayInstanceService.saveModel(instance);
93116
}
94117

0 commit comments

Comments
 (0)