| @@ -182,6 +182,7 @@ type ( | |||||
| TaskYaml { | TaskYaml { | ||||
| TaskId int64 `yaml:"taskId"` | TaskId int64 `yaml:"taskId"` | ||||
| taskType string `yaml:"taskType"` | taskType string `yaml:"taskType"` | ||||
| matchLabels map[string]string `yaml:"matchLabels"` | |||||
| metadata interface{} `yaml:"metadata"` | metadata interface{} `yaml:"metadata"` | ||||
| } | } | ||||
| ) | ) | ||||
| @@ -196,6 +197,8 @@ type ( | |||||
| } | } | ||||
| TaskInfo { | TaskInfo { | ||||
| TaskId int64 `json:"taskId,optional"` | TaskId int64 `json:"taskId,optional"` | ||||
| TaskType string `json:"taskType,optional"` | |||||
| matchLabels map[string]string `json:"matchLabels"` | |||||
| serviceName string `json:"serviceName"` | serviceName string `json:"serviceName"` | ||||
| metadata interface{} `json:"metadata"` | metadata interface{} `json:"metadata"` | ||||
| } | } | ||||
| @@ -161,9 +161,10 @@ type ScheduleTaskByYamlReq struct { | |||||
| } | } | ||||
| type TaskYaml struct { | type TaskYaml struct { | ||||
| TaskId int64 `yaml:"taskId"` | |||||
| TaskType string `yaml:"taskType"` | |||||
| Metadata interface{} `yaml:"metadata"` | |||||
| TaskId int64 `yaml:"taskId"` | |||||
| TaskType string `yaml:"taskType"` | |||||
| MatchLabels map[string]string `yaml:"matchLabels"` | |||||
| Metadata interface{} `yaml:"metadata"` | |||||
| } | } | ||||
| type ScheduleTaskReq struct { | type ScheduleTaskReq struct { | ||||
| @@ -176,8 +177,9 @@ type ScheduleTaskReq struct { | |||||
| type TaskInfo struct { | type TaskInfo struct { | ||||
| TaskId int64 `json:"taskId,optional"` | TaskId int64 `json:"taskId,optional"` | ||||
| TaskType string `json:"taskType"` | |||||
| TaskType string `json:"taskType,optional"` | |||||
| MatchLabels map[string]string `json:"matchLabels"` | MatchLabels map[string]string `json:"matchLabels"` | ||||
| ServiceName string `json:"serviceName"` | |||||
| Metadata interface{} `json:"metadata"` | Metadata interface{} `json:"metadata"` | ||||
| } | } | ||||
| @@ -1,12 +1,5 @@ | |||||
| package model | package model | ||||
| import ( | |||||
| "github.com/zeromicro/go-zero/core/stores/cache" | |||||
| "github.com/zeromicro/go-zero/core/stores/sqlx" | |||||
| ) | |||||
| var _ CloudModel = (*customCloudModel)(nil) | |||||
| type ( | type ( | ||||
| // CloudModel is an interface to be customized, add more methods here, | // CloudModel is an interface to be customized, add more methods here, | ||||
| // and implement the added methods in customCloudModel. | // and implement the added methods in customCloudModel. | ||||
| @@ -18,10 +11,3 @@ type ( | |||||
| *defaultCloudModel | *defaultCloudModel | ||||
| } | } | ||||
| ) | ) | ||||
| // NewCloudModel returns a model for the database table. | |||||
| func NewCloudModel(conn sqlx.SqlConn, c cache.CacheConf) CloudModel { | |||||
| return &customCloudModel{ | |||||
| defaultCloudModel: newCloudModel(conn), | |||||
| } | |||||
| } | |||||
| @@ -5,11 +5,9 @@ package model | |||||
| import ( | import ( | ||||
| "context" | "context" | ||||
| "database/sql" | "database/sql" | ||||
| "fmt" | |||||
| "strings" | "strings" | ||||
| "github.com/zeromicro/go-zero/core/stores/builder" | "github.com/zeromicro/go-zero/core/stores/builder" | ||||
| "github.com/zeromicro/go-zero/core/stores/sqlc" | |||||
| "github.com/zeromicro/go-zero/core/stores/sqlx" | "github.com/zeromicro/go-zero/core/stores/sqlx" | ||||
| "github.com/zeromicro/go-zero/core/stringx" | "github.com/zeromicro/go-zero/core/stringx" | ||||
| ) | ) | ||||
| @@ -51,7 +49,6 @@ type ( | |||||
| UpdatedBy int64 `db:"updated_by"` // 更新人 | UpdatedBy int64 `db:"updated_by"` // 更新人 | ||||
| UpdatedTime sql.NullTime `db:"updated_time"` // 更新时间 | UpdatedTime sql.NullTime `db:"updated_time"` // 更新时间 | ||||
| DeletedFlag int64 `db:"deleted_flag"` // 是否删除(0-否,1-是) | DeletedFlag int64 `db:"deleted_flag"` // 是否删除(0-否,1-是) | ||||
| ServiceName string `db:"service_name"` | |||||
| YamlString string `db:"yaml_string"` | YamlString string `db:"yaml_string"` | ||||
| Result string `db:"result"` | Result string `db:"result"` | ||||
| } | } | ||||
| @@ -64,52 +61,6 @@ func newCloudModel(conn sqlx.SqlConn) *defaultCloudModel { | |||||
| } | } | ||||
| } | } | ||||
| func (m *defaultCloudModel) Delete(ctx context.Context, id int64) error { | |||||
| query := fmt.Sprintf("delete from %s where `id` = ?", m.table) | |||||
| _, err := m.conn.ExecCtx(ctx, query, id) | |||||
| return err | |||||
| } | |||||
| func (m *defaultCloudModel) FindOne(ctx context.Context, id int64) (*Cloud, error) { | |||||
| query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", cloudRows, m.table) | |||||
| var resp Cloud | |||||
| err := m.conn.QueryRowCtx(ctx, &resp, query, id) | |||||
| switch err { | |||||
| case nil: | |||||
| return &resp, nil | |||||
| case sqlc.ErrNotFound: | |||||
| return nil, ErrNotFound | |||||
| default: | |||||
| return nil, err | |||||
| } | |||||
| } | |||||
| func (m *defaultCloudModel) FindOneByNamespaceNameServiceName(ctx context.Context, namespace sql.NullString, name sql.NullString, serviceName sql.NullString) (*Cloud, error) { | |||||
| var resp Cloud | |||||
| query := fmt.Sprintf("select %s from %s where `namespace` = ? and `name` = ? and `service_name` = ? limit 1", cloudRows, m.table) | |||||
| err := m.conn.QueryRowCtx(ctx, &resp, query, namespace, name, serviceName) | |||||
| switch err { | |||||
| case nil: | |||||
| return &resp, nil | |||||
| case sqlc.ErrNotFound: | |||||
| return nil, ErrNotFound | |||||
| default: | |||||
| return nil, err | |||||
| } | |||||
| } | |||||
| func (m *defaultCloudModel) Insert(ctx context.Context, data *Cloud) (sql.Result, error) { | |||||
| query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, cloudRowsExpectAutoSet) | |||||
| ret, err := m.conn.ExecCtx(ctx, query, data.TaskId, data.ApiVersion, data.Name, data.Namespace, data.Kind, data.Status, data.StartTime, data.RunningTime, data.CreatedBy, data.CreatedTime, data.UpdatedBy, data.UpdatedTime, data.DeletedFlag, data.ServiceName, data.YamlString, data.Result) | |||||
| return ret, err | |||||
| } | |||||
| func (m *defaultCloudModel) Update(ctx context.Context, newData *Cloud) error { | |||||
| query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, cloudRowsWithPlaceHolder) | |||||
| _, err := m.conn.ExecCtx(ctx, query, newData.TaskId, newData.ApiVersion, newData.Name, newData.Namespace, newData.Kind, newData.Status, newData.StartTime, newData.RunningTime, newData.CreatedBy, newData.CreatedTime, newData.UpdatedBy, newData.UpdatedTime, newData.DeletedFlag, newData.ServiceName, newData.YamlString, newData.Result, newData.Id) | |||||
| return err | |||||
| } | |||||
| func (m *defaultCloudModel) tableName() string { | func (m *defaultCloudModel) tableName() string { | ||||
| return m.table | return m.table | ||||
| } | } | ||||
| @@ -9,7 +9,7 @@ import ( | |||||
| type Client struct { | type Client struct { | ||||
| Host string | Host string | ||||
| Port int32 | |||||
| Port string | |||||
| ParticipantID int64 | ParticipantID int64 | ||||
| LastHeartbeat time.Time | LastHeartbeat time.Time | ||||
| ClientState string | ClientState string | ||||
| @@ -23,7 +23,7 @@ var ( | |||||
| removeTime = 30 * time.Second | removeTime = 30 * time.Second | ||||
| ) | ) | ||||
| func SendHeartbeat(host string, port int32, participantID int64) { | |||||
| func SendHeartbeat(host string, port string, participantID int64) { | |||||
| key := fmt.Sprintf("%s:%d-%d", host, port, participantID) | key := fmt.Sprintf("%s:%d-%d", host, port, participantID) | ||||
| clientsMutex.Lock() | clientsMutex.Lock() | ||||
| @@ -31,7 +31,7 @@ func (l *InfoListLogic) InfoList(in *pcmCore.InfoListReq) (*pcmCore.InfoListResp | |||||
| switch in.Kind { | switch in.Kind { | ||||
| case "hpc": | case "hpc": | ||||
| var hpcModelList []model.Hpc | var hpcModelList []model.Hpc | ||||
| tx := l.svcCtx.DbEngin.Where("service_name = ? AND status NOT IN ?", in.ServiceName, []string{"Succeed", "Completed"}).Find(&hpcModelList) | |||||
| tx := l.svcCtx.DbEngin.Where("service_name = ? AND status NOT IN ?", in.ParticipantId, []string{"Succeed", "Completed"}).Find(&hpcModelList) | |||||
| if tx.Error != nil { | if tx.Error != nil { | ||||
| return nil, tx.Error | return nil, tx.Error | ||||
| } | } | ||||
| @@ -40,7 +40,7 @@ func (l *InfoListLogic) InfoList(in *pcmCore.InfoListReq) (*pcmCore.InfoListResp | |||||
| result.HpcInfoList = hpcInfoList | result.HpcInfoList = hpcInfoList | ||||
| case "cloud": | case "cloud": | ||||
| var cloudModelList []model.Cloud | var cloudModelList []model.Cloud | ||||
| tx := l.svcCtx.DbEngin.Where("service_name = ? AND status NOT IN ?", in.ServiceName, []string{"Succeed", "Completed"}).Find(&cloudModelList) | |||||
| tx := l.svcCtx.DbEngin.Where("service_name = ? AND status NOT IN ?", in.ParticipantId, []string{"Succeed", "Completed"}).Find(&cloudModelList) | |||||
| if tx.Error != nil { | if tx.Error != nil { | ||||
| return nil, tx.Error | return nil, tx.Error | ||||
| } | } | ||||
| @@ -49,7 +49,7 @@ func (l *InfoListLogic) InfoList(in *pcmCore.InfoListReq) (*pcmCore.InfoListResp | |||||
| result.CloudInfoList = cloudInfoList | result.CloudInfoList = cloudInfoList | ||||
| case "ai": | case "ai": | ||||
| var aiModelList []model.Ai | var aiModelList []model.Ai | ||||
| tx := l.svcCtx.DbEngin.Where("service_name = ? AND status NOT IN ?", in.ServiceName, []string{"Succeed", "Completed"}).Find(&aiModelList) | |||||
| tx := l.svcCtx.DbEngin.Where("service_name = ? AND status NOT IN ?", in.ParticipantId, []string{"Succeed", "Completed"}).Find(&aiModelList) | |||||
| if tx.Error != nil { | if tx.Error != nil { | ||||
| return nil, tx.Error | return nil, tx.Error | ||||
| } | } | ||||
| @@ -40,19 +40,19 @@ func (l *SyncInfoLogic) SyncInfo(in *pcmCore.SyncInfoReq) (*pcmCore.SyncInfoResp | |||||
| switch in.Kind { | switch in.Kind { | ||||
| case "cloud": | case "cloud": | ||||
| for _, cloudInfo := range in.CloudInfoList { | for _, cloudInfo := range in.CloudInfoList { | ||||
| db.Exec("update cloud set status = ?,start_time = ?,running_time = ? where service_name = ? and task_id = ? and namespace = ? and name = ?", | |||||
| cloudInfo.Status, cloudInfo.StartTime, cloudInfo.RunningTime, in.ServiceName, cloudInfo.TaskId, cloudInfo.Namespace, cloudInfo.Name) | |||||
| db.Exec("update cloud set status = ?,start_time = ?,running_time = ? where participant_id = ? and task_id = ? and namespace = ? and name = ?", | |||||
| cloudInfo.Status, cloudInfo.StartTime, cloudInfo.RunningTime, in.ParticipantId, cloudInfo.TaskId, cloudInfo.Namespace, cloudInfo.Name) | |||||
| } | } | ||||
| case "hpc": | case "hpc": | ||||
| for _, hpcInfo := range in.HpcInfoList { | for _, hpcInfo := range in.HpcInfoList { | ||||
| tx := db.Exec("update hpc set status = ?,derived_es = ?,assoc_id = ?,exit_code = ?,version = ?,alloc_cpu = ?,alloc_nodes = ?,cluster = ?,block_id = ?,start_time = ?,running_time = ?,job_id = ? where service_name = ? and task_id = ? and name = ?", | |||||
| hpcInfo.Status, hpcInfo.DerivedEs, hpcInfo.AssocId, hpcInfo.ExitCode, hpcInfo.Version, hpcInfo.AllocCpu, hpcInfo.AllocNodes, hpcInfo.Cluster, hpcInfo.BlockId, hpcInfo.StartTime, hpcInfo.RunningTime, hpcInfo.JobId, in.ServiceName, hpcInfo.TaskId, hpcInfo.Name) | |||||
| tx := db.Exec("update hpc set status = ?,derived_es = ?,assoc_id = ?,exit_code = ?,version = ?,alloc_cpu = ?,alloc_nodes = ?,cluster = ?,block_id = ?,start_time = ?,running_time = ?,job_id = ? where participant_id = ? and task_id = ? and name = ?", | |||||
| hpcInfo.Status, hpcInfo.DerivedEs, hpcInfo.AssocId, hpcInfo.ExitCode, hpcInfo.Version, hpcInfo.AllocCpu, hpcInfo.AllocNodes, hpcInfo.Cluster, hpcInfo.BlockId, hpcInfo.StartTime, hpcInfo.RunningTime, hpcInfo.JobId, in.ParticipantId, hpcInfo.TaskId, hpcInfo.Name) | |||||
| print(tx.Error) | print(tx.Error) | ||||
| } | } | ||||
| case "ai": | case "ai": | ||||
| for _, aiInfo := range in.AiInfoList { | for _, aiInfo := range in.AiInfoList { | ||||
| db.Exec("update ai set status = ?,start_time = ?,running_time = ?,project_id = ?,job_id = ? where service_name = ? and task_id = ? and name = ?", | |||||
| aiInfo.Status, aiInfo.StartTime, aiInfo.RunningTime, aiInfo.ProjectId, aiInfo.JobId, in.ServiceName, aiInfo.TaskId, aiInfo.Name) | |||||
| db.Exec("update ai set status = ?,start_time = ?,running_time = ?,project_id = ?,job_id = ? where participant_id = ? and task_id = ? and name = ?", | |||||
| aiInfo.Status, aiInfo.StartTime, aiInfo.RunningTime, aiInfo.ProjectId, aiInfo.JobId, in.ParticipantId, aiInfo.TaskId, aiInfo.Name) | |||||
| } | } | ||||
| } | } | ||||
| @@ -74,7 +74,7 @@ message SyncInfoResp{ | |||||
| message InfoListReq{ | message InfoListReq{ | ||||
| string kind = 1; | string kind = 1; | ||||
| string participantId = 2; | |||||
| int64 participantId = 2; | |||||
| } | } | ||||
| message InfoListResp{ | message InfoListResp{ | ||||
| @@ -694,7 +694,7 @@ type InfoListReq struct { | |||||
| unknownFields protoimpl.UnknownFields | unknownFields protoimpl.UnknownFields | ||||
| Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` | Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` | ||||
| ParticipantId string `protobuf:"bytes,2,opt,name=participantId,proto3" json:"participantId,omitempty"` | |||||
| ParticipantId int64 `protobuf:"varint,2,opt,name=participantId,proto3" json:"participantId,omitempty"` | |||||
| } | } | ||||
| func (x *InfoListReq) Reset() { | func (x *InfoListReq) Reset() { | ||||
| @@ -736,11 +736,11 @@ func (x *InfoListReq) GetKind() string { | |||||
| return "" | return "" | ||||
| } | } | ||||
| func (x *InfoListReq) GetParticipantId() string { | |||||
| func (x *InfoListReq) GetParticipantId() int64 { | |||||
| if x != nil { | if x != nil { | ||||
| return x.ParticipantId | return x.ParticipantId | ||||
| } | } | ||||
| return "" | |||||
| return 0 | |||||
| } | } | ||||
| type InfoListResp struct { | type InfoListResp struct { | ||||
| @@ -1473,7 +1473,7 @@ var file_pcmCore_proto_rawDesc = []byte{ | |||||
| 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, | 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, | ||||
| 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, | 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, | ||||
| 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, | 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, | ||||
| 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, | |||||
| 0x03, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, | |||||
| 0x22, 0xad, 0x01, 0x0a, 0x0c, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, | 0x22, 0xad, 0x01, 0x0a, 0x0c, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, | ||||
| 0x70, 0x12, 0x32, 0x0a, 0x0b, 0x48, 0x70, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, | 0x70, 0x12, 0x32, 0x0a, 0x0b, 0x48, 0x70, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, | ||||
| 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x63, 0x6d, 0x43, 0x6f, 0x72, 0x65, | 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x63, 0x6d, 0x43, 0x6f, 0x72, 0x65, | ||||