数据上链

This commit is contained in:
zhangwei 2024-12-07 15:29:51 +08:00
parent 0fc6084c42
commit acb3f7c33a
5 changed files with 75 additions and 18 deletions

View File

@ -36,6 +36,13 @@ type Config struct {
OpenstackRpcConf zrpc.RpcClientConf
OctopusRpcConf zrpc.RpcClientConf
PcmCoreRpcConf zrpc.RpcClientConf
BlockChain struct {
ContractAddress string
FunctionName string
Url string
Type string
MemberName string
}
MinioConf struct {
Secret string

View File

@ -11,10 +11,12 @@ import (
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models"
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models/cloud"
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils/remoteUtil"
"io"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
syaml "k8s.io/apimachinery/pkg/runtime/serializer/yaml"
"k8s.io/apimachinery/pkg/util/json"
kyaml "k8s.io/apimachinery/pkg/util/yaml"
"strconv"
"strings"
@ -55,7 +57,6 @@ func (l *CommitGeneralTaskLogic) CommitGeneralTask(req *types.GeneralTaskReq) er
logx.Info("commit success")
}
}()
//TODO adapter
adapterId, _ := strconv.ParseUint(req.AdapterIds[0], 10, 64)
var clusters []*models.CloudModel
err := tx.Raw("SELECT * FROM `t_cluster` where adapter_id in ? and id in ?", req.AdapterIds, req.ClusterIds).Scan(&clusters).Error
@ -131,6 +132,19 @@ func (l *CommitGeneralTaskLogic) CommitGeneralTask(req *types.GeneralTaskReq) er
db := tx.Table("task").Create(&taskModel)
db = tx.Table("task_cloud").Create(&taskClouds)
db = tx.Table("t_notice").Create(&noticeInfo)
// 数据上链
bytes, err := json.Marshal(taskModel)
if err != nil {
return err
}
remoteUtil.Evidence(remoteUtil.EvidenceParam{
Url: l.svcCtx.Config.BlockChain.Url,
ContractAddress: l.svcCtx.Config.BlockChain.ContractAddress,
FunctionName: l.svcCtx.Config.BlockChain.FunctionName,
MemberName: l.svcCtx.Config.BlockChain.MemberName,
Type: l.svcCtx.Config.BlockChain.Type,
Args: []string{strconv.FormatInt(taskModel.Id, 10), string(bytes)},
})
if db.Error != nil {
logx.Errorf("Task creation failure, err: %v", db.Error)
return errors.New("task creation failure")

View File

@ -6,7 +6,9 @@ import (
"github.com/go-resty/resty/v2"
clientCore "gitlink.org.cn/JointCloud/pcm-coordinator/client"
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models"
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils/remoteUtil"
v1 "gitlink.org.cn/JointCloud/pcm-hpc/routers/v1"
"k8s.io/apimachinery/pkg/util/json"
"strconv"
"time"
@ -116,7 +118,16 @@ func (l *CommitHpcTaskLogic) CommitHpcTask(req *types.CommitHpcTaskReq) (resp *t
resp = &types.CommitHpcTaskResp{
JobId: string(jobId),
}
// 数据上链
bytes, _ := json.Marshal(taskModel)
remoteUtil.Evidence(remoteUtil.EvidenceParam{
Url: l.svcCtx.Config.BlockChain.Url,
ContractAddress: l.svcCtx.Config.BlockChain.ContractAddress,
FunctionName: l.svcCtx.Config.BlockChain.FunctionName,
MemberName: l.svcCtx.Config.BlockChain.MemberName,
Type: l.svcCtx.Config.BlockChain.Type,
Args: []string{strconv.FormatInt(taskModel.Id, 10), string(bytes)},
})
return resp, nil
}

View File

@ -35,22 +35,22 @@ type (
}
Task struct {
Id int64 `db:"id"` // id
Name string `db:"name"` // 作业名称
Description string `db:"description"` // 作业描述
Status string `db:"status"` // 作业状态
Strategy int64 `db:"strategy"` // 策略
SynergyStatus int64 `db:"synergy_status"` // 协同状态0-未协同、1-已协同)
CommitTime time.Time `db:"commit_time"` // 提交时间
StartTime *time.Time `db:"start_time"` // 开始时间
EndTime *time.Time `db:"end_time"` // 结束运行时间
RunningTime int64 `db:"running_time"` // 已运行时间(单位秒)
YamlString string `db:"yaml_string"`
Result string `db:"result"` // 作业结果
DeletedAt gorm.DeletedAt `gorm:"index"`
NsID string `db:"ns_id"`
AdapterTypeDict string `db:"adapter_type_dict"` //任务类型(对应字典表的值)
TaskTypeDict string `db:"task_type_dict"`
Id int64 `db:"id" json:"id"` // id
Name string `db:"name" json:"name"` // 作业名称
Description string `db:"description" json:"description"` // 作业描述
Status string `db:"status" json:"status"` // 作业状态
Strategy int64 `db:"strategy" json:"strategy"` // 策略
SynergyStatus int64 `db:"synergy_status" json:"synergyStatus"` // 协同状态0-未协同、1-已协同)
CommitTime time.Time `db:"commit_time" json:"commitTime"` // 提交时间
StartTime *time.Time `db:"start_time" json:"startTime"` // 开始时间
EndTime *time.Time `db:"end_time" json:"endTime"` // 结束运行时间
RunningTime int64 `db:"running_time" json:"runningTime"` // 已运行时间(单位秒)
YamlString string `db:"yaml_string" json:"yamlString"`
Result string `db:"result" json:"result"` // 作业结果
DeletedAt gorm.DeletedAt `gorm:"index" json:"deletedAt"`
NsID string `db:"ns_id" json:"nsID"`
AdapterTypeDict string `db:"adapter_type_dict" json:"adapterTypeDict"` //任务类型(对应字典表的值)
TaskTypeDict string `db:"task_type_dict" json:"taskTypeDict"`
}
)

View File

@ -0,0 +1,25 @@
package remoteUtil
import (
"github.com/go-resty/resty/v2"
)
type EvidenceParam struct {
Url string `json:"url"`
Type string `json:"type"`
MemberName string `json:"memberName"`
ContractAddress string `json:"contractAddress"`
FunctionName string `json:"functionName"`
Args []string `json:"args"`
}
func Evidence(EvidenceParam EvidenceParam) error {
httpClient := resty.New().R()
_, err := httpClient.SetHeader("Content-Type", "application/json").
SetBody(&EvidenceParam).
Post(EvidenceParam.Url)
if err != nil {
return err
}
return nil
}