diff --git a/dbhandler/mongo/servers.go b/dbhandler/mongo/servers.go index 80c960b..9abdb1d 100644 --- a/dbhandler/mongo/servers.go +++ b/dbhandler/mongo/servers.go @@ -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 } diff --git a/instancemanager/docker/utils.go b/instancemanager/docker/utils.go index c532172..5b9c3f1 100644 --- a/instancemanager/docker/utils.go +++ b/instancemanager/docker/utils.go @@ -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 } diff --git a/instancemanager/kubernetes/instance_manager.go b/instancemanager/kubernetes/instance_manager.go index c4efe3d..79590dd 100644 --- a/instancemanager/kubernetes/instance_manager.go +++ b/instancemanager/kubernetes/instance_manager.go @@ -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 diff --git a/servers/images.go b/servers/images.go index 816be97..9637420 100644 --- a/servers/images.go +++ b/servers/images.go @@ -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 { diff --git a/servers/servers.go b/servers/servers.go index a4bb522..bf797ce 100644 --- a/servers/servers.go +++ b/servers/servers.go @@ -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,