mirror of
https://github.com/onepanelio/onepanel.git
synced 2025-10-05 13:46:51 +08:00
52 lines
1.4 KiB
Go
52 lines
1.4 KiB
Go
package server
|
|
|
|
import (
|
|
"context"
|
|
"github.com/onepanelio/core/api"
|
|
v1 "github.com/onepanelio/core/pkg"
|
|
"github.com/onepanelio/core/server/auth"
|
|
)
|
|
|
|
type WorkspaceTemplateServer struct{}
|
|
|
|
func apiWorkspaceTemplate(wt *v1.WorkspaceTemplate) *api.WorkspaceTemplate {
|
|
res := &api.WorkspaceTemplate{
|
|
Uid: wt.UID,
|
|
Name: wt.Name,
|
|
Version: wt.Version,
|
|
Manifest: wt.Manifest,
|
|
//CreatedAt: wt.CreatedAt.UTC().Format(time.RFC3339),
|
|
}
|
|
|
|
if wt.WorkflowTemplate != nil {
|
|
res.WorkflowTemplate = apiWorkflowTemplate(wt.WorkflowTemplate)
|
|
}
|
|
|
|
return res
|
|
}
|
|
|
|
func NewWorkspaceTemplateServer() *WorkspaceTemplateServer {
|
|
return &WorkspaceTemplateServer{}
|
|
}
|
|
|
|
func (s *WorkspaceTemplateServer) CreateWorkspaceTemplate(ctx context.Context, req *api.CreateWorkspaceTemplateRequest) (*api.WorkspaceTemplate, error) {
|
|
client := ctx.Value("kubeClient").(*v1.Client)
|
|
allowed, err := auth.IsAuthorized(client, req.Namespace, "create", "argoproj.io", "workflowtemplates", "")
|
|
if err != nil || !allowed {
|
|
return nil, err
|
|
}
|
|
|
|
workspaceTemplate := &v1.WorkspaceTemplate{
|
|
Name: req.WorkspaceTemplate.Name,
|
|
Manifest: req.WorkspaceTemplate.Manifest,
|
|
}
|
|
workspaceTemplate, err = client.CreateWorkspaceTemplate(req.Namespace, workspaceTemplate)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
req.WorkspaceTemplate = apiWorkspaceTemplate(workspaceTemplate)
|
|
|
|
return req.WorkspaceTemplate, nil
|
|
}
|