Files
oci-portal/internal/api/console.go
T

58 lines
1.3 KiB
Go

package api
import (
"net/http"
"github.com/gin-gonic/gin"
)
// ---- 控制台连接(VNC / 串口) ----
type createConsoleConnectionRequest struct {
Region string `json:"region"`
SSHPublicKey string `json:"sshPublicKey" binding:"required"`
}
func (h *ociConfigHandler) createConsoleConnection(c *gin.Context) {
id, ok := pathID(c)
if !ok {
return
}
var req createConsoleConnectionRequest
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
conn, err := h.svc.CreateConsoleConnection(c.Request.Context(), id, req.Region, c.Param("instanceId"), req.SSHPublicKey)
if err != nil {
respondError(c, err)
return
}
c.JSON(http.StatusCreated, conn)
}
func (h *ociConfigHandler) listConsoleConnections(c *gin.Context) {
id, ok := pathID(c)
if !ok {
return
}
connections, err := h.svc.ConsoleConnections(c.Request.Context(), id, c.Query("region"), c.Param("instanceId"))
if err != nil {
respondError(c, err)
return
}
c.JSON(http.StatusOK, connections)
}
func (h *ociConfigHandler) deleteConsoleConnection(c *gin.Context) {
id, ok := pathID(c)
if !ok {
return
}
if err := h.svc.DeleteConsoleConnection(c.Request.Context(), id, c.Query("region"), c.Param("connectionId")); err != nil {
respondError(c, err)
return
}
c.Status(http.StatusNoContent)
}