扫描新任务时,先过滤一次任务:任务含自己的节点时加入,否则直接将状态改为未能执行
This commit is contained in:
@@ -23,6 +23,7 @@ import com.nms.server.bean.LoopMissionRoundInfo;
|
||||
import com.nms.server.bean.MissionResult;
|
||||
import com.nms.server.bean.MissionResult2;
|
||||
import com.nms.server.bean.MissionStateTable;
|
||||
import com.nms.server.bean.ServerIpSegment;
|
||||
import com.nms.server.bean.Task1;
|
||||
import com.nms.server.bean.Task4;
|
||||
import com.nms.server.bean.Task6;
|
||||
@@ -90,19 +91,106 @@ public class UpgradeService extends CommonService{
|
||||
try {
|
||||
rs = dao.dbSelect(searchSQL.toString(), fields);
|
||||
if(rs!=null && rs.size()>0){
|
||||
Long serverId = Common.getServerTable().getId();
|
||||
boolean missionSingle = Constants.MISSION_SINGLE.equals("1") ? true : false;
|
||||
logger.info("开始加载新任务...过滤当前dc范围内的任务:" + (missionSingle ? "是" : "否"));
|
||||
//获取当前dc范围
|
||||
List<ServerIpSegment> ipSegList = Common.getServerTable().getIpSegList();
|
||||
for(Map<String, String> maps : rs){
|
||||
MissionStateTable mission = new MissionStateTable();
|
||||
// mission.setMissionName(maps.get("mission_name"));
|
||||
mission.setMissionId(StringUtils.isEmpty(maps.get("mission_id"))?null:Long.parseLong(maps.get("mission_id")));
|
||||
mission.setMissionType(StringUtils.isEmpty(maps.get("mission_type"))?null:Long.parseLong(maps.get("mission_type")) );
|
||||
mission.setMissionState(StringUtils.isEmpty(maps.get("mission_state"))?null:Long.parseLong(maps.get("mission_state")));
|
||||
mission.setSystemId(StringUtils.isEmpty(maps.get("system_id"))?null:Long.parseLong(maps.get("system_id")));
|
||||
mission.setGroupId(StringUtils.isEmpty(maps.get("group_id"))?null:Long.parseLong(maps.get("group_id")));
|
||||
mission.setStartTime(StringUtils.isEmpty(maps.get("start_time"))?null:format.parse(maps.get("start_time")));
|
||||
mission.setEndTime(StringUtils.isEmpty(maps.get("end_time"))?null:format.parse(maps.get("end_time")));
|
||||
mission.setLoopFlag(StringUtils.isEmpty(maps.get("is_loop"))?null:Long.parseLong(maps.get("is_loop")));
|
||||
mission.setLoopDelay(StringUtils.isEmpty(maps.get("loop_delay"))?null:Long.parseLong(maps.get("loop_delay")));
|
||||
mstList.add(mission);
|
||||
//是否加载任务
|
||||
boolean flag = false;
|
||||
//第一步,判断是否过滤dc范围外节点
|
||||
if (missionSingle) {
|
||||
logger.info("当前dc的server_id:" + serverId);
|
||||
|
||||
//第二步,获取每个任务下发的所有节点,判断是否在dc范围内,若一个在范围内的都没有就把任务状态改为失败
|
||||
//----查询任务下发的节点组ids/节点ids
|
||||
String messionType = maps.get("mission_type");
|
||||
StringBuffer mnSql = new StringBuffer();
|
||||
mnSql.append("SELECT mpt.node_ips_id, mpt.node_groups_id ");
|
||||
mnSql.append("FROM mission_state_table mst ");
|
||||
mnSql.append("LEFT JOIN mission_parameter_table" + messionType + " mpt ON mpt.mission_id=mst.mission_id ");
|
||||
mnSql.append("where mst.mission_id=" + maps.get("mission_id"));
|
||||
ArrayList<String> mnFields = new ArrayList<String>();
|
||||
mnFields.add("node_ips_id");
|
||||
mnFields.add("node_groups_id");
|
||||
ArrayList<Map<String, String>> mns = dao.dbSelect(mnSql.toString(), mnFields);
|
||||
|
||||
if (mns != null && mns.size() > 0) {
|
||||
for (Map<String, String> mn : mns) {
|
||||
//----根据节点组ids/节点ids查出seq_id
|
||||
StringBuffer nodeSQL = new StringBuffer();
|
||||
nodeSQL.append("select distinct nt.seq_id,nt.node_type ");
|
||||
nodeSQL.append("from node_table nt ");
|
||||
nodeSQL.append("where 1 = 1 ");
|
||||
nodeSQL.append(" and nvl(nt.seq_id,-1)<> -1 ");
|
||||
nodeSQL.append(" and nt.node_state = 0 ");
|
||||
ArrayList<String> nodeFields = new ArrayList<String>();
|
||||
nodeFields.add("seq_id");
|
||||
nodeFields.add("node_type");
|
||||
if(StringUtils.isNotBlank(mn.get("node_ips_id"))){
|
||||
nodeSQL.append(" and nt.NODE_ID in(" + mn.get("node_ips_id") + ") ");
|
||||
}else{
|
||||
if(StringUtils.isNotBlank(mn.get("node_groups_id"))){
|
||||
String startWithConnectBy = dao.startWithConnectBy("select nt.group_id from NODEGROUP_TABLE nt where nt.leaf_group = 1 ", " nt.group_id in (" + mn.get("node_groups_id") + ") ", "group_id", "parent_group_id");
|
||||
nodeSQL.append(" and nt.node_group_id in( " + startWithConnectBy + ")");
|
||||
}
|
||||
}
|
||||
ArrayList<Map<String, String>> nodeMapList = dao.dbSelect(nodeSQL.toString(), nodeFields);
|
||||
//----拼写uuid串,用于校验管理范围外IP
|
||||
StringBuffer uuidStr = new StringBuffer("0");
|
||||
if (nodeMapList != null && nodeMapList.size() > 0) {
|
||||
for(Map<String, String> map : nodeMapList){
|
||||
if(StringUtils.isNotEmpty(map.get("seq_id"))){
|
||||
uuidStr.append("," + map.get("seq_id"));
|
||||
}
|
||||
}
|
||||
}
|
||||
logger.info("mission_id:" + maps.get("mission_id") + ",seq_id范围:" + uuidStr.toString());
|
||||
|
||||
StringBuffer omNodeSql = new StringBuffer("select distinct nt.seq_id from node_table nt where 1=1 ");
|
||||
if(ipSegList!=null && ipSegList.size() > 0){
|
||||
for(ServerIpSegment map : ipSegList){
|
||||
omNodeSql.append(" and (ipn < '" + map.getStartIpn() + "' or ipn > '" + map.getEndIpn() + "')");
|
||||
}
|
||||
}
|
||||
omNodeSql.append("and nt.seq_id in (" + uuidStr + ")");
|
||||
ArrayList<String> omNodeFields = new ArrayList<String>();
|
||||
omNodeFields.add("seq_id");
|
||||
ArrayList<Map<String, String>> omNodeMapList = dao.dbSelect(omNodeSql.toString(), omNodeFields);
|
||||
|
||||
if (omNodeMapList != null && nodeMapList != null) {
|
||||
if (omNodeMapList.size() < nodeMapList.size()) {
|
||||
flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
flag = true;
|
||||
}
|
||||
|
||||
//任务范围含有dc范围内节点则加载任务,否则直接将任务状态改为未能执行
|
||||
if (flag) {
|
||||
logger.info("任务节点在dc范围内,开始加载...");
|
||||
MissionStateTable mission = new MissionStateTable();
|
||||
// mission.setMissionName(maps.get("mission_name"));
|
||||
mission.setMissionId(StringUtils.isEmpty(maps.get("mission_id"))?null:Long.parseLong(maps.get("mission_id")));
|
||||
mission.setMissionType(StringUtils.isEmpty(maps.get("mission_type"))?null:Long.parseLong(maps.get("mission_type")) );
|
||||
mission.setMissionState(StringUtils.isEmpty(maps.get("mission_state"))?null:Long.parseLong(maps.get("mission_state")));
|
||||
mission.setSystemId(StringUtils.isEmpty(maps.get("system_id"))?null:Long.parseLong(maps.get("system_id")));
|
||||
mission.setGroupId(StringUtils.isEmpty(maps.get("group_id"))?null:Long.parseLong(maps.get("group_id")));
|
||||
mission.setStartTime(StringUtils.isEmpty(maps.get("start_time"))?null:format.parse(maps.get("start_time")));
|
||||
mission.setEndTime(StringUtils.isEmpty(maps.get("end_time"))?null:format.parse(maps.get("end_time")));
|
||||
mission.setLoopFlag(StringUtils.isEmpty(maps.get("is_loop"))?null:Long.parseLong(maps.get("is_loop")));
|
||||
mission.setLoopDelay(StringUtils.isEmpty(maps.get("loop_delay"))?null:Long.parseLong(maps.get("loop_delay")));
|
||||
mstList.add(mission);
|
||||
} else {
|
||||
String cancelSql = "update mission_state_table set mission_state=4 where mission_id=" + maps.get("mission_id");
|
||||
dao.dbUpdate(cancelSql);
|
||||
logger.info("任务节点不在dc范围内,已取消");
|
||||
}
|
||||
}
|
||||
}
|
||||
return mstList;
|
||||
@@ -902,8 +990,19 @@ public class UpgradeService extends CommonService{
|
||||
}
|
||||
|
||||
//查询任务下发节点sql-管理范围外节点
|
||||
boolean missionSingle = Constants.MISSION_SINGLE.equals("1") ? true : false;
|
||||
StringBuffer msSql = new StringBuffer("");
|
||||
if (missionSingle) {
|
||||
Long serverId = Common.getServerTable().getId();
|
||||
msSql.append("and sis.server_id=");
|
||||
msSql.append(serverId);
|
||||
msSql.append(" ");
|
||||
}
|
||||
|
||||
ArrayList<String> ipnSegmentFields = new ArrayList<String>();
|
||||
StringBuffer ipnSegmentSQL = new StringBuffer("select sis.start_ipn,sis.end_ipn from server_ip_segment sis left join server_table st on st.id = sis.server_id where st.server_state='0' and nvl(sis.segment_state,0) <>-1");
|
||||
StringBuffer ipnSegmentSQL = new StringBuffer("select sis.start_ipn,sis.end_ipn from server_ip_segment sis left join server_table st on st.id = sis.server_id where st.server_state='0' and nvl(sis.segment_state,0) <>-1 ");
|
||||
ipnSegmentSQL.append(msSql);
|
||||
|
||||
ipnSegmentFields.add("start_ipn");
|
||||
ipnSegmentFields.add("end_ipn");
|
||||
ArrayList<Map<String, String>> omNodeMapList = dao.dbSelect(ipnSegmentSQL.toString(), ipnSegmentFields);
|
||||
@@ -952,7 +1051,7 @@ public class UpgradeService extends CommonService{
|
||||
if(omNodeMapList!= null && omNodeMapList.size()>0){
|
||||
omNode:for(Map<String, String> map : omNodeMapList){
|
||||
if(seqIdTmp.equals(map.get("seq_id"))){//管理范围外节点失败结果
|
||||
params.add(new String[]{curMissionId.longValue()+"",seqIdTmp,"1",MissionConstants.ERROR_RESULT_UN_MANAGEMENT_NODE});
|
||||
//params.add(new String[]{curMissionId.longValue()+"",seqIdTmp,"1",MissionConstants.ERROR_RESULT_UN_MANAGEMENT_NODE});
|
||||
continue node;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user