diff --git a/api/desc/core/pcm-core.api b/api/desc/core/pcm-core.api index e3b73686..2569f595 100644 --- a/api/desc/core/pcm-core.api +++ b/api/desc/core/pcm-core.api @@ -441,4 +441,29 @@ type NodeAsset { GpuTotal int64 `json:"GpuTotal"` // gpu总数 GpuAvail int64 `json:"GpuAvail"` // gpu可用数 ParticipantId int64 `json:"ParticipantId"` // 集群动态信息id +} + +type SaveHashcatReq { + CrackTaskId int64 `json:"crackTaskId"` // 任务id + CrackStatus string `json:"crackStatus"` // 状态 + CrackStartTime string `json:"crackStartTime"` //开始时间 + CrackEstimatedTime string `json:"crackEstimatedTime"` // 预计时间 + CrackProgress string `json:"crackProgress"` // 进度 + CrackResult string `json:"crackResult"` // 结果 +} + +type getHashcatHandlerReq { + CrackTaskId int64 `json:"crackTaskId"` // 任务id +} + +type getHashcatHandlerResp { + HashCatList []HashCat `json:"hashCatList"` +} + +type HashCat { + CrackStatus string `json:"crackStatus"` // 状态 + CrackStartTime string `json:"crackStartTime"` //开始时间 + CrackEstimatedTime string `json:"crackEstimatedTime"` // 预计时间 + CrackProgress string `json:"crackProgress"` // 进度 + CrackResult string `json:"crackResult"` // 结果 } \ No newline at end of file diff --git a/api/desc/pcm.api b/api/desc/pcm.api index e6ba568e..a7d9586a 100644 --- a/api/desc/pcm.api +++ b/api/desc/pcm.api @@ -68,6 +68,11 @@ service pcm { @handler nodeAssetsHandler get /core/assets () returns (NodeAssetsResp) + @handler saveHashcatHandler + post /core/saveHashcat (SaveHashcatReq) returns () + + @handler getHashcatHandler + get /core/getHashcat/:crackTaskId (getHashcatHandlerReq) returns (getHashcatHandlerResp) } //hpc二级接口 @@ -97,7 +102,6 @@ service pcm { @handler deleteYamlHandler get /cloud/DeleteYaml (ApplyReq) returns (DeleteResp) - } //智算二级接口 @@ -132,16 +136,16 @@ service pcm { // ListAlgorithms 查询创建算法列表 @handler ListAlgorithms //get /ai/ListAlgorithms (ListAlgorithmsReq) returns (ListAlgorithmsResp) - get /ai/ListAlgorithms/:projectId (ListAlgorithmsReq) returns (ListAlgorithmsResp) + get /ai/ListAlgorithms/:projectId (ListAlgorithmsReq) returns (ListAlgorithmsResp) // DeleteAlgorithm 删除算法 @handler DeleteAlgorithm - delete /ai/DeleteAlgorithm/:projectId/:algorithmId (DeleteAlgorithmReq) returns (DeleteAlgorithmResp) + delete /ai/DeleteAlgorithm/:projectId/:algorithmId (DeleteAlgorithmReq) returns (DeleteAlgorithmResp) // CreateTrainingJob 创建训练作业 @handler CreateTrainingJobHandler post /ai/CreateTrainingJob/:projectId (CreateTrainingJobReq) returns (CreateTrainingJobResp) // ShowAlgorithmByUuid 展示算法详情 @handler ShowAlgorithmByUuid - get /ai/ShowAlgorithmByUuid/:projectId/:algorithmId (ShowAlgorithmByUuidReq) returns (ShowAlgorithmByUuidResp) + get /ai/ShowAlgorithmByUuid/:projectId/:algorithmId (ShowAlgorithmByUuidReq) returns (ShowAlgorithmByUuidResp) // creat export task 创建导出任务 @handler CreateExportTaskHandler @@ -166,7 +170,7 @@ service pcm { get /ai/ShowService/:projectId/:serviceId (ShowServiceReq) returns (ShowServiceResp) // Delete service 删除服务 @handler DeleteServiceHandler - delete /ai/DeleteService/:projectId/:serviceId (DeleteServiceReq) returns (DeleteServiceResp) + delete /ai/DeleteService/:projectId/:serviceId (DeleteServiceReq) returns (DeleteServiceResp) // ListClusters查询专属资源池列表 @handler ListClustersHandler get /ai/ListClusters (ListClustersReq) returns (ListClustersResp) @@ -236,7 +240,6 @@ service pcm { group : vm ) service pcm { - @handler GetComputeLimitsHandler get /vm/getComputeLimits (GetComputeLimitsReq) returns (GetComputeLimitsResp) @handler GetVolumeLimitsHandler @@ -256,17 +259,17 @@ service pcm { @handler DeleteNetworkHandler delete /vm/deleteNetwork (DeleteNetworkReq) returns (DeleteNetworkResp) @handler CreateNetworkHandler - post /vm/createNetwork (CreateNetworkReq) returns (CreateNetworkResp) + post /vm/createNetwork (CreateNetworkReq) returns (CreateNetworkResp) @handler CreateSubnetHandler - post /vm/createSubnet (CreateSubnetReq) returns (CreateSubnetResp) + post /vm/createSubnet (CreateSubnetReq) returns (CreateSubnetResp) @handler ListVolumesDetailHandler - get /vm/listVolumesDetail (ListVolumesDetailReq) returns (ListVolumesDetailResp) + get /vm/listVolumesDetail (ListVolumesDetailReq) returns (ListVolumesDetailResp) @handler DeleteVolumeHandler delete /vm/deleteVolume (DeleteVolumeReq) returns (DeleteVolumeResp) @handler CreateVolumeHandler - post /vm/createVolume (CreateVolumeReq) returns (CreateVolumeResp) + post /vm/createVolume (CreateVolumeReq) returns (CreateVolumeResp) @handler ListFlavorsDetailHandler - get /vm/listFlavorsDetail (ListFlavorsDetailReq) returns (ListFlavorsDetailResp) + get /vm/listFlavorsDetail (ListFlavorsDetailReq) returns (ListFlavorsDetailResp) @handler CreateServerHandler - post /vm/createServer (CreateServerReq) returns (CreateServerResp) + post /vm/createServer (CreateServerReq) returns (CreateServerResp) } \ No newline at end of file diff --git a/api/internal/handler/core/gethashcathandler.go b/api/internal/handler/core/gethashcathandler.go new file mode 100644 index 00000000..6e618833 --- /dev/null +++ b/api/internal/handler/core/gethashcathandler.go @@ -0,0 +1,17 @@ +package core + +import ( + "gitlink.org.cn/jcce-pcm/utils/result" + "net/http" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/core" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" +) + +func GetHashcatHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + l := core.NewGetHashcatLogic(r.Context(), svcCtx) + resp, err := l.GetHashcat() + result.HttpResult(r, w, resp, err) + } +} diff --git a/api/internal/handler/core/savehashcathandler.go b/api/internal/handler/core/savehashcathandler.go new file mode 100644 index 00000000..c5f1be16 --- /dev/null +++ b/api/internal/handler/core/savehashcathandler.go @@ -0,0 +1,25 @@ +package core + +import ( + "gitlink.org.cn/jcce-pcm/utils/result" + "net/http" + + "github.com/zeromicro/go-zero/rest/httpx" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/logic/core" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" +) + +func SaveHashcatHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.SaveHashcatReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := core.NewSaveHashcatLogic(r.Context(), svcCtx) + err := l.SaveHashcat(&req) + result.HttpResult(r, w, nil, err) + } +} diff --git a/api/internal/handler/routes.go b/api/internal/handler/routes.go index 8c5d963c..1718d620 100644 --- a/api/internal/handler/routes.go +++ b/api/internal/handler/routes.go @@ -94,6 +94,16 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { Path: "/core/assets", Handler: core.NodeAssetsHandler(serverCtx), }, + { + Method: http.MethodPost, + Path: "/core/saveHashcat", + Handler: core.SaveHashcatHandler(serverCtx), + }, + { + Method: http.MethodGet, + Path: "/core/getHashcat/:crackTaskId", + Handler: core.GetHashcatHandler(serverCtx), + }, }, rest.WithPrefix("/pcm/v1"), ) diff --git a/api/internal/logic/core/gethashcatlogic.go b/api/internal/logic/core/gethashcatlogic.go new file mode 100644 index 00000000..784224d7 --- /dev/null +++ b/api/internal/logic/core/gethashcatlogic.go @@ -0,0 +1,38 @@ +package core + +import ( + "context" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/model" + "gitlink.org.cn/jcce-pcm/utils/tool" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetHashcatLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewGetHashcatLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetHashcatLogic { + return &GetHashcatLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *GetHashcatLogic) GetHashcat() (resp *types.GetHashcatHandlerResp, err error) { + // todo: add your logic here and delete this line + var hashcatList []*model.THashcat + tx := l.svcCtx.DbEngin.Find(&hashcatList) + if tx.Error != nil { + return nil, tx.Error + } + result := types.GetHashcatHandlerResp{} + tool.Convert(hashcatList, &result.HashCatList) + return &result, nil +} diff --git a/api/internal/logic/core/savehashcatlogic.go b/api/internal/logic/core/savehashcatlogic.go new file mode 100644 index 00000000..b800c982 --- /dev/null +++ b/api/internal/logic/core/savehashcatlogic.go @@ -0,0 +1,37 @@ +package core + +import ( + "context" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/model" + "gitlink.org.cn/jcce-pcm/utils/tool" + + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc" + "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type SaveHashcatLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewSaveHashcatLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SaveHashcatLogic { + return &SaveHashcatLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *SaveHashcatLogic) SaveHashcat(req *types.SaveHashcatReq) error { + var hashcat model.THashcat + tool.Convert(req, &hashcat) + hashcat.Id = tool.GenSnowflakeID() + tx := l.svcCtx.DbEngin.Save(hashcat) + if tx.Error != nil { + return tx.Error + } + return nil +} diff --git a/api/internal/types/types.go b/api/internal/types/types.go index ff0f063f..5c1b5994 100644 --- a/api/internal/types/types.go +++ b/api/internal/types/types.go @@ -413,6 +413,31 @@ type NodeAsset struct { ParticipantId int64 `json:"ParticipantId"` // 集群动态信息id } +type SaveHashcatReq struct { + CrackTaskId int64 `json:"crackTaskId"` // 任务id + CrackStatus string `json:"crackStatus"` // 状态 + CrackStartTime string `json:"crackStartTime"` //开始时间 + CrackEstimatedTime string `json:"crackEstimatedTime"` // 预计时间 + CrackProgress string `json:"crackProgress"` // 进度 + CrackResult string `json:"crackResult"` // 结果 +} + +type GetHashcatHandlerReq struct { + CrackTaskId int64 `json:"crackTaskId"` // 任务id +} + +type GetHashcatHandlerResp struct { + HashCatList []HashCat `json:"hashCatList"` +} + +type HashCat struct { + CrackStatus string `json:"crackStatus"` // 状态 + CrackStartTime string `json:"crackStartTime"` //开始时间 + CrackEstimatedTime string `json:"crackEstimatedTime"` // 预计时间 + CrackProgress string `json:"crackProgress"` // 进度 + CrackResult string `json:"crackResult"` // 结果 +} + type Job struct { SlurmVersion string `json:"slurmVersion"` Name string `json:"name"` diff --git a/model/cloudmodel_gen.go b/model/cloudmodel_gen.go index fa63395e..c0fbdb4f 100644 --- a/model/cloudmodel_gen.go +++ b/model/cloudmodel_gen.go @@ -37,20 +37,20 @@ type ( Id int64 `db:"id"` // id TaskId int64 `db:"task_id"` // 任务id ParticipantId int64 `db:"participant_id"` // 集群静态信息id - ApiVersion string `db:"api_version"` - Name string `db:"name"` // 名称 - Namespace string `db:"namespace"` // 命名空间 - Kind string `db:"kind"` // 种类 - Status string `db:"status"` // 状态 - StartTime string `db:"start_time"` // 开始时间 - RunningTime int64 `db:"running_time"` // 运行时长 - CreatedBy int64 `db:"created_by"` // 创建人 - CreatedTime sql.NullTime `db:"created_time"` // 创建时间 - UpdatedBy int64 `db:"updated_by"` // 更新人 - UpdatedTime sql.NullTime `db:"updated_time"` // 更新时间 - DeletedFlag int64 `db:"deleted_flag"` // 是否删除(0-否,1-是) + ApiVersion string `db:"api_version"` //api版本 + Name string `db:"name"` // 名称 + Namespace string `db:"namespace"` // 命名空间 + Kind string `db:"kind"` // 种类 + Status string `db:"status"` // 状态 + StartTime string `db:"start_time"` // 开始时间 + RunningTime int64 `db:"running_time"` // 运行时长 + CreatedBy int64 `db:"created_by"` // 创建人 + CreatedTime sql.NullTime `db:"created_time"` // 创建时间 + UpdatedBy int64 `db:"updated_by"` // 更新人 + UpdatedTime sql.NullTime `db:"updated_time"` // 更新时间 + DeletedFlag int64 `db:"deleted_flag"` // 是否删除(0-否,1-是) YamlString string `db:"yaml_string"` - Result string `db:"result"` + Result string `db:"result"` // 运行结果 } ) diff --git a/model/thashcat.go b/model/thashcat.go new file mode 100644 index 00000000..685443f3 --- /dev/null +++ b/model/thashcat.go @@ -0,0 +1,37 @@ +// Code generated by goctl. DO NOT EDIT. + +package model + +import ( + "database/sql" + "github.com/zeromicro/go-zero/core/stores/sqlx" +) + +type ( + defaultTHashcatModel struct { + conn sqlx.SqlConn + table string + } + + THashcat struct { + Id int64 `db:"id"` // id + CrackTaskId int64 `db:"crack_task_id"` // 任务id + CrackStatus string `db:"crack_status"` // 状态 + CrackStartTime string `db:"crack_start_time"` //开始时间 + CrackEstimatedTime string `db:"crack_estimated_time"` // 预计时间 + CrackProgress string `db:"crack_progress"` // 进度 + CrackResult string `db:"crack_result"` // 结果 + CreatedBy int64 `db:"created_by"` // 创建人 + CreatedTime sql.NullTime `db:"created_time"` // 创建时间 + UpdatedBy int64 `db:"updated_by"` // 更新人 + UpdatedTime sql.NullTime `db:"updated_time"` // 更新时间 + DeletedFlag int64 `db:"deleted_flag"` // 是否删除(0-否,1-是) + } +) + +func newTHashcatModel(conn sqlx.SqlConn) *defaultCloudModel { + return &defaultCloudModel{ + conn: conn, + table: "`cloud`", + } +}