扫描新任务时,先过滤一次任务:任务含自己的节点时加入,否则直接将状态改为未能执行
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.MissionResult;
|
||||||
import com.nms.server.bean.MissionResult2;
|
import com.nms.server.bean.MissionResult2;
|
||||||
import com.nms.server.bean.MissionStateTable;
|
import com.nms.server.bean.MissionStateTable;
|
||||||
|
import com.nms.server.bean.ServerIpSegment;
|
||||||
import com.nms.server.bean.Task1;
|
import com.nms.server.bean.Task1;
|
||||||
import com.nms.server.bean.Task4;
|
import com.nms.server.bean.Task4;
|
||||||
import com.nms.server.bean.Task6;
|
import com.nms.server.bean.Task6;
|
||||||
@@ -90,9 +91,91 @@ public class UpgradeService extends CommonService{
|
|||||||
try {
|
try {
|
||||||
rs = dao.dbSelect(searchSQL.toString(), fields);
|
rs = dao.dbSelect(searchSQL.toString(), fields);
|
||||||
if(rs!=null && rs.size()>0){
|
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){
|
for(Map<String, String> maps : rs){
|
||||||
|
//是否加载任务
|
||||||
|
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();
|
MissionStateTable mission = new MissionStateTable();
|
||||||
// mission.setMissionName(maps.get("mission_name"));
|
// mission.setMissionName(maps.get("mission_name"));
|
||||||
mission.setMissionId(StringUtils.isEmpty(maps.get("mission_id"))?null:Long.parseLong(maps.get("mission_id")));
|
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.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.setMissionState(StringUtils.isEmpty(maps.get("mission_state"))?null:Long.parseLong(maps.get("mission_state")));
|
||||||
@@ -103,6 +186,11 @@ public class UpgradeService extends CommonService{
|
|||||||
mission.setLoopFlag(StringUtils.isEmpty(maps.get("is_loop"))?null:Long.parseLong(maps.get("is_loop")));
|
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")));
|
mission.setLoopDelay(StringUtils.isEmpty(maps.get("loop_delay"))?null:Long.parseLong(maps.get("loop_delay")));
|
||||||
mstList.add(mission);
|
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;
|
return mstList;
|
||||||
@@ -902,8 +990,19 @@ public class UpgradeService extends CommonService{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//查询任务下发节点sql-管理范围外节点
|
//查询任务下发节点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>();
|
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("start_ipn");
|
||||||
ipnSegmentFields.add("end_ipn");
|
ipnSegmentFields.add("end_ipn");
|
||||||
ArrayList<Map<String, String>> omNodeMapList = dao.dbSelect(ipnSegmentSQL.toString(), ipnSegmentFields);
|
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){
|
if(omNodeMapList!= null && omNodeMapList.size()>0){
|
||||||
omNode:for(Map<String, String> map : omNodeMapList){
|
omNode:for(Map<String, String> map : omNodeMapList){
|
||||||
if(seqIdTmp.equals(map.get("seq_id"))){//管理范围外节点失败结果
|
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;
|
continue node;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user