//Implements quotas retrieval, returns quotas or error if rest request failed
func (self *NovaV2) GetQuotas(tenantId string) (nova.QuotaSet, error) {
	var out QuotaRespV2
	err := nova.Get(self.Client, "os-quota-sets/"+url.QueryEscape(tenantId), &out)
	if err != nil {
		return nova.QuotaSet{}, err
	}

	return out.QuotaSet.ToQuotaSet(), nil
}
//Implements limits retrieval, returns limits or error if rest request failed
func (self *NovaV2) GetLimits() (nova.LimitsAbsolute, error) {
	var out LimitsRespV2
	err := nova.Get(self.Client, "limits", &out)
	if err != nil {
		return nova.LimitsAbsolute{}, err
	}

	return out.Limits.Absolute.ToLimitsAbsolute(), nil
}
//Implements hypervisor stats retrieval, returns these stats or error if rest request failed
func (self *NovaV2) GetHypervisorStatistics() ([]nova.HypervisorStatistics, error) {
	var out HypervisorRespV2
	err := nova.Get(self.Client, "os-hypervisors/detail", &out)
	if err != nil {
		return nil, err
	}

	result := make([]nova.HypervisorStatistics, len(out.Hypervisors))
	for i, v := range out.Hypervisors {
		result[i] = v.ToHypervisorStatistics()
	}

	return result, nil
}