update nginx/conf?vs=1&version=2

This commit is contained in:
fanqq 2015-06-19 14:40:17 +08:00
parent daee2d9104
commit 931f189e04
3 changed files with 37 additions and 6 deletions

View file

@ -1,11 +1,11 @@
package com.ctrip.zeus.restful.resource;
import com.ctrip.zeus.dal.core.NginxConfServerDao;
import com.ctrip.zeus.dal.core.NginxConfServerEntity;
import com.ctrip.zeus.dal.core.NginxConfUpstreamDao;
import com.ctrip.zeus.dal.core.*;
import com.ctrip.zeus.model.entity.Slb;
import com.ctrip.zeus.nginx.entity.*;
import com.ctrip.zeus.restful.message.ResponseHandler;
import com.ctrip.zeus.service.build.NginxConfService;
import com.ctrip.zeus.service.model.SlbRepository;
import com.ctrip.zeus.service.nginx.NginxService;
import org.springframework.stereotype.Component;
@ -36,6 +36,8 @@ public class NginxResource {
private NginxConfServerDao nginxConfServerDao;
@Resource
private NginxConfUpstreamDao nginxConfUpstreamDao;
@Resource
private SlbRepository slbRepository;
@GET
@Path("/load")
@ -52,9 +54,25 @@ public class NginxResource {
@GET
@Path("/conf")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response getVsConf(@Context HttpServletRequest request,@Context HttpHeaders hh,@QueryParam("vs") Long vsid) throws Exception{
int version = nginxConfService.getCurrentVersion(slbId);
nginxConfServerDao.findBySlbVirtualServerIdAndVersion(vsid,1, NginxConfServerEntity.READSET_FULL);
public Response getVsConf(@Context HttpServletRequest request,@Context HttpHeaders hh,@QueryParam("vs") Long vsid ,@QueryParam("version") Integer versionNum) throws Exception{
VirtualServerConfResponse response = new VirtualServerConfResponse();
Slb slb = slbRepository.getByVirtualServer(vsid);
int version;
if (null == versionNum || versionNum <= 0)
{
version= nginxConfService.getCurrentVersion(slb.getId());
}else
{
version = versionNum;
}
NginxConfServerDo nginxConfServerDo = nginxConfServerDao.findBySlbVirtualServerIdAndVersion(vsid, version, NginxConfServerEntity.READSET_FULL);
NginxConfUpstreamDo nginxConfUpstreamDo = nginxConfUpstreamDao.findBySlbVirtualServerIdAndVersion(vsid,version,NginxConfUpstreamEntity.READSET_FULL);
response.setVersion(version)
.setServerConf(nginxConfServerDo.getContent())
.setUpstreamConf(nginxConfUpstreamDo.getContent())
.setVirtualServerId(vsid);
return responseHandler.handle(response, hh.getMediaType());
}
@GET

View file

@ -9,6 +9,7 @@
<entity-ref name="traffic-status-list" />
<entity-ref name="traffic-status" />
<entity-ref name="req-status" />
<entity-ref name="virtual-server-conf-response" />
</entity>
<entity name="upstream-status">
<entity-ref name="servers" />
@ -80,5 +81,11 @@
<element name="time" value-type="Date" format="yyyy-MM-dd HH:mm:ss" />
<entity-ref name="req-status" type="list" names="req-statuses" xml-indent="true" />
</entity>
<entity name="virtual-server-conf-response">
<element name="virtual-server-id" value-type="long" />
<element name="version" value-type="int" />
<element name="server-conf" value-type="String" />
<element name="upstream-conf" value-type="String" />
</entity>
</model>

View file

@ -92,4 +92,10 @@
<server-err-count>17915825952</server-err-count>
<time>2013-05-20 13:34:00</time>
</req-status>
<virtual-server-conf-response>
<virtual-server-id>12345678901</virtual-server-id>
<version>1</version>
<server-conf>server-conf</server-conf>
<upstream-conf>upstream-conf</upstream-conf>
</virtual-server-conf-response>
</nginx>