summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/geedge/common/config/ScheduledPoolConfig.java2
-rw-r--r--src/main/java/com/geedge/common/util/TsgUtil.java19
-rw-r--r--src/main/java/com/geedge/scheduler/FqdnScheduler.java44
-rw-r--r--src/main/java/com/geedge/scheduler/IpScheduler.java38
4 files changed, 96 insertions, 7 deletions
diff --git a/src/main/java/com/geedge/common/config/ScheduledPoolConfig.java b/src/main/java/com/geedge/common/config/ScheduledPoolConfig.java
index d538ca7..3cb0d29 100644
--- a/src/main/java/com/geedge/common/config/ScheduledPoolConfig.java
+++ b/src/main/java/com/geedge/common/config/ScheduledPoolConfig.java
@@ -19,7 +19,7 @@ public class ScheduledPoolConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
- scheduler.setPoolSize(16);
+ scheduler.setPoolSize(32);
scheduler.initialize();
taskRegistrar.setScheduler(scheduler);
}
diff --git a/src/main/java/com/geedge/common/util/TsgUtil.java b/src/main/java/com/geedge/common/util/TsgUtil.java
index 3e5b995..9bf9134 100644
--- a/src/main/java/com/geedge/common/util/TsgUtil.java
+++ b/src/main/java/com/geedge/common/util/TsgUtil.java
@@ -57,6 +57,25 @@ public class TsgUtil {
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) {
Stopwatch watch = Stopwatch.createStarted();
String response = HttpRequest.put(TSG_URL + "/v1/policy/object/" + id)
diff --git a/src/main/java/com/geedge/scheduler/FqdnScheduler.java b/src/main/java/com/geedge/scheduler/FqdnScheduler.java
index 5e08bcf..c076963 100644
--- a/src/main/java/com/geedge/scheduler/FqdnScheduler.java
+++ b/src/main/java/com/geedge/scheduler/FqdnScheduler.java
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.BooleanUtil;
+import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.geedge.common.constant.TsgObject;
@@ -309,12 +310,49 @@ public class FqdnScheduler {
return;
}
try {
- DateTime dateTime = DateUtil.offsetSecond(new Date(), offsetSecond).setTimeZone(TimeZone.getTimeZone("UTC"));
- String datetimeZ = DateUtil.format(dateTime, DatePattern.UTC_PATTERN);
+ DateTime deleteCursor = DateUtil.offsetSecond(new Date(), offsetSecond).setTimeZone(TimeZone.getTimeZone("UTC"));
+ 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();
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_CREATED_BEFORE, datetimeZ);
+ form.put(TsgObject.KEY_CREATED_BEFORE, deleteCursorStr);
TsgUtil.deleteItemOfObjectById(id, form);
} catch (Exception e) {
log.error("{}: failed to execute delete task. message: {}", id, e.getMessage());
diff --git a/src/main/java/com/geedge/scheduler/IpScheduler.java b/src/main/java/com/geedge/scheduler/IpScheduler.java
index bd41728..bc5c854 100644
--- a/src/main/java/com/geedge/scheduler/IpScheduler.java
+++ b/src/main/java/com/geedge/scheduler/IpScheduler.java
@@ -512,12 +512,44 @@ public class IpScheduler {
return;
}
try {
- DateTime dateTime = DateUtil.offsetSecond(new Date(), offsetSecond).setTimeZone(TimeZone.getTimeZone("UTC"));
- String datetimeZ = DateUtil.format(dateTime, DatePattern.UTC_PATTERN);
+ DateTime deleteCursor = DateUtil.offsetSecond(new Date(), offsetSecond).setTimeZone(TimeZone.getTimeZone("UTC"));
+ 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();
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_CREATED_BEFORE, datetimeZ);
+ form.put(TsgObject.KEY_CREATED_BEFORE, deleteCursorStr);
TsgUtil.deleteItemOfObjectById(id, form);
} catch (Exception e) {
log.error("{}: failed to execute delete task. message: {}", id, e.getMessage());