github.com/1and1/oneandone-cloudserver-sdk-go@v1.4.1/usages.go (about) 1 package oneandone 2 3 import ( 4 "net/http" 5 "time" 6 ) 7 8 type Usages struct { 9 Images []usage `json:"IMAGES,omitempty"` 10 LoadBalancers []usage `json:"LOAD BALANCERS,omitempty"` 11 PublicIPs []usage `json:"PUBLIC IP,omitempty"` 12 Servers []usage `json:"SERVERS,omitempty"` 13 SharedStorages []usage `json:"SHARED STORAGE,omitempty"` 14 ApiPtr 15 } 16 17 type usage struct { 18 Identity 19 Site int `json:"site"` 20 Services []usageService `json:"services,omitempty"` 21 } 22 23 type usageService struct { 24 AverageAmmount string `json:"avg_amount,omitempty"` 25 Unit string `json:"unit,omitempty"` 26 Usage int `json:"usage"` 27 Details []usageDetails `json:"detail,omitempty"` 28 typeField 29 } 30 31 type usageDetails struct { 32 AverageAmmount string `json:"avg_amount,omitempty"` 33 StartDate string `json:"start_date,omitempty"` 34 EndDate string `json:"end_date,omitempty"` 35 Unit string `json:"unit,omitempty"` 36 Usage int `json:"usage,omitempty"` 37 } 38 39 // GET /usages 40 func (api *API) ListUsages(period string, sd *time.Time, ed *time.Time, args ...interface{}) (*Usages, error) { 41 result := new(Usages) 42 url, err := processQueryParamsExt(createUrl(api, usagePathSegment), period, sd, ed, args...) 43 if err != nil { 44 return nil, err 45 } 46 err = api.Client.Get(url, &result, http.StatusOK) 47 if err != nil { 48 return nil, err 49 } 50 result.api = api 51 return result, nil 52 }