112 lines
2.8 KiB
Go
112 lines
2.8 KiB
Go
package app
|
|
|
|
type BackendClient interface {
|
|
BindUser(username string, password string) error
|
|
|
|
//GetAllUsers() ([]User, int, error)
|
|
GetUser(username string) (User, int, error)
|
|
AddUser(username string, user User) (int, error)
|
|
ModUser(username string, user User) (int, error)
|
|
DelUser(username string) (int, error)
|
|
|
|
//GetAllGroups() ([]Group, int, error)
|
|
GetGroup(groupname string) (Group, int, error)
|
|
AddGroup(groupname string, group Group) (int, error)
|
|
ModGroup(groupname string, group Group) (int, error)
|
|
DelGroup(groupname string) (int, error)
|
|
|
|
AddUserToGroup(username string, groupname string)
|
|
RemoveUserFromGroup(username string, groupname string)
|
|
}
|
|
|
|
type Pool struct {
|
|
PoolID string `json:"poolid"`
|
|
Path string `json:"-"` // typically /pool/poolid from proxmox, only used internally
|
|
Groups []Group `json:"groups"`
|
|
Resources map[string]any `json:"resources"`
|
|
Cluster Cluster `json:"cluster"`
|
|
Templates Templates `json:"templates"`
|
|
}
|
|
|
|
type Groupname struct { // proxmox typically formats as gid-realm for non pve realms
|
|
GroupID string `json:"gid"`
|
|
Realm string `json:"realm"`
|
|
}
|
|
|
|
type Group struct {
|
|
Groupname Groupname `json:"groupname"`
|
|
Handler string `json:"-"`
|
|
Role string `json:"role"`
|
|
Users []User `json:"users"`
|
|
}
|
|
|
|
type Username struct { // ie userid@realm
|
|
UserID string `json:"uid"`
|
|
Realm string `json:"realm"`
|
|
}
|
|
|
|
type User struct {
|
|
Username Username `json:"username"`
|
|
Handler string `json:"-"`
|
|
CN string `json:"cn"` // aka first name
|
|
SN string `json:"sn"` // aka last name
|
|
Mail string `json:"mail"`
|
|
Password string `json:"password"` // only used for POST requests
|
|
}
|
|
|
|
type Cluster struct {
|
|
Nodes map[string]bool `json:"nodes"`
|
|
VMID VMID `json:"vmid"`
|
|
//Pools map[string]bool `json:"pools"`
|
|
Backups Backups `json:"backups"`
|
|
}
|
|
|
|
type VMID struct {
|
|
Min int `json:"min"`
|
|
MAx int `json:"max"`
|
|
}
|
|
|
|
type Backups struct {
|
|
Max int `json:"max"`
|
|
}
|
|
|
|
type Templates struct {
|
|
Instances struct {
|
|
LXC map[string]ResourceTemplate `json:"lxc"`
|
|
QEMU map[string]ResourceTemplate `json:"qemu"`
|
|
} `json:"instances"`
|
|
}
|
|
|
|
type SimpleResource struct {
|
|
Limits struct {
|
|
Global SimpleLimit `json:"global"`
|
|
Nodes map[string]SimpleLimit `json:"nodes"`
|
|
} `json:"limits"`
|
|
}
|
|
|
|
type SimpleLimit struct {
|
|
Max int `json:"max"`
|
|
}
|
|
|
|
type MatchResource struct {
|
|
Limits struct {
|
|
Global []MatchLimit `json:"global"`
|
|
Nodes map[string][]MatchLimit `json:"nodes"`
|
|
} `json:"limits"`
|
|
}
|
|
|
|
type MatchLimit struct {
|
|
Match string `json:"match"`
|
|
Name string `json:"name"`
|
|
Max int `json:"max"`
|
|
}
|
|
|
|
type ResourceTemplate struct {
|
|
Value string `json:"value"`
|
|
Resource struct {
|
|
Enabled bool `json:"enabled"`
|
|
Name string `json:"name"`
|
|
Amount int `json:"amount"`
|
|
} `json:"resource"`
|
|
}
|