@@ -119,7 +119,12 @@ type GetJobResult struct { | |||||
type GetImagesResult struct { | type GetImagesResult struct { | ||||
Code string `json:"code"` | Code string `json:"code"` | ||||
Msg string `json:"msg"` | Msg string `json:"msg"` | ||||
Payload map[string]*ImageInfo `json:"payload"` | |||||
Payload GetImagesPayload `json:"payload"` | |||||
} | |||||
type GetImagesPayload struct { | |||||
Count int `json:"count"` | |||||
ImageInfo []*ImageInfo `json:"rows"` | |||||
} | } | ||||
type CloudbrainsOptions struct { | type CloudbrainsOptions struct { | ||||
@@ -255,6 +260,7 @@ type ImageInfo struct { | |||||
Provider string `json:"provider"` | Provider string `json:"provider"` | ||||
Createtime string `json:"createtime"` | Createtime string `json:"createtime"` | ||||
Remark string `json:"remark"` | Remark string `json:"remark"` | ||||
IsPublic int `json:"isPublic"` | |||||
PlaceView string | PlaceView string | ||||
} | } | ||||
@@ -55,7 +55,6 @@ func GenerateTask(ctx *context.Context, jobName, uuid string) error { | |||||
RepoID: ctx.Repo.Repository.ID, | RepoID: ctx.Repo.Repository.ID, | ||||
JobID: jobResult.ID, | JobID: jobResult.ID, | ||||
JobName: jobName, | JobName: jobName, | ||||
SubTaskName: subTaskName, | |||||
JobType: string(models.JobTypeDebug), | JobType: string(models.JobTypeDebug), | ||||
Type: models.TypeCloudBrainTwo, | Type: models.TypeCloudBrainTwo, | ||||
}) | }) | ||||
@@ -2,6 +2,7 @@ package modelarts | |||||
import ( | import ( | ||||
"code.gitea.io/gitea/modules/log" | "code.gitea.io/gitea/modules/log" | ||||
"crypto/tls" | |||||
"fmt" | "fmt" | ||||
"net/http" | "net/http" | ||||
@@ -21,11 +22,12 @@ const ( | |||||
urlGetToken = "/v3/auth/tokens" | urlGetToken = "/v3/auth/tokens" | ||||
urlNotebook = "/demanager/instances" | urlNotebook = "/demanager/instances" | ||||
urlQuaryNotebook = "/demanager/instances" | |||||
urlQueryNotebook = "/demanager/instances" | |||||
) | ) | ||||
func getRestyClient() *resty.Client { | func getRestyClient() *resty.Client { | ||||
if restyClient == nil { | if restyClient == nil { | ||||
restyClient = resty.New() | restyClient = resty.New() | ||||
restyClient.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true}) | |||||
} | } | ||||
return restyClient | return restyClient | ||||
} | } | ||||
@@ -67,10 +69,13 @@ func getToken() error { | |||||
}, | }, | ||||
} | } | ||||
log.Info("params:", params) | |||||
res, err := client.R(). | res, err := client.R(). | ||||
SetHeader("Content-Type", "application/json"). | SetHeader("Content-Type", "application/json"). | ||||
SetBody(params). | SetBody(params). | ||||
Post(HOST + urlGetToken) | |||||
Post(setting.IamHost + urlGetToken) | |||||
log.Info("", res.Request.Body) | |||||
if err != nil { | if err != nil { | ||||
return fmt.Errorf("resty getToken: %s", err) | return fmt.Errorf("resty getToken: %s", err) | ||||
} | } | ||||
@@ -80,6 +85,7 @@ func getToken() error { | |||||
} | } | ||||
TOKEN = res.Header().Get("X-Subject-Token") | TOKEN = res.Header().Get("X-Subject-Token") | ||||
log.Info(TOKEN) | |||||
return nil | return nil | ||||
} | } | ||||
@@ -459,6 +459,7 @@ var ( | |||||
//modelarts config | //modelarts config | ||||
ModelArtsHost string | ModelArtsHost string | ||||
IamHost string | |||||
ProjectID string | ProjectID string | ||||
ProjectName string | ProjectName string | ||||
ModelArtsUsername string | ModelArtsUsername string | ||||
@@ -1159,6 +1160,7 @@ func NewContext() { | |||||
sec = Cfg.Section("modelarts") | sec = Cfg.Section("modelarts") | ||||
ModelArtsHost = sec.Key("ENDPOINT").MustString("112.95.163.80") | ModelArtsHost = sec.Key("ENDPOINT").MustString("112.95.163.80") | ||||
IamHost = sec.Key("IAMHOST").MustString("112.95.163.80") | |||||
ProjectID = sec.Key("PROJECT_ID").MustString("") | ProjectID = sec.Key("PROJECT_ID").MustString("") | ||||
ProjectName = sec.Key("PROJECT_NAME").MustString("") | ProjectName = sec.Key("PROJECT_NAME").MustString("") | ||||
ModelArtsUsername = sec.Key("USERNAME").MustString("") | ModelArtsUsername = sec.Key("USERNAME").MustString("") | ||||
@@ -852,6 +852,9 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||
m.Group("/cloudbrain", func() { | m.Group("/cloudbrain", func() { | ||||
m.Get("/:jobid", repo.GetCloudbrainTask) | m.Get("/:jobid", repo.GetCloudbrainTask) | ||||
}, reqRepoReader(models.UnitTypeCloudBrain)) | }, reqRepoReader(models.UnitTypeCloudBrain)) | ||||
m.Group("/modelarts", func() { | |||||
m.Get("/:jobid", repo.GetModelArtsTask) | |||||
}, reqRepoReader(models.UnitTypeCloudBrain)) | |||||
}, repoAssignment()) | }, repoAssignment()) | ||||
}) | }) | ||||
@@ -0,0 +1,40 @@ | |||||
// Copyright 2016 The Gogs Authors. All rights reserved. | |||||
// Copyright 2018 The Gitea Authors. All rights reserved. | |||||
// Use of this source code is governed by a MIT-style | |||||
// license that can be found in the LICENSE file. | |||||
package repo | |||||
import ( | |||||
"code.gitea.io/gitea/models" | |||||
"code.gitea.io/gitea/modules/context" | |||||
"code.gitea.io/gitea/modules/modelarts" | |||||
) | |||||
func GetModelArtsTask(ctx *context.APIContext) { | |||||
var ( | |||||
err error | |||||
) | |||||
jobID := ctx.Params(":jobid") | |||||
repoID := ctx.Repo.Repository.ID | |||||
_, err = models.GetRepoCloudBrainByJobID(repoID, jobID) | |||||
if err != nil { | |||||
ctx.NotFound(err) | |||||
return | |||||
} | |||||
_, err = modelarts.GetJob(jobID) | |||||
if err != nil { | |||||
ctx.NotFound(err) | |||||
return | |||||
} | |||||
//ctx.JSON(http.StatusOK, map[string]interface{}{ | |||||
// "JobID": result.Config.JobID, | |||||
// "JobStatus": result.JobStatus.State, | |||||
// "SubState": result.JobStatus.SubState, | |||||
// "CreatedTime": time.Unix(result.JobStatus.CreatedTime/1000, 0).Format("2006-01-02 15:04:05"), | |||||
// "CompletedTime": time.Unix(result.JobStatus.CompletedTime/1000, 0).Format("2006-01-02 15:04:05"), | |||||
//}) | |||||
} |
@@ -88,17 +88,18 @@ func CloudBrainNew(ctx *context.Context) { | |||||
result, err := cloudbrain.GetImages() | result, err := cloudbrain.GetImages() | ||||
if err != nil { | if err != nil { | ||||
ctx.Data["error"] = err.Error() | ctx.Data["error"] = err.Error() | ||||
log.Error("cloudbrain.GetImages failed:", err.Error()) | |||||
} | } | ||||
for i, payload := range result.Payload { | |||||
if strings.HasPrefix(result.Payload[i].Place, "192.168") { | |||||
result.Payload[i].PlaceView = payload.Place[strings.Index(payload.Place, "/"):len(payload.Place)] | |||||
for i, payload := range result.Payload.ImageInfo { | |||||
if strings.HasPrefix(result.Payload.ImageInfo[i].Place, "192.168") { | |||||
result.Payload.ImageInfo[i].PlaceView = payload.Place[strings.Index(payload.Place, "/"):len(payload.Place)] | |||||
} else { | } else { | ||||
result.Payload[i].PlaceView = payload.Place | |||||
result.Payload.ImageInfo[i].PlaceView = payload.Place | |||||
} | } | ||||
} | } | ||||
ctx.Data["images"] = result.Payload | |||||
ctx.Data["images"] = result.Payload.ImageInfo | |||||
attachs, err := models.GetAllUserAttachments(ctx.User.ID) | attachs, err := models.GetAllUserAttachments(ctx.User.ID) | ||||
if err != nil { | if err != nil { | ||||
@@ -266,15 +266,6 @@ | |||||
</span> | </span> | ||||
</div> | </div> | ||||
<!-- 评分 --> | |||||
<div class="one wide column"> | |||||
<div class="ui text center clipboard"> | |||||
<a class="title" onclick="stop(this)" href="{{if and (ne .Status "WAITING") (eq .JobType "BENCHMARK")}}{{$.Link}}/{{.JobID}}/benchmark{{else}}javascript:void(0);{{end}}" style="{{if and (ne .Status "WAITING") (eq .JobType "BENCHMARK")}}{{else}}color:#CCCCCC{{end}}"> | |||||
<span class="fitted">评分</span> | |||||
</a> | |||||
</div> | |||||
</div> | |||||
<!-- 删除镜像 --> | <!-- 删除镜像 --> | ||||
<div class="one wide column"> | <div class="one wide column"> | ||||
<div class="ui text center clipboard"> | <div class="ui text center clipboard"> | ||||
@@ -304,10 +295,6 @@ | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<!-- 接收结果 --> | |||||
<iframe src="" frameborder="0" name="iframeContent" style="display: none;"></iframe> | |||||
<a class="imageBtn" style="{{if not .CanDebug}}color:#CCCCCC;cursor:pointer;pointer-events:none;{{end}}; font-size:16px; font-weight:bold" value="{{.CanDebug}}">提交镜像</a> | |||||
<!-- 镜像列表弹窗 --> | <!-- 镜像列表弹窗 --> | ||||
<div id="imageModal" class="modal" style="display: none;"> | <div id="imageModal" class="modal" style="display: none;"> | ||||
<div class="modal-content"> | <div class="modal-content"> | ||||
@@ -430,7 +417,7 @@ | |||||
return | return | ||||
} | } | ||||
$.get(`/api/v1/repos/${repoPath}/cloudbrain/${jobID}`, (data) => { | |||||
$.get(`/api/v1/repos/${repoPath}/modelarts/${jobID}`, (data) => { | |||||
const jobID = data.JobID | const jobID = data.JobID | ||||
const status = data.JobStatus | const status = data.JobStatus | ||||
$('#' + jobID).text(status) | $('#' + jobID).text(status) | ||||