Merge pull request 'added clusterbalance api' (#188) from tzwang/pcm-coordinator:master into master
Former-commit-id: fc0251f2c2a6803f03aa5a5d7b738793cc8d70f4
This commit is contained in:
commit
90b3e9b027
|
@ -978,6 +978,9 @@ service pcm {
|
|||
|
||||
@handler GetComputeCardsByClusterHandler
|
||||
get /schedule/getComputeCardsByCluster/:adapterId/:clusterId (GetComputeCardsByClusterReq) returns (GetComputeCardsByClusterResp)
|
||||
|
||||
@handler GetClusterBalanceByIdHandler
|
||||
get /schedule/getClusterBalanceById/:adapterId/:clusterId (GetClusterBalanceByIdReq) returns (GetClusterBalanceByIdResp)
|
||||
}
|
||||
|
||||
@server(
|
||||
|
|
|
@ -141,4 +141,13 @@ type (
|
|||
GetComputeCardsByClusterResp {
|
||||
Cards []string `json:"cards"`
|
||||
}
|
||||
|
||||
GetClusterBalanceByIdReq{
|
||||
AdapterId string `path:"adapterId"`
|
||||
ClusterId string `path:"clusterId"`
|
||||
}
|
||||
|
||||
GetClusterBalanceByIdResp{
|
||||
Balance float64 `json:"balance"`
|
||||
}
|
||||
)
|
|
@ -1225,6 +1225,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
|||
Path: "/schedule/getComputeCardsByCluster/:adapterId/:clusterId",
|
||||
Handler: schedule.GetComputeCardsByClusterHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodGet,
|
||||
Path: "/schedule/getClusterBalanceById/:adapterId/:clusterId",
|
||||
Handler: schedule.GetClusterBalanceByIdHandler(serverCtx),
|
||||
},
|
||||
},
|
||||
rest.WithPrefix("/pcm/v1"),
|
||||
)
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
package schedule
|
||||
|
||||
import (
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/repository/result"
|
||||
"net/http"
|
||||
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/logic/schedule"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
)
|
||||
|
||||
func GetClusterBalanceByIdHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req types.GetClusterBalanceByIdReq
|
||||
if err := httpx.Parse(r, &req); err != nil {
|
||||
result.ParamErrorResult(r, w, err)
|
||||
return
|
||||
}
|
||||
|
||||
l := schedule.NewGetClusterBalanceByIdLogic(r.Context(), svcCtx)
|
||||
resp, err := l.GetClusterBalanceById(&req)
|
||||
result.HttpResult(r, w, resp, err)
|
||||
|
||||
}
|
||||
}
|
|
@ -143,6 +143,11 @@ func (l *PageListTaskLogic) updateTaskStatus(tasks []*types.TaskModel, ch chan<-
|
|||
}
|
||||
}
|
||||
|
||||
if len(aiTask) == 0 {
|
||||
ch <- struct{}{}
|
||||
return
|
||||
}
|
||||
|
||||
start, _ := time.ParseInLocation(constants.Layout, aiTask[0].StartTime, time.Local)
|
||||
end, _ := time.ParseInLocation(constants.Layout, aiTask[0].EndTime, time.Local)
|
||||
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package schedule
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/svc"
|
||||
"gitlink.org.cn/JointCloud/pcm-coordinator/api/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type GetClusterBalanceByIdLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewGetClusterBalanceByIdLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetClusterBalanceByIdLogic {
|
||||
return &GetClusterBalanceByIdLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *GetClusterBalanceByIdLogic) GetClusterBalanceById(req *types.GetClusterBalanceByIdReq) (resp *types.GetClusterBalanceByIdResp, err error) {
|
||||
resp = &types.GetClusterBalanceByIdResp{}
|
||||
balance, err := l.svcCtx.Scheduler.AiService.AiCollectorAdapterMap[req.AdapterId][req.ClusterId].GetUserBalance(l.ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp.Balance = balance
|
||||
|
||||
return resp, nil
|
||||
}
|
|
@ -11,6 +11,7 @@ type AiCollector interface {
|
|||
DownloadAlgorithmCode(ctx context.Context, resourceType string, card string, taskType string, dataset string, algorithm string) (string, error)
|
||||
UploadAlgorithmCode(ctx context.Context, resourceType string, card string, taskType string, dataset string, algorithm string, code string) error
|
||||
GetComputeCards(ctx context.Context) ([]string, error)
|
||||
GetUserBalance(ctx context.Context) (float64, error)
|
||||
}
|
||||
|
||||
type ResourceStats struct {
|
||||
|
|
|
@ -187,6 +187,10 @@ func (m *ModelArtsLink) GetComputeCards(ctx context.Context) ([]string, error) {
|
|||
return nil, nil
|
||||
}
|
||||
|
||||
func (m *ModelArtsLink) GetUserBalance(ctx context.Context) (float64, error) {
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
func (m *ModelArtsLink) DownloadAlgorithmCode(ctx context.Context, resourceType string, card string, taskType string, dataset string, algorithm string) (string, error) {
|
||||
return "", nil
|
||||
}
|
||||
|
|
|
@ -359,6 +359,25 @@ func (o *OctopusLink) GetComputeCards(ctx context.Context) ([]string, error) {
|
|||
return cards, nil
|
||||
}
|
||||
|
||||
func (o *OctopusLink) GetUserBalance(ctx context.Context) (float64, error) {
|
||||
balanceReq := &octopus.GetUserBalanceReq{
|
||||
Platform: o.platform,
|
||||
}
|
||||
balanceResp, err := o.octopusRpc.GetUserBalance(ctx, balanceReq)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
if !balanceResp.Success {
|
||||
if balanceResp.Error != nil {
|
||||
return 0, errors.New(balanceResp.Error.Message)
|
||||
} else {
|
||||
return 0, errors.New("failed to get user balance")
|
||||
}
|
||||
}
|
||||
balance := float64(balanceResp.Payload.BillingUser.Amount)
|
||||
return balance, nil
|
||||
}
|
||||
|
||||
func (o *OctopusLink) DownloadAlgorithmCode(ctx context.Context, resourceType string, card string, taskType string, dataset string, algorithm string) (string, error) {
|
||||
var name string
|
||||
if resourceType == CARD {
|
||||
|
|
|
@ -453,6 +453,16 @@ func (s *ShuguangAi) GetComputeCards(ctx context.Context) ([]string, error) {
|
|||
return cards, nil
|
||||
}
|
||||
|
||||
func (s *ShuguangAi) GetUserBalance(ctx context.Context) (float64, error) {
|
||||
userReq := &hpcAC.GetUserInfoReq{}
|
||||
userinfo, err := s.aCRpc.GetUserInfo(ctx, userReq)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
balance, _ := strconv.ParseFloat(userinfo.Data.AccountBalance, 64)
|
||||
return balance, nil
|
||||
}
|
||||
|
||||
func (s *ShuguangAi) DownloadAlgorithmCode(ctx context.Context, resourceType string, card string, taskType string, dataset string, algorithm string) (string, error) {
|
||||
algoName := dataset + DASH + algorithm
|
||||
req := &hpcAC.GetFileReq{
|
||||
|
|
|
@ -5746,6 +5746,15 @@ type GetComputeCardsByClusterResp struct {
|
|||
Cards []string `json:"cards"`
|
||||
}
|
||||
|
||||
type GetClusterBalanceByIdReq struct {
|
||||
AdapterId string `path:"adapterId"`
|
||||
ClusterId string `path:"clusterId"`
|
||||
}
|
||||
|
||||
type GetClusterBalanceByIdResp struct {
|
||||
Balance float64 `json:"balance"`
|
||||
}
|
||||
|
||||
type CreateAlertRuleReq struct {
|
||||
CLusterId string `json:"clusterId"`
|
||||
ClusterName string `json:"clusterName"`
|
||||
|
|
Loading…
Reference in New Issue