fix get status bug

This commit is contained in:
fanqq 2015-06-10 10:44:06 +08:00
parent f0e2e0d905
commit 6a6852ea71
4 changed files with 33 additions and 15 deletions

View file

@ -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);
}

View file

@ -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})

View file

@ -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;
}

View file

@ -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);