packer-cn/vendor/github.com/profitbricks/profitbricks-sdk-go/contractresources.go

61 lines
2.4 KiB
Go

package profitbricks
import (
"encoding/json"
"net/http"
"strconv"
)
type ContractResources struct {
Id string `json:"id,omitempty"`
Type_ string `json:"type,omitempty"`
Href string `json:"href,omitempty"`
Properties ContractResourcesProperties `json:"properties,omitempty"`
Response string `json:"Response,omitempty"`
Headers *http.Header `json:"headers,omitempty"`
StatusCode int `json:"headers,omitempty"`
}
type ContractResourcesProperties struct {
PBContractNumber string `json:"PB-Contract-Number,omitempty"`
Owner string `json:"owner,omitempty"`
Status string `json:"status,omitempty"`
ResourceLimits *ResourcesLimits `json:"resourceLimits,omitempty"`
}
type ResourcesLimits struct {
CoresPerServer int32 `json:"coresPerServer,omitempty"`
CoresPerContract int32 `json:"coresPerContract,omitempty"`
CoresProvisioned int32 `json:"coresProvisioned,omitempty"`
RamPerServer int32 `json:"ramPerServer,omitempty"`
RamPerContract int32 `json:"ramPerContract,omitempty"`
RamProvisioned int32 `json:"ramProvisioned,omitempty"`
HddLimitPerVolume int64 `json:"hddLimitPerVolume,omitempty"`
HddLimitPerContract int64 `json:"hddLimitPerContract,omitempty"`
HddVolumeProvisioned int64 `json:"hddVolumeProvisioned,omitempty"`
SsdLimitPerVolume int64 `json:"ssdLimitPerVolume,omitempty"`
SsdLimitPerContract int64 `json:"ssdLimitPerContract,omitempty"`
SsdVolumeProvisioned int64 `json:"ssdVolumeProvisioned,omitempty"`
ReservableIps int32 `json:"reservableIps,omitempty"`
ReservedIpsOnContract int32 `json:"reservedIpsOnContract,omitempty"`
ReservedIpsInUse int32 `json:"reservedIpsInUse,omitempty"`
}
func GetContractResources() ContractResources {
path := contract_resource_path()
url := mk_url(path) + `?depth=` + Depth + `&pretty=` + strconv.FormatBool(Pretty)
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Content-Type", FullHeader)
resp := do(req)
return toContractResources(resp)
}
func toContractResources(resp Resp) ContractResources {
var col ContractResources
json.Unmarshal(resp.Body, &col)
col.Response = string(resp.Body)
col.Headers = &resp.Headers
col.StatusCode = resp.StatusCode
return col
}