little improve
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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{
|
||||
|
||||
@@ -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"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user