88 lines
2.4 KiB
Go
88 lines
2.4 KiB
Go
package logic
|
|
|
|
import (
|
|
"PCM/adaptor/PCM-AI/PCM-MODELARTS/rpc/internal/common"
|
|
"PCM/common/tool"
|
|
"bytes"
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"github.com/JCCE-nudt/apigw-go-sdk/core"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"strings"
|
|
|
|
"PCM/adaptor/PCM-AI/PCM-MODELARTS/rpc/internal/svc"
|
|
"PCM/adaptor/PCM-AI/PCM-MODELARTS/rpc/modelarts"
|
|
|
|
"github.com/zeromicro/go-zero/core/logx"
|
|
)
|
|
|
|
type MountNotebookStorageLogic struct {
|
|
ctx context.Context
|
|
svcCtx *svc.ServiceContext
|
|
logx.Logger
|
|
}
|
|
|
|
func NewMountNotebookStorageLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MountNotebookStorageLogic {
|
|
return &MountNotebookStorageLogic{
|
|
ctx: ctx,
|
|
svcCtx: svcCtx,
|
|
Logger: logx.WithContext(ctx),
|
|
}
|
|
}
|
|
|
|
func (l *MountNotebookStorageLogic) MountNotebookStorage(in *modelarts.MountNotebookStorageReq) (*modelarts.MountNotebookStorageResp, error) {
|
|
var resp modelarts.MountNotebookStorageResp
|
|
modelArtsType := in.ModelArtsType
|
|
if modelArtsType == l.svcCtx.Config.HaweiModelArtsType {
|
|
modelArtsUrl := l.svcCtx.Config.ModelArtsUrl
|
|
mountUrl := modelArtsUrl + "v1/{project_id}/notebooks/{instance_id}/storage"
|
|
mountUrl = strings.Replace(mountUrl, "{project_id}", in.ProjectId, -1)
|
|
mountUrl = strings.Replace(mountUrl, "{instance_id}", in.InstanceId, -1)
|
|
reqByte, err := json.Marshal(in.Param)
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
payload := strings.NewReader(string(reqByte))
|
|
token := common.GetToken()
|
|
body, err := tool.HttpClient(tool.POST, mountUrl, payload, token)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
json.Unmarshal(body, &resp)
|
|
} else if modelArtsType == l.svcCtx.Config.NanjingModelArtsType {
|
|
AK := l.svcCtx.Config.AK
|
|
SK := l.svcCtx.Config.SK
|
|
NanjingModelArtsUrl := l.svcCtx.Config.NanjingModelArtsUrl
|
|
XProjectId := l.svcCtx.Config.XProjectId
|
|
s := core.Signer{
|
|
Key: AK,
|
|
Secret: SK,
|
|
}
|
|
reqByte, err := json.Marshal(in)
|
|
r, err := http.NewRequest("POST", NanjingModelArtsUrl+"v1/"+in.ProjectId+"/notebooks"+in.InstanceId+"/storage",
|
|
bytes.NewBuffer(reqByte))
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
r.Header.Add("content-type", "application/json;charset=UTF-8")
|
|
r.Header.Add("X-Project-Id", XProjectId)
|
|
r.Header.Add("x-stage", "RELEASE")
|
|
s.Sign(r)
|
|
client := http.DefaultClient
|
|
res, err := client.Do(r)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
defer res.Body.Close()
|
|
body, err := ioutil.ReadAll(res.Body)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
json.Unmarshal(body, &resp)
|
|
}
|
|
|
|
return &resp, nil
|
|
}
|