basic curd for image model
This commit is contained in:
parent
cf02a4b41b
commit
4e9d9b9cb0
|
|
@ -6,8 +6,8 @@ import (
|
|||
cp "github.com/otiai10/copy"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/thoas/go-funk"
|
||||
k8s_manager "k8s-manager/src"
|
||||
"k8s-manager/src/model"
|
||||
k8s_manager "k8s-manager/src/utils"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ package controller
|
|||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
log "github.com/sirupsen/logrus"
|
||||
k8s_manager "k8s-manager/src"
|
||||
"k8s-manager/src/model"
|
||||
"k8s-manager/src/service"
|
||||
k8s_manager "k8s-manager/src/utils"
|
||||
"k8s.io/api/apps/v1"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,61 @@
|
|||
package controller
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"gorm.io/gorm"
|
||||
"k8s-manager/src/model"
|
||||
utils "k8s-manager/src/utils"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func AddImage(c *gin.Context) {
|
||||
image := &model.ImageModel{}
|
||||
if utils.GinErrorCheck(c, c.BindJSON(image)) {
|
||||
return
|
||||
}
|
||||
username := c.MustGet("username").(string)
|
||||
image.UserName = username
|
||||
image.Create()
|
||||
utils.GinOk(c, "ok")
|
||||
}
|
||||
|
||||
func DeleteImage(c *gin.Context) {
|
||||
image := &model.ImageModel{}
|
||||
if utils.GinErrorCheck(c, c.BindJSON(image)) {
|
||||
return
|
||||
}
|
||||
username := c.MustGet("username").(string)
|
||||
oldImage := &model.ImageModel{Model: gorm.Model{ID: image.ID}}
|
||||
oldImage.Fill()
|
||||
if oldImage.UserName != username {
|
||||
utils.GinError(c, http.StatusUnauthorized, "username error")
|
||||
return
|
||||
}
|
||||
image.Delete()
|
||||
}
|
||||
|
||||
func UpdateImage(c *gin.Context) {
|
||||
image := &model.ImageModel{}
|
||||
if utils.GinErrorCheck(c, c.BindJSON(image)) {
|
||||
return
|
||||
}
|
||||
username := c.MustGet("username").(string)
|
||||
oldImage := &model.ImageModel{Model: gorm.Model{ID: image.ID}}
|
||||
oldImage.Fill()
|
||||
if oldImage.UserName != username {
|
||||
utils.GinError(c, http.StatusUnauthorized, "username error")
|
||||
return
|
||||
}
|
||||
image.Save()
|
||||
}
|
||||
|
||||
func MyImages(c *gin.Context) {
|
||||
username := c.MustGet("username").(string)
|
||||
myImages := model.GetMyImages(username)
|
||||
c.JSON(http.StatusOK, gin.H{"images": myImages})
|
||||
}
|
||||
|
||||
func PublicImages(c *gin.Context) {
|
||||
myImages := model.GetPublicImages()
|
||||
c.JSON(http.StatusOK, gin.H{"images": myImages})
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"gorm.io/gorm"
|
||||
k8s_manager "k8s-manager/src"
|
||||
)
|
||||
|
||||
type DataModel struct {
|
||||
gorm.Model
|
||||
Type string
|
||||
Name string
|
||||
Comment string
|
||||
AccessInfo string
|
||||
}
|
||||
|
||||
func (*DataModel) TableName() string {
|
||||
return "data"
|
||||
}
|
||||
|
||||
func (d *DataModel) Fill() {
|
||||
db := k8s_manager.DB()
|
||||
db.First(d, d.ID)
|
||||
}
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"gorm.io/gorm"
|
||||
k8s_manager "k8s-manager/src"
|
||||
)
|
||||
|
||||
type ImageModel struct {
|
||||
gorm.Model
|
||||
Image string
|
||||
Comment string
|
||||
Command string
|
||||
Env string
|
||||
Port string
|
||||
UserName string
|
||||
IsPublished bool
|
||||
}
|
||||
|
||||
func (*ImageModel) TableName() string {
|
||||
return "images"
|
||||
}
|
||||
|
||||
func (i *ImageModel) Fill() {
|
||||
db := k8s_manager.DB()
|
||||
db.First(i, i.ID)
|
||||
}
|
||||
|
||||
func (i *ImageModel) Create() {
|
||||
db := k8s_manager.DB()
|
||||
db.Create(i)
|
||||
}
|
||||
|
||||
func (i *ImageModel) Save() {
|
||||
db := k8s_manager.DB()
|
||||
db.Save(i)
|
||||
}
|
||||
|
||||
func (i *ImageModel) Delete() {
|
||||
db := k8s_manager.DB()
|
||||
db.Delete(i)
|
||||
}
|
||||
|
||||
func GetMyImages(username string) []ImageModel {
|
||||
db := k8s_manager.DB()
|
||||
ans := make([]ImageModel, 0)
|
||||
db.Where(&ImageModel{UserName: username}).Find(&ans)
|
||||
return ans
|
||||
}
|
||||
|
||||
func GetPublicImages() []ImageModel {
|
||||
db := k8s_manager.DB()
|
||||
ans := make([]ImageModel, 0)
|
||||
db.Where(&ImageModel{IsPublished: true}).Find(&ans)
|
||||
return ans
|
||||
}
|
||||
|
|
@ -22,33 +22,6 @@ func (*ProjectModel) TableName() string {
|
|||
return "projects"
|
||||
}
|
||||
|
||||
type ImageModel struct {
|
||||
gorm.Model
|
||||
Image string
|
||||
Comment string
|
||||
Command string
|
||||
Env string
|
||||
Port string
|
||||
UserName string
|
||||
IsPublished bool
|
||||
}
|
||||
|
||||
func (*ImageModel) TableName() string {
|
||||
return "images"
|
||||
}
|
||||
|
||||
type DataModel struct {
|
||||
gorm.Model
|
||||
Type string
|
||||
Name string
|
||||
Comment string
|
||||
AccessInfo string
|
||||
}
|
||||
|
||||
func (*DataModel) TableName() string {
|
||||
return "data"
|
||||
}
|
||||
|
||||
type RunningProject struct {
|
||||
Project *ProjectModel
|
||||
StartTime *time.Time
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import (
|
|||
"github.com/thoas/go-funk"
|
||||
"k8s-manager/src"
|
||||
"k8s-manager/src/model"
|
||||
"k8s-manager/src/utils"
|
||||
appv1 "k8s.io/api/apps/v1"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
netv1 "k8s.io/api/networking/v1"
|
||||
|
|
@ -96,7 +97,7 @@ func (c *K8sClient) UpdateDeployment(app *model.AppModel) {
|
|||
Labels: l,
|
||||
},
|
||||
Spec: appv1.DeploymentSpec{
|
||||
Replicas: k8s_manager.UnnamedPointer(int32(1)),
|
||||
Replicas: utils.UnnamedPointer(int32(1)),
|
||||
Selector: &metav1.LabelSelector{
|
||||
MatchLabels: l,
|
||||
},
|
||||
|
|
@ -122,7 +123,7 @@ func (c *K8sClient) UpdateDeployment(app *model.AppModel) {
|
|||
},
|
||||
Ports: containerPorts,
|
||||
SecurityContext: &v1.SecurityContext{
|
||||
RunAsUser: k8s_manager.UnnamedPointer(int64(0)),
|
||||
RunAsUser: utils.UnnamedPointer(int64(0)),
|
||||
},
|
||||
}},
|
||||
Volumes: []v1.Volume{
|
||||
|
|
@ -315,7 +316,7 @@ func (c *K8sClient) UpdateIngress(a *model.AppModel) {
|
|||
Annotations: annotations,
|
||||
},
|
||||
Spec: netv1.IngressSpec{
|
||||
IngressClassName: k8s_manager.UnnamedPointer("nginx"),
|
||||
IngressClassName: utils.UnnamedPointer("nginx"),
|
||||
Rules: []netv1.IngressRule{
|
||||
{
|
||||
IngressRuleValue: netv1.IngressRuleValue{
|
||||
|
|
@ -323,7 +324,7 @@ func (c *K8sClient) UpdateIngress(a *model.AppModel) {
|
|||
Paths: []netv1.HTTPIngressPath{
|
||||
{
|
||||
Path: "/svc/" + a.URLPrefix() + "(/|$)(.*)",
|
||||
PathType: k8s_manager.UnnamedPointer(netv1.PathTypePrefix),
|
||||
PathType: utils.UnnamedPointer(netv1.PathTypePrefix),
|
||||
Backend: netv1.IngressBackend{
|
||||
Service: &netv1.IngressServiceBackend{
|
||||
Name: a.ServiceName(),
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
package k8s_manager
|
||||
package utils
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
|
|
@ -20,3 +20,11 @@ func GinOk(c *gin.Context, msg string) {
|
|||
func GinOkData(c *gin.Context, data interface{}) {
|
||||
c.JSON(http.StatusOK, gin.H{"ok": true, "data": data})
|
||||
}
|
||||
|
||||
func GinErrorCheck(c *gin.Context, err error) bool {
|
||||
if err != nil {
|
||||
GinError(c, http.StatusBadRequest, err.Error())
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
Loading…
Reference in New Issue