@@ -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"
8988func (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 )
0 commit comments