go18/devcloud/cmdb/apps/secret/interface.go

98 lines
2.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package secret
import (
"context"
"122.51.31.227/go-course/go18/devcloud/cmdb/apps/resource"
"122.51.31.227/go-course/go18/devcloud/mcenter/apps/policy"
"github.com/infraboard/mcube/v2/http/request"
"github.com/infraboard/mcube/v2/ioc"
"github.com/infraboard/mcube/v2/tools/pretty"
"github.com/infraboard/mcube/v2/types"
"github.com/infraboard/modules/task/apps/task"
)
const (
APP_NAME = "secret"
SECRET_KEY = "23gs6gxHrz1kNEvshRmunkXbwIiaEcYfh+EMu+e9ewA="
)
func GetService() Service {
return ioc.Controller().Get(APP_NAME).(Service)
}
type Service interface {
// 用于Secret的管理(后台管理员配置)
// 创建secret
CreateSecret(context.Context, *CreateSecretRequest) (*Secret, error)
// 查询secret
QuerySecret(context.Context, *QuerySecretRequest) (*types.Set[*Secret], error)
// 查询详情, 已解密, API层需要脱敏
DescribeSecret(context.Context, *DescribeSecretRequeset) (*Secret, error)
// 基于云商凭证来同步资源
// 怎么API怎么设计
// 同步阿里云所有资源, 10分钟30分钟 ...
// 这个接口调用持续30分钟...
// 需要拆解为异步任务: 用户调用了同步后, 里面返回, 这个同步任务在后台执行(Gorouties), 需要查询同步日志(Ws)
// 使用task模块来执行异步任务, 通过TaskId查询异步任务状态
SyncResource(context.Context, *SyncResourceRequest) (*types.Set[*task.Task], error)
}
// 同步记录(task) 有状态
type SyncResourceTask struct {
}
type QuerySyncLogRequest struct {
TaskId int `json:"task_id"`
}
// 每个资源的同步日志
type SyncRecord struct {
}
type ResourceResponse struct {
Success bool
InstanceId string `json:"instance_id"`
Resource *resource.Resource `json:"resource"`
Message string `json:"message"`
}
func (t ResourceResponse) String() string {
return pretty.ToJSON(t)
}
func NewQuerySecretRequest() *QuerySecretRequest {
return &QuerySecretRequest{
PageRequest: request.NewDefaultPageRequest(),
}
}
type QuerySecretRequest struct {
policy.ResourceScope
// 分页请求
*request.PageRequest
}
func NewDescribeSecretRequeset(id string) *DescribeSecretRequeset {
return &DescribeSecretRequeset{
Id: id,
}
}
type DescribeSecretRequeset struct {
policy.ResourceScope
Id string `json:"id"`
}
func NewSyncResourceRequest(id string) *SyncResourceRequest {
return &SyncResourceRequest{
Id: id,
}
}
type SyncResourceRequest struct {
Id string `json:"id"`
}