Skip to content

Commit 9b21e93

Browse files
committed
fix: add machine pages
1 parent 1b0418c commit 9b21e93

10 files changed

Lines changed: 705 additions & 0 deletions

File tree

controllers/machine.go

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
package controllers
2+
3+
import (
4+
"encoding/json"
5+
6+
"github.com/casosorg/casos/object"
7+
)
8+
9+
func (c *ApiController) GetGlobalMachines() {
10+
if c.RequireAdmin() {
11+
return
12+
}
13+
14+
machines, err := object.GetGlobalMachines()
15+
if err != nil {
16+
c.ResponseError(err.Error())
17+
return
18+
}
19+
20+
c.ResponseOk(machines)
21+
}
22+
23+
func (c *ApiController) GetMachine() {
24+
if c.RequireAdmin() {
25+
return
26+
}
27+
28+
id := c.Input().Get("id")
29+
30+
machine, err := object.GetMachine(id)
31+
if err != nil {
32+
c.ResponseError(err.Error())
33+
return
34+
}
35+
36+
c.ResponseOk(machine)
37+
}
38+
39+
func (c *ApiController) UpdateMachine() {
40+
if c.RequireAdmin() {
41+
return
42+
}
43+
44+
id := c.Input().Get("id")
45+
46+
var machine object.Machine
47+
err := json.Unmarshal(c.Ctx.Input.RequestBody, &machine)
48+
if err != nil {
49+
c.ResponseError(err.Error())
50+
return
51+
}
52+
53+
success, err := object.UpdateMachine(id, &machine)
54+
if err != nil {
55+
c.ResponseError(err.Error())
56+
return
57+
}
58+
59+
c.ResponseOk(success)
60+
}
61+
62+
func (c *ApiController) AddMachine() {
63+
if c.RequireAdmin() {
64+
return
65+
}
66+
67+
var machine object.Machine
68+
err := json.Unmarshal(c.Ctx.Input.RequestBody, &machine)
69+
if err != nil {
70+
c.ResponseError(err.Error())
71+
return
72+
}
73+
74+
success, err := object.AddMachine(&machine)
75+
if err != nil {
76+
c.ResponseError(err.Error())
77+
return
78+
}
79+
80+
c.ResponseOk(success)
81+
}
82+
83+
func (c *ApiController) DeleteMachine() {
84+
if c.RequireAdmin() {
85+
return
86+
}
87+
88+
var machine object.Machine
89+
err := json.Unmarshal(c.Ctx.Input.RequestBody, &machine)
90+
if err != nil {
91+
c.ResponseError(err.Error())
92+
return
93+
}
94+
95+
success, err := object.DeleteMachine(&machine)
96+
if err != nil {
97+
c.ResponseError(err.Error())
98+
return
99+
}
100+
101+
c.ResponseOk(success)
102+
}

object/machine.go

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package object
2+
3+
import (
4+
"github.com/casosorg/casos/util"
5+
)
6+
7+
type Machine struct {
8+
Owner string `xorm:"varchar(100) notnull pk" json:"owner"`
9+
Name string `xorm:"varchar(100) notnull pk" json:"name"`
10+
CreatedTime string `xorm:"varchar(100)" json:"createdTime"`
11+
DisplayName string `xorm:"varchar(100)" json:"displayName"`
12+
13+
Ip string `xorm:"varchar(100)" json:"ip"`
14+
Port int `xorm:"int" json:"port"`
15+
Username string `xorm:"varchar(100)" json:"username"`
16+
AuthType string `xorm:"varchar(50)" json:"authType"`
17+
Password string `xorm:"varchar(500)" json:"password"`
18+
PrivateKey string `xorm:"mediumtext" json:"privateKey"`
19+
20+
Os string `xorm:"varchar(100)" json:"os"`
21+
Status string `xorm:"varchar(50)" json:"status"`
22+
Role string `xorm:"varchar(50)" json:"role"`
23+
Description string `xorm:"varchar(500)" json:"description"`
24+
}
25+
26+
func GetGlobalMachines() ([]*Machine, error) {
27+
machines := []*Machine{}
28+
err := ormer.Engine.Asc("owner").Desc("created_time").Find(&machines)
29+
if err != nil {
30+
return nil, err
31+
}
32+
return machines, nil
33+
}
34+
35+
func GetMachines(owner string) ([]*Machine, error) {
36+
machines := []*Machine{}
37+
err := ormer.Engine.Desc("created_time").Find(&machines, &Machine{Owner: owner})
38+
if err != nil {
39+
return nil, err
40+
}
41+
return machines, nil
42+
}
43+
44+
func GetMachine(id string) (*Machine, error) {
45+
owner, name, err := util.GetOwnerAndNameFromIdWithError(id)
46+
if err != nil {
47+
return nil, err
48+
}
49+
machine := &Machine{Owner: owner, Name: name}
50+
existed, err := ormer.Engine.Get(machine)
51+
if err != nil {
52+
return nil, err
53+
}
54+
if !existed {
55+
return nil, nil
56+
}
57+
return machine, nil
58+
}
59+
60+
func UpdateMachine(id string, machine *Machine) (bool, error) {
61+
owner, name, err := util.GetOwnerAndNameFromIdWithError(id)
62+
if err != nil {
63+
return false, err
64+
}
65+
if m, err := GetMachine(id); err != nil {
66+
return false, err
67+
} else if m == nil {
68+
return false, nil
69+
}
70+
affected, err2 := ormer.Engine.Where("owner = ? AND name = ?", owner, name).AllCols().Update(machine)
71+
if err2 != nil {
72+
return false, err2
73+
}
74+
return affected != 0, nil
75+
}
76+
77+
func AddMachine(machine *Machine) (bool, error) {
78+
affected, err := ormer.Engine.Insert(machine)
79+
if err != nil {
80+
return false, err
81+
}
82+
return affected != 0, nil
83+
}
84+
85+
func DeleteMachine(machine *Machine) (bool, error) {
86+
affected, err := ormer.Engine.Where("owner = ? AND name = ?", machine.Owner, machine.Name).Delete(&Machine{})
87+
if err != nil {
88+
return false, err
89+
}
90+
return affected != 0, nil
91+
}

object/ormer.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ func (a *Ormer) createTable() {
168168
showSql := conf.GetConfigBool("showSql")
169169
a.Engine.ShowSQL(showSql)
170170
_ = a.Engine.Sync2(new(Site))
171+
_ = a.Engine.Sync2(new(Machine))
171172
_ = a.Engine.Sync2(new(CasbinRule))
172173
_ = a.Engine.Sync2(new(TrivyScanResult))
173174
}

routers/router.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,12 @@ func InitAPI() {
8282
beego.Router("/api/update-site", &controllers.ApiController{}, "POST:UpdateSite")
8383
beego.Router("/api/delete-site", &controllers.ApiController{}, "POST:DeleteSite")
8484

85+
beego.Router("/api/get-global-machines", &controllers.ApiController{}, "GET:GetGlobalMachines")
86+
beego.Router("/api/get-machine", &controllers.ApiController{}, "GET:GetMachine")
87+
beego.Router("/api/add-machine", &controllers.ApiController{}, "POST:AddMachine")
88+
beego.Router("/api/update-machine", &controllers.ApiController{}, "POST:UpdateMachine")
89+
beego.Router("/api/delete-machine", &controllers.ApiController{}, "POST:DeleteMachine")
90+
8591
beego.Router("/api/get-configmaps", &controllers.ApiController{}, "GET:GetConfigMaps")
8692
beego.Router("/api/get-configmap", &controllers.ApiController{}, "GET:GetConfigMap")
8793
beego.Router("/api/add-configmap", &controllers.ApiController{}, "POST:AddConfigMap")

0 commit comments

Comments
 (0)