Skip to content

Commit 7f3185e

Browse files
authored
Merge pull request #384 from weibaohui/lua-fix
refactor(lua): 巡检时遇到集群未连接时,跳过该集群,等待下次触发执行
2 parents 1c130d8 + bce659a commit 7f3185e

File tree

2 files changed

+41
-8
lines changed

2 files changed

+41
-8
lines changed

pkg/lua/lua_schedule.go

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"github.com/weibaohui/k8m/pkg/comm/utils"
1212
"github.com/weibaohui/k8m/pkg/constants"
1313
"github.com/weibaohui/k8m/pkg/models"
14-
"github.com/weibaohui/k8m/pkg/service"
1514
"github.com/weibaohui/kom/kom"
1615
"gorm.io/gorm"
1716
"k8s.io/klog/v2"
@@ -89,14 +88,47 @@ const TriggerTypeCron = "cron"
8988
func (s *ScheduleBackground) RunByCluster(ctx context.Context, scheduleID *uint, cluster string, triggerType string) (*models.InspectionRecord, error) {
9089
k := kom.Cluster(cluster)
9190
if k == nil {
92-
klog.V(6).Infof("巡检 集群【%s】,但是该集群未连接,尝试连接该集群", cluster)
93-
service.ClusterService().Connect(cluster)
94-
k = kom.Cluster(cluster)
95-
if k == nil {
96-
klog.Errorf("巡检 集群【%s】,但是该集群未连接,尝试连接该集群失败,跳过执行", cluster)
97-
return nil, fmt.Errorf("巡检 集群【%s】未连接,尝试连接未成功,跳过执行", cluster)
91+
klog.V(6).Infof("巡检 集群【%s】未连接,跳过执行", cluster)
92+
if scheduleID == nil {
93+
return nil, fmt.Errorf("参数错误,scheduleID不能为空")
9894
}
99-
klog.V(6).Infof("巡检 集群【%s】,已连接", cluster)
95+
96+
// 获取巡检计划名称快照
97+
schedule := &models.InspectionSchedule{}
98+
schedule.ID = *scheduleID
99+
schedule, err := schedule.GetOne(nil)
100+
if err != nil {
101+
return nil, fmt.Errorf("根据ID获取巡检计划失败: %w", err)
102+
}
103+
104+
// 创建一条“跳过”记录
105+
end := time.Now()
106+
record := &models.InspectionRecord{
107+
ScheduleID: scheduleID,
108+
ScheduleName: schedule.Name,
109+
Cluster: cluster,
110+
TriggerType: triggerType,
111+
Status: "skipped",
112+
StartTime: end,
113+
EndTime: &end,
114+
ErrorCount: 0,
115+
ResultRaw: fmt.Sprintf("巡检因集群未连接而跳过:%s", cluster),
116+
}
117+
if err := record.Save(nil); err != nil {
118+
return nil, fmt.Errorf("保存巡检跳过记录失败: %w", err)
119+
}
120+
121+
// 更新巡检计划的最近一次运行时间与错误数
122+
schedule.LastRunTime = &end
123+
schedule.ErrorCount = 0
124+
if saveErr := schedule.Save(nil, func(db *gorm.DB) *gorm.DB {
125+
return db.Select("last_run_time", "error_count")
126+
}); saveErr != nil {
127+
klog.Errorf("更新巡检计划运行结果失败,计划ID=%d, 错误: %v", schedule.ID, saveErr)
128+
}
129+
130+
klog.V(6).Infof("巡检 集群【%s】未连接,已记录跳过状态,记录ID=%d", cluster, record.ID)
131+
return record, nil
100132
}
101133

102134
klog.V(6).Infof("开始巡检, scheduleID: %v, cluster: %s", scheduleID, cluster)

ui/public/pages/admin/inspection/record.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@
219219
"map": {
220220
"success": "<span class='label label-success'>成功</span>",
221221
"failed": "<span class='label label-danger'>失败</span>",
222+
"skipped": "<span class='label label-warning'>跳过</span>",
222223
"running": "<span class='label label-warning'>运行中</span>"
223224
}
224225
},

0 commit comments

Comments
 (0)