forked from JointCloud/pcm-coordinator
150 lines
4.2 KiB
Go
150 lines
4.2 KiB
Go
package database
|
|
|
|
import (
|
|
"github.com/zeromicro/go-zero/core/logx"
|
|
clientCore "gitlink.org.cn/JointCloud/pcm-coordinator/client"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/constants"
|
|
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models"
|
|
"gorm.io/gorm"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
type HpcStorage struct {
|
|
DbEngin *gorm.DB
|
|
}
|
|
|
|
func (s *HpcStorage) GetParticipants() (*types.ClusterListResp, error) {
|
|
var resp types.ClusterListResp
|
|
tx := s.DbEngin.Raw("select * from t_cluster where `deleted_at` IS NULL ORDER BY create_time Desc").Scan(&resp.List)
|
|
if tx.Error != nil {
|
|
logx.Errorf(tx.Error.Error())
|
|
return nil, tx.Error
|
|
}
|
|
return &resp, nil
|
|
}
|
|
|
|
func (s *HpcStorage) GetClustersByAdapterId(id string) (*types.ClusterListResp, error) {
|
|
var resp types.ClusterListResp
|
|
tx := s.DbEngin.Raw("select * from t_cluster where `deleted_at` IS NULL and `adapter_id` = ? ORDER BY create_time Desc", id).Scan(&resp.List)
|
|
if tx.Error != nil {
|
|
logx.Errorf(tx.Error.Error())
|
|
return nil, tx.Error
|
|
}
|
|
return &resp, nil
|
|
}
|
|
|
|
func (s *HpcStorage) GetClusterNameById(id string) (string, error) {
|
|
var name string
|
|
tx := s.DbEngin.Raw("select `description` from t_cluster where `id` = ?", id).Scan(&name)
|
|
if tx.Error != nil {
|
|
logx.Errorf(tx.Error.Error())
|
|
return "", tx.Error
|
|
}
|
|
return name, nil
|
|
}
|
|
|
|
func (s *HpcStorage) GetAdapterNameById(id string) (string, error) {
|
|
var name string
|
|
tx := s.DbEngin.Raw("select `name` from t_adapter where `id` = ?", id).Scan(&name)
|
|
if tx.Error != nil {
|
|
logx.Errorf(tx.Error.Error())
|
|
return "", tx.Error
|
|
}
|
|
return name, nil
|
|
}
|
|
|
|
func (s *HpcStorage) GetAdapterIdsByType(adapterType string) ([]string, error) {
|
|
var list []types.AdapterInfo
|
|
var ids []string
|
|
db := s.DbEngin.Model(&types.AdapterInfo{}).Table("t_adapter")
|
|
db = db.Where("type = ?", adapterType)
|
|
err := db.Order("create_time desc").Find(&list).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
for _, info := range list {
|
|
ids = append(ids, info.Id)
|
|
}
|
|
return ids, nil
|
|
}
|
|
|
|
func (s *HpcStorage) GetAdaptersByType(adapterType string) ([]*types.AdapterInfo, error) {
|
|
var list []*types.AdapterInfo
|
|
db := s.DbEngin.Model(&types.AdapterInfo{}).Table("t_adapter")
|
|
db = db.Where("type = ?", adapterType)
|
|
err := db.Order("create_time desc").Find(&list).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return list, nil
|
|
}
|
|
|
|
func (s *HpcStorage) GetHpcTasksByAdapterId(adapterId string) ([]*models.TaskHpc, error) {
|
|
var resp []*models.TaskHpc
|
|
db := s.DbEngin.Model(&models.TaskHpc{}).Table("task_hpc")
|
|
db = db.Where("adapter_id = ?", adapterId)
|
|
err := db.Order("start_time desc").Find(&resp).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return resp, nil
|
|
}
|
|
|
|
func (s *HpcStorage) GetHpcTaskListById(id int64) ([]*models.TaskHpc, error) {
|
|
var taskList []*models.TaskHpc
|
|
tx := s.DbEngin.Raw("select * from task_hpc where `task_id` = ? ", id).Scan(&taskList)
|
|
if tx.Error != nil {
|
|
return nil, tx.Error
|
|
}
|
|
return taskList, nil
|
|
}
|
|
|
|
func (s *HpcStorage) UpdateTask(task *types.TaskModel) error {
|
|
task.UpdatedTime = time.Now().Format(constants.Layout)
|
|
tx := s.DbEngin.Table("task").Model(task).Updates(task)
|
|
if tx.Error != nil {
|
|
logx.Errorf(tx.Error.Error())
|
|
return tx.Error
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (s *HpcStorage) UpdateHpcTask(task *models.TaskHpc) error {
|
|
tx := s.DbEngin.Updates(task)
|
|
if tx.Error != nil {
|
|
return tx.Error
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (s *HpcStorage) AddNoticeInfo(adapterId string, adapterName string, clusterId string, clusterName string, taskName string, noticeType string, incident string) {
|
|
aId, err := strconv.ParseInt(adapterId, 10, 64)
|
|
if err != nil {
|
|
logx.Errorf("adapterId convert failure, err: %v", err)
|
|
}
|
|
var cId int64
|
|
if clusterId != "" {
|
|
cId, err = strconv.ParseInt(clusterId, 10, 64)
|
|
if err != nil {
|
|
logx.Errorf("clusterId convert failure, err: %v", err)
|
|
}
|
|
}
|
|
|
|
noticeInfo := clientCore.NoticeInfo{
|
|
AdapterId: aId,
|
|
AdapterName: adapterName,
|
|
ClusterId: cId,
|
|
ClusterName: clusterName,
|
|
NoticeType: noticeType,
|
|
TaskName: taskName,
|
|
Incident: incident,
|
|
CreatedTime: time.Now(),
|
|
}
|
|
result := s.DbEngin.Table("t_notice").Create(¬iceInfo)
|
|
if result.Error != nil {
|
|
logx.Errorf("Task creation failure, err: %v", result.Error)
|
|
}
|
|
}
|