added kubernetes support
This commit is contained in:
parent
bcd05ebf4e
commit
5d6adb88d8
@ -2,6 +2,7 @@ package mongo
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"log"
|
||||||
|
|
||||||
"git.acooldomain.co/server-manager/backend/dbhandler"
|
"git.acooldomain.co/server-manager/backend/dbhandler"
|
||||||
"git.acooldomain.co/server-manager/backend/models"
|
"git.acooldomain.co/server-manager/backend/models"
|
||||||
@ -10,6 +11,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Image struct {
|
type Image struct {
|
||||||
|
Id string `bson:"id"`
|
||||||
Registry string `bson:"registry"`
|
Registry string `bson:"registry"`
|
||||||
Tag string `bson:"tag"`
|
Tag string `bson:"tag"`
|
||||||
}
|
}
|
||||||
@ -44,6 +46,7 @@ func convertToDbServer(server dbhandler.Server) Server {
|
|||||||
Id: server.Id,
|
Id: server.Id,
|
||||||
Owner: server.Owner,
|
Owner: server.Owner,
|
||||||
Image: Image{
|
Image: Image{
|
||||||
|
Id: server.Image.Id,
|
||||||
Registry: server.Image.Registry,
|
Registry: server.Image.Registry,
|
||||||
Tag: server.Image.Tag,
|
Tag: server.Image.Tag,
|
||||||
},
|
},
|
||||||
@ -68,6 +71,7 @@ func convertToResponseServer(server Server) dbhandler.Server {
|
|||||||
Id: server.Id,
|
Id: server.Id,
|
||||||
Owner: server.Owner,
|
Owner: server.Owner,
|
||||||
Image: &models.Image{
|
Image: &models.Image{
|
||||||
|
Id: server.Image.Id,
|
||||||
Registry: server.Image.Registry,
|
Registry: server.Image.Registry,
|
||||||
Tag: server.Image.Tag,
|
Tag: server.Image.Tag,
|
||||||
},
|
},
|
||||||
@ -82,9 +86,9 @@ type ServersDbHandler struct {
|
|||||||
collection *mongo.Collection
|
collection *mongo.Collection
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *ServersDbHandler) ListServers(ctx context.Context) ([]dbhandler.Server, error) {
|
func (dbh *ServersDbHandler) ListServers(ctx context.Context) ([]dbhandler.Server, error) {
|
||||||
var servers []Server
|
var servers []Server
|
||||||
cursor, err := self.collection.Find(ctx, bson.M{})
|
cursor, err := dbh.collection.Find(ctx, bson.M{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -104,9 +108,9 @@ func (self *ServersDbHandler) ListServers(ctx context.Context) ([]dbhandler.Serv
|
|||||||
return dbServers, nil
|
return dbServers, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *ServersDbHandler) GetServer(ctx context.Context, serverId string) (*dbhandler.Server, error) {
|
func (dbh *ServersDbHandler) GetServer(ctx context.Context, serverId string) (*dbhandler.Server, error) {
|
||||||
var server Server
|
var server Server
|
||||||
err := self.collection.FindOne(ctx, bson.M{"id": serverId}).Decode(&server)
|
err := dbh.collection.FindOne(ctx, bson.M{"id": serverId}).Decode(&server)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -116,22 +120,27 @@ func (self *ServersDbHandler) GetServer(ctx context.Context, serverId string) (*
|
|||||||
return &responseServer, nil
|
return &responseServer, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *ServersDbHandler) CreateServer(ctx context.Context, server dbhandler.Server) error {
|
func (dbh *ServersDbHandler) CreateServer(ctx context.Context, server dbhandler.Server) error {
|
||||||
|
log.Printf("Converting server %#v", server)
|
||||||
dbServer := convertToDbServer(server)
|
dbServer := convertToDbServer(server)
|
||||||
_, err := self.collection.InsertOne(ctx, &dbServer)
|
log.Printf("Converting server %#v", dbServer)
|
||||||
|
_, err := dbh.collection.InsertOne(ctx, &dbServer)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Converting server %e", err)
|
||||||
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *ServersDbHandler) DeleteServer(ctx context.Context, serverId string) error {
|
func (dbh *ServersDbHandler) DeleteServer(ctx context.Context, serverId string) error {
|
||||||
_, err := self.collection.DeleteOne(ctx, bson.M{
|
_, err := dbh.collection.DeleteOne(ctx, bson.M{
|
||||||
"id": serverId,
|
"id": serverId,
|
||||||
})
|
})
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *ServersDbHandler) UpdateServer(ctx context.Context, serverId string, updateParams dbhandler.ServerUpdateRequest) error {
|
func (dbh *ServersDbHandler) UpdateServer(ctx context.Context, serverId string, updateParams dbhandler.ServerUpdateRequest) error {
|
||||||
updateServerRequest := bson.M{}
|
updateServerRequest := bson.M{}
|
||||||
|
|
||||||
if updateParams.Owner != "" {
|
if updateParams.Owner != "" {
|
||||||
@ -163,7 +172,7 @@ func (self *ServersDbHandler) UpdateServer(ctx context.Context, serverId string,
|
|||||||
updateServerRequest["command"] = updateParams.Command
|
updateServerRequest["command"] = updateParams.Command
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err := self.collection.UpdateOne(ctx, bson.M{"id": serverId}, bson.M{"$set": updateServerRequest})
|
_, err := dbh.collection.UpdateOne(ctx, bson.M{"id": serverId}, bson.M{"$set": updateServerRequest})
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -98,6 +98,7 @@ func convertImageInspectToInstanceImage(image image.InspectResponse) instanceman
|
|||||||
fmt.Printf("image: %#v\nconfig: %#v\nports: %#v\n", image, image.Config, ports)
|
fmt.Printf("image: %#v\nconfig: %#v\nports: %#v\n", image, image.Config, ports)
|
||||||
|
|
||||||
return instancemanager.Image{
|
return instancemanager.Image{
|
||||||
|
Id: image.RepoTags[0],
|
||||||
Registry: modelsImage.Registry,
|
Registry: modelsImage.Registry,
|
||||||
Tag: modelsImage.Tag,
|
Tag: modelsImage.Tag,
|
||||||
Command: strings.Join(image.Config.Cmd, " "),
|
Command: strings.Join(image.Config.Cmd, " "),
|
||||||
@ -115,7 +116,6 @@ func convertContainerLabelsToStruct(labels map[string]string) (*ContainerLabels,
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = json.Unmarshal(rawLabels, &containerLabels)
|
err = json.Unmarshal(rawLabels, &containerLabels)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -132,7 +132,6 @@ func convertVolumeLabelsToStruct(labels map[string]string) (*VolumeLabels, error
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = json.Unmarshal(rawLabels, &volumeLabels)
|
err = json.Unmarshal(rawLabels, &volumeLabels)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -149,7 +148,6 @@ func convertImageLabelsToStruct(labels map[string]string) (*ImageLabels, error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = json.Unmarshal(rawLabels, &imageLabels)
|
err = json.Unmarshal(rawLabels, &imageLabels)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -119,11 +119,22 @@ func (i *InstanceManager) ListServers(ctx context.Context) ([]instancemanager.Se
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
ports := make([]models.Port, len(serverManager.Status.Server.HostPorts))
|
||||||
|
|
||||||
|
for i, port := range serverManager.Status.Server.HostPorts {
|
||||||
|
ports[i] = models.Port{
|
||||||
|
Protocol: models.PortProtocol(port.Protocol),
|
||||||
|
PublicPort: uint16(port.HostPort),
|
||||||
|
ContainerPort: uint16(port.TargetPort),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
servers[index] = instancemanager.Server{
|
servers[index] = instancemanager.Server{
|
||||||
Id: serverManager.Name,
|
Id: serverManager.Name,
|
||||||
Running: serverManager.Spec.Server.On,
|
Running: serverManager.Spec.Server.On,
|
||||||
RunningCommand: strings.Join(serverManager.Status.Server.Args, " "),
|
RunningCommand: strings.Join(serverManager.Status.Server.Args, " "),
|
||||||
|
Ports: ports,
|
||||||
|
Domain: serverManager.Status.Server.Domain,
|
||||||
RunningImage: &models.Image{
|
RunningImage: &models.Image{
|
||||||
Registry: image.Registry,
|
Registry: image.Registry,
|
||||||
Tag: image.Tag,
|
Tag: image.Tag,
|
||||||
@ -308,6 +319,8 @@ func (i *InstanceManager) StartFileBrowser(ctx context.Context, serverId string)
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
serverManager.Spec.Browser.On = true
|
||||||
|
|
||||||
err = i.client.Update(ctx, serverManager)
|
err = i.client.Update(ctx, serverManager)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -333,6 +346,8 @@ func (i *InstanceManager) StopFileBrowser(ctx context.Context, serverId string)
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
serverManager.Spec.Browser.On = false
|
||||||
|
|
||||||
err = i.client.Update(ctx, serverManager)
|
err = i.client.Update(ctx, serverManager)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -18,15 +18,14 @@ type ImageData struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func convertImageToImageData(instanceImage instancemanager.Image) *ImageData {
|
func convertImageToImageData(instanceImage instancemanager.Image) *ImageData {
|
||||||
imageId := instanceImage.Registry + ":" + instanceImage.Tag
|
|
||||||
|
|
||||||
return &ImageData{
|
return &ImageData{
|
||||||
Id: imageId,
|
Id: instanceImage.Id,
|
||||||
Name: instanceImage.Registry,
|
Name: instanceImage.Registry,
|
||||||
Version: instanceImage.Tag,
|
Version: instanceImage.Tag,
|
||||||
DisplayName: fmt.Sprintf("%s %s", instanceImage.Registry, instanceImage.Tag),
|
DisplayName: fmt.Sprintf("%s %s", instanceImage.Registry, instanceImage.Tag),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (con ServersApi) GetImages(ctx *gin.Context) {
|
func (con ServersApi) GetImages(ctx *gin.Context) {
|
||||||
images, err := con.InstanceManager.ListImages(ctx)
|
images, err := con.InstanceManager.ListImages(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -80,23 +80,25 @@ func (con ServersApi) CreateServer(ctx *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
instanceImage, err := con.InstanceManager.GetImage(ctx, request.ImageId)
|
||||||
|
if err != nil {
|
||||||
|
ctx.AbortWithError(500, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
instanceServer, err := con.InstanceManager.CreateServer(ctx)
|
instanceServer, err := con.InstanceManager.CreateServer(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.AbortWithError(500, err)
|
ctx.AbortWithError(500, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
imageSegments := strings.Split(request.ImageId, ":")
|
|
||||||
|
|
||||||
registry := imageSegments[0]
|
|
||||||
tag := imageSegments[1]
|
|
||||||
|
|
||||||
err = con.ServersDbHandler.CreateServer(ctx, dbhandler.Server{
|
err = con.ServersDbHandler.CreateServer(ctx, dbhandler.Server{
|
||||||
Id: instanceServer.Id,
|
Id: instanceServer.Id,
|
||||||
Owner: serverClaims.Username,
|
Owner: serverClaims.Username,
|
||||||
Image: &models.Image{
|
Image: &models.Image{
|
||||||
Registry: registry,
|
Id: instanceImage.Id,
|
||||||
Tag: tag,
|
Registry: instanceImage.Registry,
|
||||||
|
Tag: instanceImage.Tag,
|
||||||
},
|
},
|
||||||
Nickname: request.Nickname,
|
Nickname: request.Nickname,
|
||||||
Command: request.DefaultCommand,
|
Command: request.DefaultCommand,
|
||||||
@ -191,6 +193,7 @@ func (con ServersApi) GetServers(ctx *gin.Context) {
|
|||||||
server := serverConfigsMap[instanceServer.Id]
|
server := serverConfigsMap[instanceServer.Id]
|
||||||
|
|
||||||
var image ImageInfo
|
var image ImageInfo
|
||||||
|
log.Printf("server=%#v\t|\tinstanceServer=%#v", server, instanceServer)
|
||||||
|
|
||||||
if instanceServer.Running {
|
if instanceServer.Running {
|
||||||
image = ImageInfo{
|
image = ImageInfo{
|
||||||
@ -198,6 +201,8 @@ func (con ServersApi) GetServers(ctx *gin.Context) {
|
|||||||
Version: instanceServer.RunningImage.Tag,
|
Version: instanceServer.RunningImage.Tag,
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
log.Printf("serverImage:%#v", server.Image)
|
||||||
|
|
||||||
image = ImageInfo{
|
image = ImageInfo{
|
||||||
Name: server.Image.Registry,
|
Name: server.Image.Registry,
|
||||||
Version: server.Image.Tag,
|
Version: server.Image.Tag,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user