From 6a6852ea71aa6ae06c83a9bea0b8f171809be609 Mon Sep 17 00:00:00 2001 From: fanqq Date: Wed, 10 Jun 2015 10:44:06 +0800 Subject: [PATCH] fix get status bug --- .../com/ctrip/zeus/client/StatusClient.java | 2 +- .../zeus/restful/resource/StatusResource.java | 17 ++++++++++++ .../service/status/GroupStatusService.java | 2 ++ .../status/impl/GroupStatusServiceImpl.java | 27 +++++++++---------- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/ctrip/zeus/client/StatusClient.java b/src/main/java/com/ctrip/zeus/client/StatusClient.java index 5000ae32..b6525ff0 100644 --- a/src/main/java/com/ctrip/zeus/client/StatusClient.java +++ b/src/main/java/com/ctrip/zeus/client/StatusClient.java @@ -43,7 +43,7 @@ public class StatusClient extends AbstractRestClient { public GroupStatus getGroupStatus(Long groupId , Long slbId)throws Exception { - String responseStr = getTarget().path("/api/status/group").queryParam("groupId", groupId).queryParam("slbId", slbId) + String responseStr = getTarget().path("/api/status/group/"+groupId+"/slb/"+slbId) .request(MediaType.APPLICATION_JSON).headers(getDefaultHeaders()).get(String.class); return DefaultJsonParser.parse(GroupStatus.class, responseStr); } diff --git a/src/main/java/com/ctrip/zeus/restful/resource/StatusResource.java b/src/main/java/com/ctrip/zeus/restful/resource/StatusResource.java index 45ac5709..98317ed9 100644 --- a/src/main/java/com/ctrip/zeus/restful/resource/StatusResource.java +++ b/src/main/java/com/ctrip/zeus/restful/resource/StatusResource.java @@ -142,6 +142,23 @@ public class StatusResource { } } + + @GET + @Path("/group/{groupId:[0-9]+}/slb/{slbId:[0-9]+}") + @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) + @Authorize(name = "getGroupStatus", uriGroupHint = -1) + public Response groupStatus(@Context HttpServletRequest request, @Context HttpHeaders hh, @PathParam("groupId") Long groupId, @PathParam("slbId") Long slbId) throws Exception { + + GroupStatus groupStatus = groupStatusService.getLocalGroupStatus(groupId, slbId); + + if (MediaType.APPLICATION_XML_TYPE.equals(hh.getMediaType())) { + return Response.status(200).entity(String.format(GroupServerStatus.XML, groupStatus)).type(MediaType.APPLICATION_XML).build(); + } else { + return Response.status(200).entity(String.format(GroupServerStatus.JSON, groupStatus)).type(MediaType.APPLICATION_JSON).build(); + } + } + + @GET @Path("/traffic") @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) diff --git a/src/main/java/com/ctrip/zeus/service/status/GroupStatusService.java b/src/main/java/com/ctrip/zeus/service/status/GroupStatusService.java index 5e69c91b..2f218183 100644 --- a/src/main/java/com/ctrip/zeus/service/status/GroupStatusService.java +++ b/src/main/java/com/ctrip/zeus/service/status/GroupStatusService.java @@ -30,5 +30,7 @@ public interface GroupStatusService { GroupStatus getGroupStatus(Long groupId,Long slbId) throws Exception; + GroupStatus getLocalGroupStatus(Long groupId , Long slbId) throws Exception; + GroupServerStatus getGroupServerStatus(Long groupId, Long slbId, String ip, Integer port) throws Exception; } diff --git a/src/main/java/com/ctrip/zeus/service/status/impl/GroupStatusServiceImpl.java b/src/main/java/com/ctrip/zeus/service/status/impl/GroupStatusServiceImpl.java index bdd55485..64974a70 100644 --- a/src/main/java/com/ctrip/zeus/service/status/impl/GroupStatusServiceImpl.java +++ b/src/main/java/com/ctrip/zeus/service/status/impl/GroupStatusServiceImpl.java @@ -9,6 +9,7 @@ import com.ctrip.zeus.service.model.GroupRepository; import com.ctrip.zeus.service.model.SlbRepository; import com.ctrip.zeus.service.status.GroupStatusService; import com.ctrip.zeus.service.status.StatusService; +import com.ctrip.zeus.util.AssertUtils; import com.netflix.config.DynamicIntProperty; import com.netflix.config.DynamicPropertyFactory; import org.springframework.stereotype.Service; @@ -69,17 +70,14 @@ public class GroupStatusServiceImpl implements GroupStatusService { } return result; } - @Override - public GroupStatus getGroupStatus(Long groupId, Long slbId) throws Exception { - if (!isCurrentSlb(slbId)) - { - Slb slb = slbRepository.getById(slbId); - StatusClient client = StatusClient.getClient("http://"+slb.getSlbServers().get(0).getIp()+":"+adminServerPort.get()); - return client.getGroupStatus(groupId,slbId); - } + public GroupStatus getLocalGroupStatus(Long groupId , Long slbId) throws Exception + { Slb slb = slbRepository.getById(slbId); Group group = groupRepository.getById(groupId); + AssertUtils.isNull(group,"group Id not found!"); + AssertUtils.isNull(slb,"slb Id not found!"); + GroupStatus status = new GroupStatus(); status.setGroupId(groupId); status.setSlbId(slbId); @@ -93,15 +91,16 @@ public class GroupStatusServiceImpl implements GroupStatusService { } return status; } + @Override + public GroupStatus getGroupStatus(Long groupId, Long slbId) throws Exception { + Slb slb = slbRepository.getById(slbId); + AssertUtils.isNull(slb,"slbId not found!"); + StatusClient client = StatusClient.getClient("http://"+slb.getSlbServers().get(0).getIp()+":"+adminServerPort.get()); + return client.getGroupStatus(groupId,slbId); + } @Override public GroupServerStatus getGroupServerStatus(Long groupId, Long slbId, String ip, Integer port) throws Exception { - if (!isCurrentSlb(slbId)) - { - Slb slb = slbRepository.getById(slbId); - StatusClient client = StatusClient.getClient("http://"+slb.getSlbServers().get(0).getIp()+":"+adminServerPort.get()); - return client.getGroupServerStatus(groupId, slbId, ip + ":" + port); - } GroupServerStatus groupServerStatus = new GroupServerStatus(); groupServerStatus.setIp(ip);