152 lines
4.3 KiB
Go
152 lines
4.3 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
|
|
"go-common/app/admin/ep/merlin/model"
|
|
"go-common/library/log"
|
|
)
|
|
|
|
func (s *Service) taskGetExpiredMachinesIntoTask() {
|
|
machines, err := s.dao.FindExpiredMachine()
|
|
if err != nil {
|
|
log.Error("Task get expired machines into task (%v)", err)
|
|
return
|
|
}
|
|
|
|
if machines != nil {
|
|
log.Info("machines will be expired on tomorrow and add into task")
|
|
s.dao.InsertDeleteMachinesTasks(machines)
|
|
}
|
|
}
|
|
|
|
// 定时发邮件通知将要过期机器
|
|
func (s *Service) taskSendTaskMailMachinesWillExpired() {
|
|
var (
|
|
machines []*model.Machine
|
|
err error
|
|
)
|
|
|
|
if machines, err = s.dao.FindExpiredMachineByDay(s.c.Scheduler.ExpiredDate); err != nil {
|
|
log.Error("Task send task mail machines will expired (%v)", err)
|
|
return
|
|
}
|
|
for _, machine := range machines {
|
|
log.Info("Machine named [%s] will be expired on next week and send a mail", machine.Name)
|
|
if machine.DelayStatus == model.DelayStatusInit {
|
|
s.dao.UpdateMachineDelayStatus(machine.ID, model.DelayStatusAuto)
|
|
}
|
|
if err = s.SendMail(model.MailTypeMachineWillExpired, machine); err != nil {
|
|
log.Error("Send mail failed (%v)", err)
|
|
}
|
|
}
|
|
}
|
|
|
|
// 定时删除过期机器
|
|
func (s *Service) taskDeleteExpiredMachines() {
|
|
var (
|
|
tasks []*model.Task
|
|
instance *model.ReleaseInstance
|
|
err error
|
|
machine *model.Machine
|
|
)
|
|
|
|
if tasks, err = s.dao.FindDeleteMachineTasks(); err != nil {
|
|
log.Error("Task delete expired machines error (%v)", err)
|
|
return
|
|
}
|
|
for _, taskEle := range tasks {
|
|
if instance, err = s.DelMachine(context.TODO(), taskEle.MachineID, "机器删除"); err != nil {
|
|
log.Error("Task delete expired machines error (%v)", err)
|
|
continue
|
|
}
|
|
if instance.InstanceReleaseStatus != model.SuccessDeletePaasMachines {
|
|
if machine, err = s.dao.QueryMachine(taskEle.MachineID); err != nil {
|
|
log.Error("Task delete expired machines error (%v)", err)
|
|
continue
|
|
}
|
|
if err = s.SendMail(model.MailTypeTaskDeleteMachineFailed, machine); err != nil {
|
|
log.Error("Send mail failed (%v)", err)
|
|
}
|
|
s.dao.UpdateTaskStatusByTaskID(taskEle.ID, model.TaskFailed)
|
|
}
|
|
}
|
|
}
|
|
|
|
func (s *Service) taskMachineStatus() {
|
|
var (
|
|
pathAndPodNames map[string][]string
|
|
machineStatuses map[string]bool
|
|
createdPodNames []string
|
|
creatingPodNames []string
|
|
creatingMachines []*model.Machine
|
|
err error
|
|
c = context.TODO()
|
|
)
|
|
if pathAndPodNames, err = s.dao.QueryPathAndPodNamesMapping(); err != nil {
|
|
log.Error("Query creating machines in db err(%v)", err)
|
|
return
|
|
}
|
|
if len(pathAndPodNames) == 0 {
|
|
return
|
|
}
|
|
log.Info("Get pathAndPodNames(%v) from Service Tree", pathAndPodNames)
|
|
if machineStatuses, err = s.TreeMachinesIsExist(c, pathAndPodNames); err != nil {
|
|
log.Error("Query service tree machine status err(%v)", err)
|
|
return
|
|
}
|
|
for k, v := range machineStatuses {
|
|
if v {
|
|
createdPodNames = append(createdPodNames, k)
|
|
} else {
|
|
creatingPodNames = append(creatingPodNames, k)
|
|
}
|
|
}
|
|
if len(createdPodNames) > 0 {
|
|
if s.dao.UpdateMachineStatusByPodNames(createdPodNames, model.BootMachineInMerlin); err != nil {
|
|
log.Error("update creating machines to boot in db err(%v)", err)
|
|
return
|
|
}
|
|
}
|
|
if len(creatingPodNames) <= 0 {
|
|
return
|
|
}
|
|
if creatingMachines, err = s.dao.QueryMachinesByPodNames(creatingPodNames); err != nil {
|
|
log.Error("Query creating machines in db err(%v)", err)
|
|
return
|
|
}
|
|
for _, m := range creatingMachines {
|
|
log.Info("Create machine(%v) deadline exceeded", m)
|
|
if _, err = s.verifyPassStatus(c, m, false); err != nil {
|
|
log.Error("Del verify machine(%v) in db err(%v)", m, err)
|
|
continue
|
|
}
|
|
if _, err = s.dao.DelPaasMachine(c, m.ToPaasQueryAndDelMachineRequest()); err != nil {
|
|
log.Error("Del creating machine(%v) in db err(%v)", m, err)
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
|
|
// 同步ios移动设备状态
|
|
func (s *Service) taskSyncMobileDeviceList() {
|
|
s.SyncMobileDeviceList(context.Background())
|
|
}
|
|
|
|
// 定时清理由于回调失败,而在进行中的快照
|
|
func (s *Service) taskUpdateSnapshotStatusInDoing() {
|
|
var (
|
|
err error
|
|
snapshotRecords []*model.SnapshotRecord
|
|
)
|
|
if snapshotRecords, err = s.dao.FindSnapshotStatusInDoingOver2Hours(); err != nil {
|
|
return
|
|
}
|
|
|
|
for _, snapshotRecord := range snapshotRecords {
|
|
if err = s.dao.UpdateSnapshotRecordStatus(snapshotRecord.MachineID, model.SnapShotFailed); err != nil {
|
|
continue
|
|
}
|
|
}
|
|
}
|