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