little improve

This commit is contained in:
starryskymeow
2025-07-05 06:04:40 +08:00
parent fa18edc20f
commit 49d90848d8
5 changed files with 74 additions and 67 deletions

View File

@@ -8,7 +8,7 @@ import (
"k8s.io/client-go/kubernetes"
)
const Namespace = "default" // Or get from config
const Namespace = "educode"
type Handler struct {
clientset *kubernetes.Clientset
@@ -24,25 +24,31 @@ func (h *Handler) createWorkspace(c *gin.Context) {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
image := k8s.DefaultImage
if req.Image != "" {
image = req.Image
}
k8sReq := &k8s.WorkspaceRequest{
Image: image,
Env: req.Env,
WorkspaceID: req.WorkspaceID,
Clientset: h.clientset,
Namespace: Namespace,
}
resourceLimits := k8s.DefaultResourceLimits
if req.ResourceLimits != nil {
k8sReq.ResourceLimits = &k8s.ResourceLimits{
CPU: req.ResourceLimits.CPU,
Memory: req.ResourceLimits.Memory,
if req.ResourceLimits.CPU != "" {
resourceLimits.CPU = req.ResourceLimits.CPU
}
if req.ResourceLimits.Memory != "" {
resourceLimits.Memory = req.ResourceLimits.Memory
}
if req.ResourceLimits.Storage != "" {
resourceLimits.Storage = req.ResourceLimits.Storage
}
}
k8sReq := &k8s.WorkspaceRequest{
Image: image,
Env: req.Env,
ResourceLimits: &resourceLimits,
WorkspaceID: req.WorkspaceID,
Clientset: h.clientset,
Namespace: Namespace,
}
err := k8s.CreateWorkspace(k8sReq)

View File

@@ -11,7 +11,6 @@ func NewServer(clientset *kubernetes.Clientset) *gin.Engine {
// Create a new handler with the clientset
h := NewHandler(clientset)
// Health check endpoint
r.GET("/healthz", func(c *gin.Context) {
c.JSON(200, gin.H{

View File

@@ -1,15 +1,13 @@
package api
import (
"gitea.starryskymeow.cn/xkm/educode-controller/internal/k8s"
)
// CreateWorkspaceRequest defines the request body for creating a new workspace.
type CreateWorkspaceRequest struct {
Image string `json:"image"`
Env map[string]string `json:"env"`
ResourceLimits *ResourceLimits `json:"resourceLimits"`
WorkspaceID string `json:"workspaceId"`
}
// ResourceLimits defines the CPU and memory resource limits.
type ResourceLimits struct {
CPU string `json:"cpu"`
Memory string `json:"memory"`
Image string `json:"image"`
Env map[string]string `json:"env"`
ResourceLimits *k8s.ResourceLimits `json:"resourceLimits"`
WorkspaceID string `json:"workspaceId"`
}