43 lines
1007 B
Go
43 lines
1007 B
Go
package api
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/url"
|
|
)
|
|
|
|
// DashboardResp represents a dashboard received from the API
|
|
type DashboardResp struct {
|
|
Dashboard Dashboard
|
|
}
|
|
|
|
// Dashboard represents a dashboard
|
|
type Dashboard struct {
|
|
VolumesCount int `json:"volumes_count"`
|
|
RunningServersCount int `json:"running_servers_count"`
|
|
ImagesCount int `json:"images_count"`
|
|
SnapshotsCount int `json:"snapshots_count"`
|
|
ServersCount int `json:"servers_count"`
|
|
IPsCount int `json:"ips_count"`
|
|
}
|
|
|
|
// GetDashboard returns the dashboard
|
|
func (s *API) GetDashboard() (*Dashboard, error) {
|
|
resp, err := s.GetResponsePaginate(s.computeAPI, "dashboard", url.Values{})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
body, err := s.handleHTTPError([]int{http.StatusOK}, resp)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var dashboard DashboardResp
|
|
|
|
if err = json.Unmarshal(body, &dashboard); err != nil {
|
|
return nil, err
|
|
}
|
|
return &dashboard.Dashboard, nil
|
|
}
|