diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fa6c60a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +cmd diff --git a/pool.go b/pool.go index cb7b50d..3f3b809 100644 --- a/pool.go +++ b/pool.go @@ -7,6 +7,7 @@ import ( "errors" "fmt" "net/http" + "strconv" ) var ( @@ -75,7 +76,7 @@ func (c *PoolClient) Delete(ctx context.Context, name string) (err error) { } type pools struct { - poolid string `json:"poolid"` + PoolID string `json:"poolid"` } func (c *PoolClient) ListPools(ctx context.Context) (list []string, err error) { @@ -89,13 +90,32 @@ func (c *PoolClient) ListPools(ctx context.Context) (list []string, err error) { return } for _, p := range ps { - list = append(list, p.poolid) + list = append(list, p.PoolID) + } + return +} + +type poolMember struct { + ID int `json:"vmid"` + Name string `json:"name"` + Node string `json:"node"` +} + +type poolMembers []poolMember + +func (pms poolMembers) ServerList() (sl ServerList) { + for _, pm := range pms { + sl = append(sl, &Server{ + ID: strconv.Itoa(pm.ID), + Name: pm.Name, + Node: pm.Node, + }) } return } type pool struct { - members ServerList `json:"members"` + Members poolMembers `json:"members"` } func (c *PoolClient) ListMembers(ctx context.Context, name string) (sl ServerList, err error) { @@ -109,7 +129,7 @@ func (c *PoolClient) ListMembers(ctx context.Context, name string) (sl ServerLis return } _, err = c.client.Do(req, &p) - sl = p.members + sl = p.Members.ServerList() return } diff --git a/server.go b/server.go index dff583e..fb42968 100644 --- a/server.go +++ b/server.go @@ -192,7 +192,7 @@ func (c *ServerClient) GetByURL(ctx context.Context, url string) (s *Server, err var srv *Server if node == "" && pool != "" { srv, err = c.client.Pool.FindServerByID(ctx, pool, id) - if err == ErrServerNotFound { + if err != nil { return } node = srv.Node