mirror of
https://github.com/ctripcorp/zeus.git
synced 2024-09-21 16:16:09 +08:00
day dev
This commit is contained in:
parent
7e42bc17be
commit
265ea0733a
|
@ -2,6 +2,7 @@ package com.ctrip.zeus;
|
|||
|
||||
import com.ctrip.zeus.server.Server;
|
||||
import com.ctrip.zeus.server.SlbAdminServer;
|
||||
import com.ctrip.zeus.util.S;
|
||||
import com.ctrip.zeus.util.ShutdownHookManager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -22,11 +23,11 @@ public class SlbAdminMain {
|
|||
|
||||
private static void setSystemProperties() {
|
||||
//Archaius loading configuration depends on this property.
|
||||
setPropertyDefaultValue("archaius.deployment.applicationId","slb-admin");
|
||||
setPropertyDefaultValue("archaius.deployment.environment","local");
|
||||
setPropertyDefaultValue("server.www.base-dir",new File("").getAbsolutePath()+"/src/main/www");
|
||||
setPropertyDefaultValue("server.temp-dir",new File("").getAbsolutePath()+"/target/temp");
|
||||
setPropertyDefaultValue("APP_HOME",new File("").getAbsolutePath());
|
||||
S.setPropertyDefaultValue("archaius.deployment.applicationId", "slb-admin");
|
||||
S.setPropertyDefaultValue("archaius.deployment.environment","local");
|
||||
S.setPropertyDefaultValue("server.www.base-dir",new File("").getAbsolutePath()+"/src/main/www");
|
||||
S.setPropertyDefaultValue("server.temp-dir",new File("").getAbsolutePath()+"/target/temp");
|
||||
S.setPropertyDefaultValue("APP_HOME",new File("").getAbsolutePath());
|
||||
}
|
||||
|
||||
private static Server startServer() throws Exception {
|
||||
|
@ -61,13 +62,6 @@ public class SlbAdminMain {
|
|||
}
|
||||
}
|
||||
|
||||
private static void setPropertyDefaultValue(String propertyName, String defaultValue) {
|
||||
String val = System.getProperty(propertyName);
|
||||
if(val==null || val.trim().isEmpty()){
|
||||
System.setProperty(propertyName, defaultValue);
|
||||
}
|
||||
}
|
||||
|
||||
private static void printStartupAndShutdownMsg(String[] args) {
|
||||
String host= "Unknown";
|
||||
try {
|
||||
|
|
31
src/main/java/com/ctrip/zeus/client/AbstractRestClient.java
Normal file
31
src/main/java/com/ctrip/zeus/client/AbstractRestClient.java
Normal file
|
@ -0,0 +1,31 @@
|
|||
package com.ctrip.zeus.client;
|
||||
|
||||
import org.glassfish.jersey.client.ClientConfig;
|
||||
import org.glassfish.jersey.uri.UriComponent;
|
||||
|
||||
import javax.ws.rs.client.Client;
|
||||
import javax.ws.rs.client.ClientBuilder;
|
||||
import javax.ws.rs.client.WebTarget;
|
||||
|
||||
/**
|
||||
* @author:xingchaowang
|
||||
* @date: 3/6/2015.
|
||||
*/
|
||||
public abstract class AbstractRestClient {
|
||||
|
||||
private WebTarget webTarget;
|
||||
|
||||
protected AbstractRestClient(String url) {
|
||||
ClientConfig config = new ClientConfig();
|
||||
Client client = ClientBuilder.newClient(config);
|
||||
webTarget = client.target(url);
|
||||
}
|
||||
|
||||
public String urlEncode(String url) {
|
||||
return UriComponent.encode(url, UriComponent.Type.PATH_SEGMENT);
|
||||
}
|
||||
|
||||
protected WebTarget getTarget(){
|
||||
return webTarget;
|
||||
}
|
||||
}
|
36
src/main/java/com/ctrip/zeus/client/SlbClusterClient.java
Normal file
36
src/main/java/com/ctrip/zeus/client/SlbClusterClient.java
Normal file
|
@ -0,0 +1,36 @@
|
|||
package com.ctrip.zeus.client;
|
||||
|
||||
|
||||
import com.ctrip.zeus.model.entity.SlbCluster;
|
||||
|
||||
import javax.ws.rs.client.Entity;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author:xingchaowang
|
||||
* @date: 3/6/2015.
|
||||
*/
|
||||
public class SlbClusterClient extends AbstractRestClient {
|
||||
public SlbClusterClient(String url) {
|
||||
super(url);
|
||||
}
|
||||
|
||||
public List<SlbCluster> getAll() {
|
||||
String res = getTarget().path("/api/slb").request().get(String.class);
|
||||
System.out.println(res);
|
||||
return null;
|
||||
}
|
||||
|
||||
public void add(SlbCluster slbCluster) {
|
||||
Response res = getTarget().path("/api/slb").request()
|
||||
.post(Entity.entity(
|
||||
String.format(SlbCluster.JSON, slbCluster),
|
||||
MediaType.APPLICATION_JSON
|
||||
));
|
||||
if (res.getStatus() != 200) {
|
||||
throw new RuntimeException(String.valueOf(res.getStatus()));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,14 +1,18 @@
|
|||
package com.ctrip.zeus.restful.resource;
|
||||
|
||||
import com.ctrip.zeus.model.entity.SlbCluster;
|
||||
import com.ctrip.zeus.model.transform.DefaultJsonParser;
|
||||
import com.ctrip.zeus.service.SlbClusterRepository;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @author:xingchaowang
|
||||
|
@ -26,4 +30,16 @@ public class SLBClusterResource {
|
|||
slbClusterRepository.list();
|
||||
return Response.ok("hello").build();
|
||||
}
|
||||
|
||||
@POST
|
||||
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, "*/*"})
|
||||
public Response add(String slb) {
|
||||
try {
|
||||
SlbCluster sc = DefaultJsonParser.parse(SlbCluster.class, slb);
|
||||
slbClusterRepository.add(sc);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return Response.ok("hello").build();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,4 +10,6 @@ import java.util.List;
|
|||
*/
|
||||
public interface SlbClusterRepository extends Repository {
|
||||
List<SlbCluster> list();
|
||||
|
||||
void add(SlbCluster sc);
|
||||
}
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
package com.ctrip.zeus.service.impl;
|
||||
|
||||
import com.ctrip.zeus.dal.core.*;
|
||||
import com.ctrip.zeus.model.entity.SlbCluster;
|
||||
import com.ctrip.zeus.service.SlbClusterRepository;
|
||||
import com.ctrip.zeus.support.DefaultDoBuilder;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import org.unidal.dal.jdbc.DalException;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author:xingchaowang
|
||||
|
@ -11,10 +17,49 @@ import java.util.List;
|
|||
*/
|
||||
@Repository("slbClusterRepository")
|
||||
public class SlbClusterRepositoryImpl implements SlbClusterRepository {
|
||||
@Resource
|
||||
private SlbClusterDao slbClusterDao;
|
||||
@Resource
|
||||
private SlbVipDao slbVipDao;
|
||||
@Resource
|
||||
private SlbServerDao slbServerDao;
|
||||
@Resource
|
||||
private SlbDomainDao slbDomainDao;
|
||||
@Resource
|
||||
private SlbVirtualServerDao slbVirtualServerDao;
|
||||
|
||||
|
||||
@Override
|
||||
public List<SlbCluster> list() {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(SlbCluster sc) {
|
||||
Map<Class<?>, List> map = new DefaultDoBuilder().build(sc);
|
||||
SlbClusterDo scd = (SlbClusterDo) map.get(SlbClusterDo.class).get(0);
|
||||
scd.setStatus("A");
|
||||
List<SlbVipDo> svdList = map.get(SlbVipDo.class);
|
||||
List<SlbServerDo> ssdList = map.get(SlbServerDo.class);
|
||||
List<SlbDomainDo> sddList = map.get(SlbDomainDo.class);
|
||||
List<SlbVirtualServerDo> svsdList = map.get(SlbVirtualServerDo.class);
|
||||
|
||||
try {
|
||||
slbClusterDao.insert(scd);
|
||||
if (svdList != null) {
|
||||
for (SlbVipDo d : svdList) {
|
||||
d.setSlbClusterId(scd.getId());
|
||||
slbVipDao.insert(d);
|
||||
}
|
||||
}
|
||||
if (ssdList != null) {
|
||||
for (SlbServerDo d : ssdList) {
|
||||
d.setSlbClusterId(scd.getId());
|
||||
slbServerDao.insert(d);
|
||||
}
|
||||
}
|
||||
} catch (DalException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
157
src/main/java/com/ctrip/zeus/support/DefaultDoBuilder.java
Normal file
157
src/main/java/com/ctrip/zeus/support/DefaultDoBuilder.java
Normal file
|
@ -0,0 +1,157 @@
|
|||
package com.ctrip.zeus.support;
|
||||
|
||||
import com.ctrip.zeus.dal.core.*;
|
||||
import com.ctrip.zeus.model.IEntity;
|
||||
import com.ctrip.zeus.model.IVisitor;
|
||||
import com.ctrip.zeus.model.entity.*;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author:xingchaowang
|
||||
* @date: 3/6/2015.
|
||||
*/
|
||||
public class DefaultDoBuilder implements IVisitor {
|
||||
private IVisitor m_visitor;
|
||||
private Map<Class<?>,List> m_map;
|
||||
|
||||
public DefaultDoBuilder() {
|
||||
m_map = new HashMap<>();
|
||||
m_visitor = this;
|
||||
}
|
||||
|
||||
public Map<Class<?>, List> build(IEntity<?> entity) {
|
||||
entity.accept(this);
|
||||
return m_map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitApplication(Application application) {
|
||||
getList(ApplicationDo.class).add(EntityDoConverter.toApplicationDo(application));
|
||||
|
||||
if (!application.getAppSlbs().isEmpty()) {
|
||||
for (AppSlb appSlb : application.getAppSlbs()) {
|
||||
appSlb.accept(m_visitor);
|
||||
}
|
||||
}
|
||||
|
||||
if (application.getHealthCheck() != null) {
|
||||
application.getHealthCheck().accept(m_visitor);
|
||||
}
|
||||
|
||||
if (application.getLoadBalancingMethod() != null) {
|
||||
application.getLoadBalancingMethod().accept(m_visitor);
|
||||
}
|
||||
|
||||
if (!application.getAppServers().isEmpty()) {
|
||||
for (AppServer appServer : application.getAppServers()) {
|
||||
appServer.accept(m_visitor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitAppServer(AppServer appServer) {
|
||||
getList(AppServerDo.class).add(EntityDoConverter.toAppServerDo(appServer));
|
||||
|
||||
if (appServer.getServer() != null) {
|
||||
appServer.getServer().accept(m_visitor);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitAppSlb(AppSlb appSlb) {
|
||||
getList(AppServerDo.class).add(EntityDoConverter.toAppSlbDo(appSlb));
|
||||
|
||||
if (appSlb.getVirtualServer() != null) {
|
||||
appSlb.getVirtualServer().accept(m_visitor);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitDomain(Domain domain) {
|
||||
getList(SlbDomainDo.class).add(EntityDoConverter.toSlbDomainDo(domain));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitHealthCheck(HealthCheck healthCheck) {
|
||||
getList(AppHealthCheckDo.class).add(EntityDoConverter.toAppHealthCheckDo(healthCheck));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitLoadBalancingMethod(LoadBalancingMethod loadBalancingMethod) {
|
||||
getList(AppLoadBalancingMethodDo.class).add(EntityDoConverter.toAppLoadBalancingMethodDo(loadBalancingMethod));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitModel(Model model) {
|
||||
if (model.getSlbCluster() != null) {
|
||||
model.getSlbCluster().accept(m_visitor);
|
||||
}
|
||||
|
||||
if (model.getApplication() != null) {
|
||||
model.getApplication().accept(m_visitor);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitServer(Server server) {
|
||||
getList(ServerDo.class).add(EntityDoConverter.toServerDo(server));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitSlbCluster(SlbCluster slbCluster) {
|
||||
getList(SlbClusterDo.class).add(EntityDoConverter.toSlbClusterDo(slbCluster));
|
||||
|
||||
if (!slbCluster.getVips().isEmpty()) {
|
||||
for (Vip vip : slbCluster.getVips()) {
|
||||
vip.accept(m_visitor);
|
||||
}
|
||||
}
|
||||
|
||||
if (!slbCluster.getSlbServers().isEmpty()) {
|
||||
for (SlbServer slbServer : slbCluster.getSlbServers()) {
|
||||
slbServer.accept(m_visitor);
|
||||
}
|
||||
}
|
||||
|
||||
if (!slbCluster.getVirtualServers().isEmpty()) {
|
||||
for (VirtualServer virtualServer : slbCluster.getVirtualServers()) {
|
||||
virtualServer.accept(m_visitor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitSlbServer(SlbServer slbServer) {
|
||||
getList(SlbServerDo.class).add(EntityDoConverter.toSlbServerDo(slbServer));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitVip(Vip vip) {
|
||||
getList(SlbVipDo.class).add(EntityDoConverter.toSlbVipDo(vip));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitVirtualServer(VirtualServer virtualServer) {
|
||||
getList(SlbVirtualServerDo.class).add(EntityDoConverter.toSlbVirtualServerDo(virtualServer));
|
||||
if (virtualServer.getSlbCluster() != null) {
|
||||
virtualServer.getSlbCluster().accept(m_visitor);
|
||||
}
|
||||
|
||||
if (!virtualServer.getDomains().isEmpty()) {
|
||||
for (Domain domain : virtualServer.getDomains()) {
|
||||
domain.accept(m_visitor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List getList(Class<?> clazz) {
|
||||
List list = m_map.get(clazz);
|
||||
if (list == null) {
|
||||
list = new ArrayList();
|
||||
m_map.put(clazz, list);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
75
src/main/java/com/ctrip/zeus/support/DefaultDoParser.java
Normal file
75
src/main/java/com/ctrip/zeus/support/DefaultDoParser.java
Normal file
|
@ -0,0 +1,75 @@
|
|||
package com.ctrip.zeus.support;
|
||||
|
||||
import com.ctrip.zeus.dal.core.ApplicationDo;
|
||||
import com.ctrip.zeus.model.entity.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author:xingchaowang
|
||||
* @date: 3/6/2015.
|
||||
*/
|
||||
public class DefaultDoParser implements DoParser{
|
||||
@Override
|
||||
public Application parseApplication(Map<Class<?>, List> map) {
|
||||
List<ApplicationDo> list = map.get(ApplicationDo.class);
|
||||
ApplicationDo ad = list.get(0);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AppServer parseAppServer(Map<Class<?>, List> map) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AppSlb parseAppSlb(Map<Class<?>, List> map) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Domain parseDomain(Map<Class<?>, List> map) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HealthCheck parseHealthCheck(Map<Class<?>, List> map) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LoadBalancingMethod parseLoadBalancingMethod(Map<Class<?>, List> map) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Model parseModel(Map<Class<?>, List> map) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Server parseServer(Map<Class<?>, List> map) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SlbCluster parseSlbCluster(Map<Class<?>, List> map) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SlbServer parseSlbServer(Map<Class<?>, List> map) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vip parseVip(Map<Class<?>, List> map) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VirtualServer parseVirtualServer(Map<Class<?>, List> map) {
|
||||
return null;
|
||||
}
|
||||
}
|
38
src/main/java/com/ctrip/zeus/support/DoParser.java
Normal file
38
src/main/java/com/ctrip/zeus/support/DoParser.java
Normal file
|
@ -0,0 +1,38 @@
|
|||
package com.ctrip.zeus.support;
|
||||
|
||||
import com.ctrip.zeus.model.entity.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author:xingchaowang
|
||||
* @date: 3/6/2015.
|
||||
*/
|
||||
public interface DoParser {
|
||||
|
||||
public Application parseApplication(Map<Class<?>, List> map);
|
||||
|
||||
public AppServer parseAppServer(Map<Class<?>, List> map);
|
||||
|
||||
public AppSlb parseAppSlb(Map<Class<?>, List> map);
|
||||
|
||||
public Domain parseDomain(Map<Class<?>, List> map);
|
||||
|
||||
public HealthCheck parseHealthCheck(Map<Class<?>, List> map);
|
||||
|
||||
public LoadBalancingMethod parseLoadBalancingMethod(Map<Class<?>, List> map);
|
||||
|
||||
public Model parseModel(Map<Class<?>, List> map);
|
||||
|
||||
public Server parseServer(Map<Class<?>, List> map);
|
||||
|
||||
public SlbCluster parseSlbCluster(Map<Class<?>, List> map);
|
||||
|
||||
public SlbServer parseSlbServer(Map<Class<?>, List> map);
|
||||
|
||||
public Vip parseVip(Map<Class<?>, List> map);
|
||||
|
||||
public VirtualServer parseVirtualServer(Map<Class<?>, List> map);
|
||||
|
||||
}
|
163
src/main/java/com/ctrip/zeus/support/EntityDoConverter.java
Normal file
163
src/main/java/com/ctrip/zeus/support/EntityDoConverter.java
Normal file
|
@ -0,0 +1,163 @@
|
|||
package com.ctrip.zeus.support;
|
||||
|
||||
import com.ctrip.zeus.dal.core.*;
|
||||
import com.ctrip.zeus.model.entity.*;
|
||||
|
||||
/**
|
||||
* @author:xingchaowang
|
||||
* @date: 3/6/2015.
|
||||
*/
|
||||
public class EntityDoConverter {
|
||||
|
||||
|
||||
public static Application toApplication(ApplicationDo d) {
|
||||
return new Application()
|
||||
.setAppId(d.getAppId())
|
||||
.setName(d.getName());
|
||||
}
|
||||
|
||||
public static AppServer toAppServer(AppServerDo d) {
|
||||
return new AppServer()
|
||||
.setEnable(d.isEnable())
|
||||
.setFailTimeout(d.getFailTimeout())
|
||||
.setHealthy(d.isHealthy())
|
||||
.setMaxFails(d.getMaxFails())
|
||||
.setPort(d.getPort())
|
||||
.setWeight(d.getWeight());
|
||||
}
|
||||
|
||||
public static AppSlb toAppSlb(AppSlbDo d) {
|
||||
return new AppSlb()
|
||||
.setPath(d.getPath());
|
||||
}
|
||||
|
||||
public static Domain toDomain(SlbDomainDo d) {
|
||||
return new Domain()
|
||||
.setName(d.getName())
|
||||
.setPort(d.getPort());
|
||||
}
|
||||
|
||||
public static HealthCheck toHealthCheck(AppHealthCheckDo d) {
|
||||
return new HealthCheck()
|
||||
.setFails(d.getFails())
|
||||
.setInterval(d.getInterval())
|
||||
.setPasses(d.getPasses())
|
||||
.setUri(d.getUri());
|
||||
}
|
||||
|
||||
public static LoadBalancingMethod toLoadBalancingMethod(AppLoadBalancingMethodDo d) {
|
||||
return new LoadBalancingMethod()
|
||||
.setType(d.getType())
|
||||
.setValue(d.getValue());
|
||||
}
|
||||
|
||||
|
||||
public static Server toServer(ServerDo d) {
|
||||
return new Server()
|
||||
.setHostName(d.getHostName())
|
||||
.setIp(d.getIp())
|
||||
.setUp(d.isUp());
|
||||
}
|
||||
|
||||
public static SlbCluster toSlbCluster(SlbClusterDo d) {
|
||||
return new SlbCluster()
|
||||
.setName(d.getName())
|
||||
.setNginxBin(d.getNginxBin())
|
||||
.setNginxConf(d.getNginxConf())
|
||||
.setNginxWorkerProcesses(d.getNginxWorkerProcesses());
|
||||
}
|
||||
|
||||
public static SlbServer toSlbServer(SlbServerDo d) {
|
||||
return new SlbServer()
|
||||
.setEnable(d.isEnable())
|
||||
.setHostName(d.getHostName())
|
||||
.setIp(d.getIp());
|
||||
}
|
||||
|
||||
public static Vip toVip(SlbVipDo d) {
|
||||
return new Vip()
|
||||
.setIp(d.getIp());
|
||||
}
|
||||
|
||||
public static VirtualServer toVirtualServer(SlbVirtualServerDo d) {
|
||||
return new VirtualServer()
|
||||
.setName(d.getName())
|
||||
.setSsl(d.isIsSsl());
|
||||
}
|
||||
|
||||
/*Entity to Do*/
|
||||
|
||||
|
||||
public static ApplicationDo toApplicationDo(Application e) {
|
||||
return new ApplicationDo().setAppId(e.getAppId())
|
||||
.setName(e.getName());
|
||||
}
|
||||
|
||||
public static AppServerDo toAppServerDo(AppServer e) {
|
||||
return new AppServerDo()
|
||||
.setEnable(e.getEnable())
|
||||
.setFailTimeout(e.getFailTimeout())
|
||||
.setHealthy(e.getHealthy())
|
||||
.setMaxFails(e.getMaxFails())
|
||||
.setPort(e.getPort())
|
||||
.setWeight(e.getWeight());
|
||||
}
|
||||
|
||||
public static AppSlbDo toAppSlbDo(AppSlb e) {
|
||||
return new AppSlbDo()
|
||||
.setPath(e.getPath());
|
||||
}
|
||||
|
||||
public static SlbDomainDo toSlbDomainDo(Domain e) {
|
||||
return new SlbDomainDo()
|
||||
.setName(e.getName())
|
||||
.setPort(e.getPort());
|
||||
}
|
||||
|
||||
public static AppHealthCheckDo toAppHealthCheckDo(HealthCheck e) {
|
||||
return new AppHealthCheckDo()
|
||||
.setUri(e.getUri())
|
||||
.setId(e.getInterval())
|
||||
.setFails(e.getFails())
|
||||
.setPasses(e.getPasses());
|
||||
}
|
||||
|
||||
public static AppLoadBalancingMethodDo toAppLoadBalancingMethodDo(LoadBalancingMethod e) {
|
||||
return new AppLoadBalancingMethodDo()
|
||||
.setType(e.getType())
|
||||
.setValue(e.getValue());
|
||||
}
|
||||
|
||||
public static ServerDo toServerDo(Server e) {
|
||||
return new ServerDo()
|
||||
.setHostName(e.getHostName())
|
||||
.setIp(e.getIp())
|
||||
.setUp(e.getUp());
|
||||
}
|
||||
|
||||
public static SlbClusterDo toSlbClusterDo(SlbCluster e) {
|
||||
return new SlbClusterDo()
|
||||
.setName(e.getName())
|
||||
.setNginxBin(e.getNginxBin())
|
||||
.setNginxConf(e.getNginxConf())
|
||||
.setNginxWorkerProcesses(e.getNginxWorkerProcesses());
|
||||
}
|
||||
|
||||
public static SlbServerDo toSlbServerDo(SlbServer e) {
|
||||
return new SlbServerDo()
|
||||
.setHostName(e.getHostName())
|
||||
.setIp(e.getIp());
|
||||
}
|
||||
|
||||
public static SlbVipDo toSlbVipDo(Vip e) {
|
||||
return new SlbVipDo()
|
||||
.setIp(e.getIp());
|
||||
}
|
||||
|
||||
public static SlbVirtualServerDo toSlbVirtualServerDo(VirtualServer e) {
|
||||
return new SlbVirtualServerDo()
|
||||
.setIsSsl(e.isSsl())
|
||||
.setName(e.getName());
|
||||
}
|
||||
|
||||
}
|
15
src/main/java/com/ctrip/zeus/util/S.java
Normal file
15
src/main/java/com/ctrip/zeus/util/S.java
Normal file
|
@ -0,0 +1,15 @@
|
|||
package com.ctrip.zeus.util;
|
||||
|
||||
/**
|
||||
* @author:xingchaowang
|
||||
* @date: 3/6/2015.
|
||||
*/
|
||||
public class S {
|
||||
|
||||
public static void setPropertyDefaultValue(String propertyName, String defaultValue) {
|
||||
String val = System.getProperty(propertyName);
|
||||
if(val==null || val.trim().isEmpty()){
|
||||
System.setProperty(propertyName, defaultValue);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,3 +1,3 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<entities do-package="com.ctrip.zeus.dal.core" gen="true" />
|
||||
<entities do-package="com.ctrip.zeus.dal.core" gen="true" do-class-suffix="Do"/>
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
</entity>
|
||||
<entity name="virtual-server">
|
||||
<attribute name="name" value-type="String" />
|
||||
<attribute name="is-ssl" value-type="String" />
|
||||
<attribute name="ssl" value-type="boolean" />
|
||||
<entity-ref name="slb-cluster" />
|
||||
<entity-ref name="domain" type="list" names="domains" xml-indent="true" />
|
||||
</entity>
|
||||
|
@ -33,13 +33,13 @@
|
|||
</entity>
|
||||
<entity name="application">
|
||||
<attribute name="name" value-type="String" />
|
||||
<attribute name="app-id" value-type="int" />
|
||||
<entity-ref name="app-virtual-server" type="list" names="app-virtual-servers" xml-indent="true" />
|
||||
<attribute name="app-id" value-type="String" />
|
||||
<entity-ref name="app-slb" type="list" names="app-slbs" xml-indent="true" />
|
||||
<entity-ref name="health-check" />
|
||||
<entity-ref name="load-balancing-method" />
|
||||
<entity-ref name="app-server" type="list" names="app-servers" xml-indent="true" />
|
||||
</entity>
|
||||
<entity name="app-virtual-server">
|
||||
<entity name="app-slb">
|
||||
<element name="path" value-type="String" />
|
||||
<entity-ref name="virtual-server" />
|
||||
</entity>
|
||||
|
|
|
@ -34,7 +34,8 @@ CREATE TABLE IF NOT EXISTS `app_health_check` (
|
|||
`passes` int(11) NOT NULL DEFAULT '0',
|
||||
`created_time` timestamp NULL DEFAULT NULL,
|
||||
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `application_id` (`application_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
|
@ -48,7 +49,8 @@ CREATE TABLE IF NOT EXISTS `app_load_balancing_method` (
|
|||
`value` varchar(200) NOT NULL DEFAULT '0',
|
||||
`created_time` timestamp NULL DEFAULT NULL,
|
||||
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `application_id` (`application_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
|
@ -67,7 +69,23 @@ CREATE TABLE IF NOT EXISTS `app_server` (
|
|||
`enable` bit(1) NOT NULL DEFAULT b'0',
|
||||
`created_time` timestamp NULL DEFAULT NULL,
|
||||
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `application_id_server_id` (`application_id`,`server_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
|
||||
|
||||
-- Dumping structure for table zeus.app_slb
|
||||
CREATE TABLE IF NOT EXISTS `app_slb` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`application_id` bigint(20) NOT NULL DEFAULT '0',
|
||||
`slb_virtual_server_id` bigint(20) NOT NULL DEFAULT '0',
|
||||
`path` varchar(200) NOT NULL DEFAULT '0',
|
||||
`created_time` timestamp NULL DEFAULT NULL,
|
||||
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `application_id_slb_virtual_server_id` (`application_id`,`slb_virtual_server_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
|
|
57
src/test/java/com/ctrip/zeus/restful/ApiTest.java
Normal file
57
src/test/java/com/ctrip/zeus/restful/ApiTest.java
Normal file
|
@ -0,0 +1,57 @@
|
|||
package com.ctrip.zeus.restful;
|
||||
|
||||
import com.ctrip.zeus.client.SlbClusterClient;
|
||||
import com.ctrip.zeus.model.entity.*;
|
||||
import com.ctrip.zeus.server.SlbAdminServer;
|
||||
import com.ctrip.zeus.util.S;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* @author:xingchaowang
|
||||
* @date: 3/6/2015.
|
||||
*/
|
||||
public class ApiTest {
|
||||
|
||||
private static SlbAdminServer server;
|
||||
|
||||
@BeforeClass
|
||||
public static void setup() throws Exception {
|
||||
S.setPropertyDefaultValue("archaius.deployment.applicationId", "slb-admin");
|
||||
S.setPropertyDefaultValue("archaius.deployment.environment", "local");
|
||||
S.setPropertyDefaultValue("server.www.base-dir", new File("").getAbsolutePath() + "/src/main/www");
|
||||
S.setPropertyDefaultValue("server.temp-dir", new File("").getAbsolutePath() + "/target/temp");
|
||||
S.setPropertyDefaultValue("APP_HOME", new File("").getAbsolutePath());
|
||||
|
||||
server = new SlbAdminServer();
|
||||
server.start();
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void teardown() {
|
||||
server.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSlbCluster() {
|
||||
SlbClusterClient c = new SlbClusterClient("http://127.0.0.1:8099");
|
||||
c.getAll();
|
||||
|
||||
SlbCluster sc = new SlbCluster();
|
||||
sc.setName("default").setNginxBin("nginx").setNginxConf("/usr/local/nginx/conf").setNginxWorkerProcesses(1)
|
||||
.addVip(new Vip().setIp("192.168.1.1"))
|
||||
.addVip(new Vip().setIp("192.168.1.2"))
|
||||
.addSlbServer(new SlbServer().setHostName("slb001").setIp("192.168.10.1"))
|
||||
.addSlbServer(new SlbServer().setHostName("slb002").setIp("192.168.10.2"))
|
||||
.addVirtualServer(new VirtualServer().setName("vs001").setSsl(false)
|
||||
.addDomain(new Domain().setName("m.ctrip.com").setPort(80))
|
||||
.addDomain(new Domain().setName("m2.ctrip.com").setPort(80)))
|
||||
.addVirtualServer(new VirtualServer().setName("vs002").setSsl(false).addDomain(new Domain().setName("hotel.ctrip.com").setPort(80)));
|
||||
|
||||
c.add(sc);
|
||||
|
||||
}
|
||||
}
|
|
@ -12,14 +12,14 @@
|
|||
<slb-server ip="192.168.1.2" host-name="slb002" enable="true"/>
|
||||
</slb-servers>
|
||||
<virtual-servers>
|
||||
<virtual-server name="vs001" is-ssl="true|false">
|
||||
<virtual-server name="vs001" ssl="true">
|
||||
<slb-cluster/>
|
||||
<domains>
|
||||
<domain name="www.ctrip.com" port="80"/>
|
||||
<domain name="hotel.ctrip.com" port="80"/>
|
||||
</domains>
|
||||
</virtual-server>
|
||||
<virtual-server name="vs001" is-ssl="true|false">
|
||||
<virtual-server name="vs001" ssl="true">
|
||||
<slb-cluster/>
|
||||
<domains>
|
||||
<domain name="www.ctrip.com" port="80"/>
|
||||
|
@ -29,17 +29,17 @@
|
|||
</virtual-servers>
|
||||
</slb-cluster>
|
||||
|
||||
<application name="gateway" app-id="921822">
|
||||
<app-virtual-servers>
|
||||
<app-virtual-server>
|
||||
<application name="gateway" app-id="app921822">
|
||||
<app-slbs>
|
||||
<app-slb>
|
||||
<path>/hotel</path>
|
||||
<virtual-server/>
|
||||
</app-virtual-server>
|
||||
<app-virtual-server>
|
||||
</app-slb>
|
||||
<app-slb>
|
||||
<path>/hotel</path>
|
||||
<virtual-server/>
|
||||
</app-virtual-server>
|
||||
</app-virtual-servers>
|
||||
</app-slb>
|
||||
</app-slbs>
|
||||
<health-check interval="10" fails="2" passes="2">
|
||||
<uri>/health-check</uri>
|
||||
</health-check>
|
||||
|
|
Loading…
Reference in a new issue