Documentation ¶
Overview ¶
Package usage provides information and interaction with the SimpleTenantUsage extension for the OpenStack Compute service.
Example to Retrieve Usage for a Single Tenant:
start := time.Date(2017, 01, 21, 10, 4, 20, 0, time.UTC) end := time.Date(2017, 01, 21, 10, 4, 20, 0, time.UTC) singleTenantOpts := usage.SingleTenantOpts{ Start: &start, End: &end, } page, err := usage.SingleTenant(computeClient, tenantID, singleTenantOpts).AllPages() if err != nil { panic(err) } tenantUsage, err := usage.ExtractSingleTenant(page) if err != nil { panic(err) } fmt.Printf("%+v\n", tenantUsage)
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SingleTenant ¶
func SingleTenant(client *gophercloud.ServiceClient, tenantID string, opts SingleTenantOptsBuilder) pagination.Pager
SingleTenant returns usage data about a single tenant.
Types ¶
type ServerUsage ¶
type ServerUsage struct { // EndedAt is the date and time when the server was deleted EndedAt time.Time `json:"-"` // Flavor is the display name of a flavor Flavor string `json:"flavor"` // Hours is the duration that the server exists in hours Hours float64 `json:"hours"` // InstanceID is the UUID of the instance InstanceID string `json:"instance_id"` // LocalGB is the sum of the root disk size of the server and the ephemeral disk size of it (in GiB) LocalGB int `json:"local_gb"` // MemoryMB is the memory size of the server (in MB) MemoryMB int `json:"memory_mb"` // Name is the name assigned to the server when it was created Name string `json:"name"` // StartedAt is the date and time when the server was started StartedAt time.Time `json:"-"` // State is the VM power state State string `json:"state"` // TenantID is the UUID of the tenant in a multi-tenancy cloud TenantID string `json:"tenant_id"` // Uptime is the uptime of the server in seconds Uptime int `json:"uptime"` // VCPUs is the number of virtual CPUs that the server uses VCPUs int `json:"vcpus"` }
ServerUsage is a detailed set of information about a specific instance inside a tenant
func (*ServerUsage) UnmarshalJSON ¶
func (u *ServerUsage) UnmarshalJSON(b []byte) error
UnmarshalJSON sets *u to a copy of data.
type SingleTenantOpts ¶
type SingleTenantOpts struct { // The ending time to calculate usage statistics on compute and storage resources. End *time.Time `q:"end"` // The beginning time to calculate usage statistics on compute and storage resources. Start *time.Time `q:"start"` }
SingleTenantOpts are options for fetching usage of a single tenant.
func (SingleTenantOpts) ToUsageSingleTenantQuery ¶
func (opts SingleTenantOpts) ToUsageSingleTenantQuery() (string, error)
ToUsageSingleTenantQuery formats a SingleTenantOpts into a query string.
type SingleTenantOptsBuilder ¶
SingleTenantOptsBuilder allows extensions to add additional parameters to the SingleTenant request.
type SingleTenantPage ¶
type SingleTenantPage struct {
pagination.SinglePageBase
}
SingleTenantPage stores a single, only page of TenantUsage results from a SingleTenant call.
func (SingleTenantPage) IsEmpty ¶
func (page SingleTenantPage) IsEmpty() (bool, error)
IsEmpty determines whether or not a SingleTenantPage is empty.
type TenantUsage ¶
type TenantUsage struct { // ServerUsages is an array of ServerUsage maps ServerUsages []ServerUsage `json:"server_usages"` // Start is the beginning time to calculate usage statistics on compute and storage resources Start time.Time `json:"-"` // Stop is the ending time to calculate usage statistics on compute and storage resources Stop time.Time `json:"-"` // TenantID is the ID of the tenant whose usage is being reported on TenantID string `json:"tenant_id"` // TotalHours is the total duration that servers exist (in hours) TotalHours float64 `json:"total_hours"` // TotalLocalGBUsage multiplies the server disk size (in GiB) by hours the server exists, and then adding that all together for each server TotalLocalGBUsage float64 `json:"total_local_gb_usage"` // TotalMemoryMBUsage multiplies the server memory size (in MB) by hours the server exists, and then adding that all together for each server TotalMemoryMBUsage float64 `json:"total_memory_mb_usage"` // TotalVCPUsUsage multiplies the number of virtual CPUs of the server by hours the server exists, and then adding that all together for each server TotalVCPUsUsage float64 `json:"total_vcpus_usage"` }
TenantUsage is a set of usage information about a tenant over the sampling window
func ExtractSingleTenant ¶
func ExtractSingleTenant(page pagination.Page) (*TenantUsage, error)
ExtractSingleTenant interprets a SingleTenantPage as a TenantUsage result.
func (*TenantUsage) UnmarshalJSON ¶
func (u *TenantUsage) UnmarshalJSON(b []byte) error
UnmarshalJSON sets *u to a copy of data.