REM:
1. 修改处置任务判断处置设备是否支持的方法
This commit is contained in:
HuangXin 2020-10-09 11:13:21 +08:00
parent 3acf82d3be
commit 9e912dcfc3
1 changed files with 28 additions and 23 deletions

View File

@ -97,10 +97,11 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
MulReturnType<ErrorCode, Long> ret; MulReturnType<ErrorCode, Long> ret;
// 调用设备执行处置任务 // 调用设备执行处置任务
ret = ai.getDb().stopDispose(disposeTask.getDisposeObject(), disposeTask.getDisposeCapacity(), null, null, null); ret = ai.getDb()
.stopDispose(disposeTask.getDisposeObject(), disposeTask.getDisposeCapacity(), null, null, null);
if (ret.getFirstParam() == ErrorCode.ERR_OK) { if (ret.getFirstParam() == ErrorCode.ERR_OK) {
deviceTaskManager.setAttackTypeStatus(deviceTask.getId(),disposeTask.getFlowDirection(), 0L); deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), disposeTask.getFlowDirection(), 0L);
log.info("VIRTUAL_DISPOSE stop task succeed: {}", deviceTask); log.info("VIRTUAL_DISPOSE stop task succeed: {}", deviceTask);
} else { } else {
log.error("VIRTUAL_DISPOSE stop task error {}: {}", ret.getFirstParam(), deviceTask); log.error("VIRTUAL_DISPOSE stop task error {}: {}", ret.getFirstParam(), deviceTask);
@ -183,7 +184,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
// 设置任务状态为结束 // 设置任务状态为结束
deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_FINISHED); deviceTaskManager.changeDisposeDeviceTaskInfoStatus(deviceTask.getId(), DisposeTaskStatus.TASK_FINISHED);
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), 0); deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), 0);
deviceTaskManager.setAttackTypeStatus(deviceTask.getId(),disposeTask.getFlowDirection(), 0L); deviceTaskManager.setAttackTypeStatus(deviceTask.getId(), disposeTask.getFlowDirection(), 0L);
} else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES) { } else if (deviceTask.getErrRetry() < DisposeConfigValue.CALL_ERROR_RETRY_TIMES) {
// 记录任务出错重试次数 // 记录任务出错重试次数
deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1); deviceTaskManager.setTaskErrRetryTimes(deviceTask.getId(), deviceTask.getErrRetry() + 1);
@ -293,7 +294,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
// 出方向 // 出方向
if (disposeTask.getFlowDirection() != NetflowDirection.DIRECTION_IN) { if (disposeTask.getFlowDirection() != NetflowDirection.DIRECTION_IN) {
if (!devTask.getExecAttackTypeOut().equals(devTask.getTaskAttackType()) if (!devTask.getExecAttackTypeOut().equals(devTask.getTaskAttackType())
|| !devTask.getExecAttackTypeOut().equals(devTask.getAttackTypeStatusOut())) { || !devTask.getExecAttackTypeOut().equals(devTask.getAttackTypeStatusOut())) {
taskSetupSucceed = false; taskSetupSucceed = false;
} }
} }
@ -301,7 +302,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
// 入方向 // 入方向
if (disposeTask.getFlowDirection() != NetflowDirection.DIRECTION_OUT) { if (disposeTask.getFlowDirection() != NetflowDirection.DIRECTION_OUT) {
if (!devTask.getExecAttackTypeIn().equals(devTask.getTaskAttackType()) if (!devTask.getExecAttackTypeIn().equals(devTask.getTaskAttackType())
|| !devTask.getExecAttackTypeIn().equals(devTask.getAttackTypeStatusIn())) { || !devTask.getExecAttackTypeIn().equals(devTask.getAttackTypeStatusIn())) {
taskSetupSucceed = false; taskSetupSucceed = false;
} }
} }
@ -431,22 +432,26 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
// 设置任务状态, 开始创建任务 // 设置任务状态, 开始创建任务
disposeTaskManager.changeDisposeTaskStatus(v.getId(), DisposeTaskStatus.TASK_STARTING); disposeTaskManager.changeDisposeTaskStatus(v.getId(), DisposeTaskStatus.TASK_STARTING);
// 为当前所有可用处置设备创建对应的处置任务 // 检查改任务是否能够被处置
disposeAbilityRouterService.getAllAbilityDevices().stream() ErrorCode ret = disposeAbilityRouterService.verifyDisposeCapacity(v.getDeviceId(),
// 判断是否是当前设备的处置任务 v.getDisposeObject(),
.filter(f -> v.getDeviceId() == -1 || f.getDev().getId().equals(v.getDeviceId())) v.getDisposeCapacity());
// 当前设备是否支持该处置能力
.filter(c -> c.getDev().getDevCapacity().stream().anyMatch(m -> m.getCapacityType() == v
.getDisposeCapacity()))
.filter(c -> c.getDb().isCarryProtectIp(v.getDisposeObject()))
.forEach(d -> {
log.info("Add dispose task for device: {}", d.getDev());
if (!deviceTaskManager.addDisposeDeviceTaskInfo(v.getId(), d.getDev().getId(), if (ret != ErrorCode.ERR_OK) {
d.getDb().toDeviceAttackType(v.getAttackType()))) { log.warn("{}: Not found support dispose device for [{}]", ret, v);
log.error("Add task {} to device {} error", v, d); continue;
} }
});
// 为当前所有可用处置设备创建对应的处置任务
disposeAbilityRouterService.getAllAbilityDevices().forEach(d -> {
log.info("Add dispose task for device: {}", d.getDev());
if (!deviceTaskManager.addDisposeDeviceTaskInfo(v.getId(), d.getDev().getId(),
d.getDb()
.toDeviceAttackType(v.getAttackType()))) {
log.error("Add task {} to device {} error", v, d);
}
});
} }
} }
@ -467,7 +472,7 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
AbilityInfo ai = disposeAbilityRouterService.getAbilityDevice(v.getDeviceId()); AbilityInfo ai = disposeAbilityRouterService.getAbilityDevice(v.getDeviceId());
// 如果设备已经删除或者禁用跳过处理 // 如果设备已经删除或者禁用跳过处理
if(ai == null) { if (ai == null) {
continue; continue;
} }
@ -519,8 +524,8 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
// 判断任务是否应当停止 // 判断任务是否应当停止
if (DisposeTaskStatus.TASK_NEW.equals(task.getCurrentStatus()) if (DisposeTaskStatus.TASK_NEW.equals(task.getCurrentStatus())
|| DisposeTaskStatus.TASK_STARTING.equals(task.getCurrentStatus()) || DisposeTaskStatus.TASK_STARTING.equals(task.getCurrentStatus())
|| DisposeTaskStatus.TASK_STARTED.equals(task.getCurrentStatus())) { || DisposeTaskStatus.TASK_STARTED.equals(task.getCurrentStatus())) {
// 判断任务是否到达停止时间 // 判断任务是否到达停止时间
if (Helper.getTimestampDiffNow(task.getPlanEndTime()) < 0) { if (Helper.getTimestampDiffNow(task.getPlanEndTime()) < 0) {
continue; continue;