diff --git a/access-types.go b/access-types.go index e10681b..1ab1fb2 100644 --- a/access-types.go +++ b/access-types.go @@ -1,4 +1,4 @@ -package paas_common_lib +package proxmoxaas_common_lib type Pool struct { PoolID string `json:"poolid"` diff --git a/access-utils.go b/access-utils.go new file mode 100644 index 0000000..06bb10a --- /dev/null +++ b/access-utils.go @@ -0,0 +1,46 @@ +package proxmoxaas_common_lib + +import ( + "fmt" + "strings" +) + +func (g Groupname) ToString() string { + return fmt.Sprintf("%s-%s", g.GroupID, g.Realm) +} + +func (u Username) ToString() string { + return fmt.Sprintf("%s-%s", u.UserID, u.Realm) +} + +// returns an error if the groupname format was not correct +// TODO: handle group names with x-y format where y is not a registered realm +// TODO: handle group names with x-y-z-... format +func ParseGroupname(groupname string) (Groupname, error) { + g := Groupname{} + x := strings.Split(groupname, "-") + if len(x) == 1 { + g.GroupID = groupname + g.Realm = "pve" + return g, nil + } else if len(x) == 2 { + g.GroupID = x[0] + g.Realm = x[1] + return g, nil + } else { + return g, fmt.Errorf("groupid did not follow the format or -") + } +} + +// returns an error if the username format was not correct +func ParseUsername(username string) (Username, error) { + u := Username{} + x := strings.Split(username, "@") + if len(x) == 2 { + u.UserID = x[0] + u.Realm = x[1] + return u, nil + } else { + return u, fmt.Errorf("userid did not follow the format @") + } +} diff --git a/resource-types.go b/resource-types.go index 3499d7e..69977f1 100644 --- a/resource-types.go +++ b/resource-types.go @@ -1,4 +1,4 @@ -package paas_common_lib +package proxmoxaas_common_lib type Cluster struct { Nodes map[string]*Node `json:"nodes"`