删除程序增加防止Object被清空处理逻辑
This commit is contained in:
@@ -19,7 +19,7 @@ public class ScheduledPoolConfig implements SchedulingConfigurer {
|
|||||||
@Override
|
@Override
|
||||||
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
|
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
|
||||||
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
|
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
|
||||||
scheduler.setPoolSize(16);
|
scheduler.setPoolSize(32);
|
||||||
scheduler.initialize();
|
scheduler.initialize();
|
||||||
taskRegistrar.setScheduler(scheduler);
|
taskRegistrar.setScheduler(scheduler);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,25 @@ public class TsgUtil {
|
|||||||
throw new IllegalArgumentException("failed to get TSG system token.");
|
throw new IllegalArgumentException("failed to get TSG system token.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static JSONObject getObjectItemList(Integer objectId, String objectType) {
|
||||||
|
Stopwatch watch = Stopwatch.createStarted();
|
||||||
|
String response = HttpRequest.get(TSG_URL + "/v1/policy/object/" + objectId + "/item?page_no=1&page_size=1&type=" + objectType)
|
||||||
|
.header(Header.AUTHORIZATION, getToken())
|
||||||
|
.timeout(httpTimeOut)
|
||||||
|
.execute().body();
|
||||||
|
log.info("get tsg-api, cost {} seconds", watch.elapsed(TimeUnit.SECONDS));
|
||||||
|
if (StrUtil.isBlank(response)) {
|
||||||
|
log.error("get {} Object error, response: {}", objectId, response);
|
||||||
|
throw new RuntimeException("get " + objectId + " Object error, response: " + response);
|
||||||
|
}
|
||||||
|
JSONObject jsonObject = JSONUtil.parseObj(response);
|
||||||
|
if (!"200".equals(jsonObject.get("code").toString())) {
|
||||||
|
log.error("get {} Object error, response: {}", objectId, response);
|
||||||
|
throw new RuntimeException("get " + objectId + " Object error, response: " + response);
|
||||||
|
}
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
public static void updateObjectById(Integer id, Map<String, Object> body) {
|
public static void updateObjectById(Integer id, Map<String, Object> body) {
|
||||||
Stopwatch watch = Stopwatch.createStarted();
|
Stopwatch watch = Stopwatch.createStarted();
|
||||||
String response = HttpRequest.put(TSG_URL + "/v1/policy/object/" + id)
|
String response = HttpRequest.put(TSG_URL + "/v1/policy/object/" + id)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DatePattern;
|
|||||||
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateTime;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.BooleanUtil;
|
import cn.hutool.core.util.BooleanUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.json.JSONArray;
|
import cn.hutool.json.JSONArray;
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import com.geedge.common.constant.TsgObject;
|
import com.geedge.common.constant.TsgObject;
|
||||||
@@ -309,12 +310,49 @@ public class FqdnScheduler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
DateTime dateTime = DateUtil.offsetSecond(new Date(), offsetSecond).setTimeZone(TimeZone.getTimeZone("UTC"));
|
DateTime deleteCursor = DateUtil.offsetSecond(new Date(), offsetSecond).setTimeZone(TimeZone.getTimeZone("UTC"));
|
||||||
String datetimeZ = DateUtil.format(dateTime, DatePattern.UTC_PATTERN);
|
String deleteCursorStr = DateUtil.format(deleteCursor, DatePattern.UTC_PATTERN);
|
||||||
|
|
||||||
|
JSONObject objectItemList = TsgUtil.getObjectItemList(id, "fqdn");
|
||||||
|
Object data = objectItemList.get("data");
|
||||||
|
if (StrUtil.isEmptyIfStr(data)) {
|
||||||
|
log.warn("No item does not need to be deleted");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Map<String, Object> dataMap = (Map<String, Object>) data;
|
||||||
|
Object itemsObj = dataMap.get("items");
|
||||||
|
if (StrUtil.isEmptyIfStr(itemsObj)) {
|
||||||
|
log.warn("No item does not need to be deleted");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<Map<String, Object>> itemList = (List<Map<String, Object>>) itemsObj;
|
||||||
|
if (itemList.isEmpty()) {
|
||||||
|
log.warn("No item does not need to be deleted");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Map<String, Object> map = itemList.get(0);
|
||||||
|
if (StrUtil.isEmptyIfStr(map)) {
|
||||||
|
log.warn("No item does not need to be deleted");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Object itemObj = map.get("string");
|
||||||
|
if (StrUtil.isEmptyIfStr(itemObj)) {
|
||||||
|
log.warn("No item does not need to be deleted");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Map<String, Object> itemMap = (Map<String, Object>) itemObj;
|
||||||
|
Object createdTimeObj = itemMap.get("created_time");
|
||||||
|
DateTime latestCreatedDateTime = DateUtil.parse(createdTimeObj.toString());
|
||||||
|
int compare = DateUtil.compare(deleteCursor, latestCreatedDateTime);
|
||||||
|
if (compare > 0) {
|
||||||
|
log.warn("Does not need to be deleted, avoid item to empty");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Map<String, Object> form = Maps.newHashMap();
|
Map<String, Object> form = Maps.newHashMap();
|
||||||
form.put(TsgObject.KEY_OBJECT_TYPE, TsgObject.VALUE_OBJECT_TYPE_FQDN);
|
form.put(TsgObject.KEY_OBJECT_TYPE, TsgObject.VALUE_OBJECT_TYPE_FQDN);
|
||||||
form.put(TsgObject.KEY_VSYS_ID, TsgObject.VALUE_VSYS_ID_1);
|
form.put(TsgObject.KEY_VSYS_ID, TsgObject.VALUE_VSYS_ID_1);
|
||||||
form.put(TsgObject.KEY_CREATED_BEFORE, datetimeZ);
|
form.put(TsgObject.KEY_CREATED_BEFORE, deleteCursorStr);
|
||||||
TsgUtil.deleteItemOfObjectById(id, form);
|
TsgUtil.deleteItemOfObjectById(id, form);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("{}: failed to execute delete task. message: {}", id, e.getMessage());
|
log.error("{}: failed to execute delete task. message: {}", id, e.getMessage());
|
||||||
|
|||||||
@@ -512,12 +512,44 @@ public class IpScheduler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
DateTime dateTime = DateUtil.offsetSecond(new Date(), offsetSecond).setTimeZone(TimeZone.getTimeZone("UTC"));
|
DateTime deleteCursor = DateUtil.offsetSecond(new Date(), offsetSecond).setTimeZone(TimeZone.getTimeZone("UTC"));
|
||||||
String datetimeZ = DateUtil.format(dateTime, DatePattern.UTC_PATTERN);
|
String deleteCursorStr = DateUtil.format(deleteCursor, DatePattern.UTC_PATTERN);
|
||||||
|
|
||||||
|
JSONObject objectItemList = TsgUtil.getObjectItemList(id, "ip");
|
||||||
|
Object data = objectItemList.get("data");
|
||||||
|
if (StrUtil.isEmptyIfStr(data)) {
|
||||||
|
log.warn("No item does not need to be deleted");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Map<String, Object> dataMap = (Map<String, Object>) data;
|
||||||
|
Object itemsObj = dataMap.get("items");
|
||||||
|
if (StrUtil.isEmptyIfStr(itemsObj) || StrUtil.isBlankIfStr(itemsObj)) {
|
||||||
|
log.warn("No item does not need to be deleted");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<Map<String, Object>> itemList = (List<Map<String, Object>>) itemsObj;
|
||||||
|
if (itemList.isEmpty()) {
|
||||||
|
log.warn("No item does not need to be deleted");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Map<String, Object> map = itemList.get(0);
|
||||||
|
Object itemObj = map.get("ip");
|
||||||
|
if (StrUtil.isEmptyIfStr(itemObj)) {
|
||||||
|
log.warn("No item does not need to be deleted");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Map<String, Object> itemMap = (Map<String, Object>) itemObj;
|
||||||
|
Object createdTimeObj = itemMap.get("created_time");
|
||||||
|
DateTime latestCreatedDateTime = DateUtil.parse(createdTimeObj.toString());
|
||||||
|
int compare = DateUtil.compare(deleteCursor, latestCreatedDateTime);
|
||||||
|
if (compare > 0) {
|
||||||
|
log.warn("Does not need to be deleted, avoid item to empty");
|
||||||
|
return;
|
||||||
|
}
|
||||||
Map<String, Object> form = Maps.newHashMap();
|
Map<String, Object> form = Maps.newHashMap();
|
||||||
form.put(TsgObject.KEY_OBJECT_TYPE, TsgObject.VALUE_OBJECT_TYPE_IP);
|
form.put(TsgObject.KEY_OBJECT_TYPE, TsgObject.VALUE_OBJECT_TYPE_IP);
|
||||||
form.put(TsgObject.KEY_VSYS_ID, TsgObject.VALUE_VSYS_ID_1);
|
form.put(TsgObject.KEY_VSYS_ID, TsgObject.VALUE_VSYS_ID_1);
|
||||||
form.put(TsgObject.KEY_CREATED_BEFORE, datetimeZ);
|
form.put(TsgObject.KEY_CREATED_BEFORE, deleteCursorStr);
|
||||||
TsgUtil.deleteItemOfObjectById(id, form);
|
TsgUtil.deleteItemOfObjectById(id, form);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("{}: failed to execute delete task. message: {}", id, e.getMessage());
|
log.error("{}: failed to execute delete task. message: {}", id, e.getMessage());
|
||||||
|
|||||||
Reference in New Issue
Block a user