add auto fill service

This commit is contained in:
Mengyi Zhou 2015-10-29 13:18:13 +08:00
parent 80a5c1adeb
commit 6828d2e058
7 changed files with 65 additions and 59 deletions

View file

@ -0,0 +1,55 @@
package com.ctrip.zeus.service.model;
import com.ctrip.zeus.model.entity.*;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* Created by zhoumy on 2015/10/29.
*/
@Service("autoFiller")
public class AutoFiller {
@Resource
private VirtualServerRepository virtualServerRepository;
public void autofill(Group group) throws Exception {
for (GroupVirtualServer gvs : group.getGroupVirtualServers()) {
VirtualServer tvs = gvs.getVirtualServer();
VirtualServer vs = virtualServerRepository.getById(gvs.getVirtualServer().getId());
tvs.setName(vs.getName()).setSlbId(vs.getSlbId()).setPort(vs.getPort()).setSsl(vs.getSsl());
tvs.getDomains().clear();
for (Domain domain : vs.getDomains()) {
tvs.getDomains().add(domain);
}
gvs.setPriority(gvs.getPriority() == null ? 1000 : gvs.getPriority());
}
HealthCheck hc = group.getHealthCheck();
if (hc != null) {
hc.setIntervals(hc.getIntervals() == null ? 5000 : hc.getIntervals())
.setFails(hc.getFails() == null ? 5 : hc.getFails())
.setPasses(hc.getPasses() == null ? 1 : hc.getPasses());
}
LoadBalancingMethod lbm = group.getLoadBalancingMethod();
if (lbm == null)
lbm = new LoadBalancingMethod();
lbm.setType("roundrobin").setValue(lbm.getValue() == null ? "Default" : lbm.getValue());
for (GroupServer groupServer : group.getGroupServers()) {
groupServer.setWeight(groupServer.getWeight() == null ? 5 : groupServer.getWeight())
.setFailTimeout(groupServer.getFailTimeout() == null ? 30 : groupServer.getFailTimeout())
.setFailTimeout(groupServer.getMaxFails() == null ? 0 : groupServer.getMaxFails());
}
}
public void autofill(Slb slb) throws Exception {
slb.setNginxBin("/opt/app/nginx/sbin").setNginxConf("/opt/app/nginx/conf").setNginxWorkerProcesses(9)
.setStatus(slb.getStatus() == null ? "Default" : slb.getStatus());
for (VirtualServer virtualServer : slb.getVirtualServers()) {
autofill(virtualServer);
}
}
public void autofill(VirtualServer virtualServer) {
virtualServer.setSsl(virtualServer.getSsl() == null ? false : virtualServer.getSsl());
}
}

View file

@ -23,8 +23,6 @@ public interface GroupRepository extends Repository {
int delete(Long groupId) throws Exception;
void autofill(Group group) throws Exception;
@Deprecated
List<Group> listGroupsByGroupServer(String groupServerIp) throws Exception;

View file

@ -23,8 +23,6 @@ public interface SlbRepository extends Repository {
Slb updateVersion(Long slbId) throws Exception;
void autofill(Slb slb) throws Exception;
@Deprecated
List<Long> portSlbRel() throws Exception;

View file

@ -19,8 +19,6 @@ public interface VirtualServerRepository {
void deleteVirtualServer(Long virtualServerId) throws Exception;
void autofill(VirtualServer virtualServer);
@Deprecated
List<Long> portVirtualServerRel() throws Exception;

View file

@ -22,7 +22,7 @@ public class GroupRepositoryImpl implements GroupRepository {
@Resource
private GroupCriteriaQuery groupCriteriaQuery;
@Resource
private VirtualServerRepository virtualServerRepository;
private AutoFiller autoFiller;
@Resource
private ArchiveService archiveService;
@Resource
@ -55,7 +55,7 @@ public class GroupRepositoryImpl implements GroupRepository {
@Override
public Group add(Group group) throws Exception {
groupModelValidator.validate(group);
autofill(group);
autoFiller.autofill(group);
groupEntityManager.add(group);
return group;
}
@ -65,7 +65,7 @@ public class GroupRepositoryImpl implements GroupRepository {
if (!groupModelValidator.exists(group.getId()))
throw new ValidationException("Group with id " + group.getId() + "does not exist.");
groupModelValidator.validate(group);
autofill(group);
autoFiller.autofill(group);
groupEntityManager.update(group);
return group;
}
@ -76,7 +76,7 @@ public class GroupRepositoryImpl implements GroupRepository {
List<Group> result = new ArrayList<>();
for (Long groupId : groupIds) {
Group g = getById(groupId);
autofill(g);
autoFiller.autofill(g);
groupEntityManager.update(g);
result.add(g);
}
@ -89,34 +89,6 @@ public class GroupRepositoryImpl implements GroupRepository {
return groupEntityManager.delete(groupId);
}
@Override
public void autofill(Group group) throws Exception {
for (GroupVirtualServer gvs : group.getGroupVirtualServers()) {
VirtualServer tvs = gvs.getVirtualServer();
VirtualServer vs = virtualServerRepository.getById(gvs.getVirtualServer().getId());
tvs.setName(vs.getName()).setSlbId(vs.getSlbId()).setPort(vs.getPort()).setSsl(vs.getSsl());
tvs.getDomains().clear();
for (Domain domain : vs.getDomains()) {
tvs.getDomains().add(domain);
}
}
HealthCheck hc = group.getHealthCheck();
if (hc != null) {
hc.setIntervals(hc.getIntervals() == null ? 5000 : hc.getIntervals())
.setFails(hc.getFails() == null ? 5 : hc.getFails())
.setPasses(hc.getPasses() == null ? 1 : hc.getPasses());
}
LoadBalancingMethod lbm = group.getLoadBalancingMethod();
if (lbm == null)
lbm = new LoadBalancingMethod();
lbm.setType("roundrobin").setValue(lbm.getValue() == null ? "Default" : lbm.getValue());
for (GroupServer groupServer : group.getGroupServers()) {
groupServer.setWeight(groupServer.getWeight() == null ? 5 : groupServer.getWeight())
.setFailTimeout(groupServer.getFailTimeout() == null ? 30 : groupServer.getFailTimeout())
.setFailTimeout(groupServer.getMaxFails() == null ? 0 : groupServer.getMaxFails());
}
}
@Override
public List<Group> listGroupsByGroupServer(String groupServerIp) throws Exception {
Set<Long> groupIds = groupCriteriaQuery.queryByGroupServerIp(groupServerIp);

View file

@ -5,10 +5,7 @@ import com.ctrip.zeus.exceptions.ValidationException;
import com.ctrip.zeus.model.entity.Slb;
import com.ctrip.zeus.model.entity.SlbServer;
import com.ctrip.zeus.model.entity.VirtualServer;
import com.ctrip.zeus.service.model.ArchiveService;
import com.ctrip.zeus.service.model.GroupMemberRepository;
import com.ctrip.zeus.service.model.VirtualServerRepository;
import com.ctrip.zeus.service.model.SlbRepository;
import com.ctrip.zeus.service.model.*;
import com.ctrip.zeus.service.model.handler.SlbQuery;
import com.ctrip.zeus.service.model.handler.SlbSync;
import com.ctrip.zeus.service.model.handler.SlbValidator;
@ -46,6 +43,8 @@ public class SlbRepositoryImpl implements SlbRepository {
private SlbValidator slbModelValidator;
@Resource
private VirtualServerValidator virtualServerModelValidator;
@Resource
private AutoFiller autoFiller;
@Override
public List<Slb> list() throws Exception {
@ -100,7 +99,7 @@ public class SlbRepositoryImpl implements SlbRepository {
public Slb add(Slb slb) throws Exception {
slbModelValidator.validate(slb);
virtualServerModelValidator.validateVirtualServers(slb.getVirtualServers());
autofill(slb);
autoFiller.autofill(slb);
slbEntityManager.add(slb);
for (SlbServer slbServer : slb.getSlbServers()) {
@ -116,7 +115,7 @@ public class SlbRepositoryImpl implements SlbRepository {
@Override
public Slb update(Slb slb) throws Exception {
slbModelValidator.validate(slb);
autofill(slb);
autoFiller.autofill(slb);
freshVirtualServers(slb);
slbEntityManager.update(slb);
@ -143,15 +142,6 @@ public class SlbRepositoryImpl implements SlbRepository {
return slb;
}
@Override
public void autofill(Slb slb) throws Exception {
slb.setNginxBin("/opt/app/nginx/sbin").setNginxConf("/opt/app/nginx/conf").setNginxWorkerProcesses(9)
.setStatus(slb.getStatus() == null ? "Default" : slb.getStatus());
for (VirtualServer virtualServer : slb.getVirtualServers()) {
virtualServerRepository.autofill(virtualServer);
}
}
@Override
public List<Long> portSlbRel() throws Exception {
Set<Long> slbIds = slbCriteriaQuery.queryAll();
@ -167,7 +157,7 @@ public class SlbRepositoryImpl implements SlbRepository {
private Slb fresh(Long slbId) throws Exception {
Slb slb = getById(slbId);
autofill(slb);
autoFiller.autofill(slb);
freshVirtualServers(slb);
return slb;
}

View file

@ -93,11 +93,6 @@ public class VirtualServerRepositoryImpl implements VirtualServerRepository {
virtualServerEntityManager.deleteVirtualServer(virtualServerId);
}
@Override
public void autofill(VirtualServer virtualServer) {
virtualServer.setSsl(virtualServer.getSsl() == null ? false : virtualServer.getSsl());
}
@Override
public List<Long> portVirtualServerRel() throws Exception {
List<SlbVirtualServerDo> l = slbVirtualServerDao.findAll(SlbVirtualServerEntity.READSET_FULL);