// getQuota achieves the aims of GetQuota(). func (p *openstackp) getQuota() (quota *Quota, err error) { // query our quota q, err := quotasets.Get(p.computeClient, os.Getenv("OS_TENANT_ID")).Extract() if err != nil { return } quota = &Quota{ MaxRAM: q.Ram, MaxCores: q.Cores, MaxInstances: q.Instances, } // query all servers to figure out what we've used of our quota // (*** gophercloud currently doesn't implement getting this properly) pager := servers.List(p.computeClient, servers.ListOpts{}) err = pager.EachPage(func(page pagination.Page) (bool, error) { serverList, err := servers.ExtractServers(page) if err != nil { return false, err } for _, server := range serverList { quota.UsedInstances++ f, found := p.fmap[server.Flavor["id"].(string)] if found { // should always be found... quota.UsedCores += f.Cores quota.UsedRAM += f.RAM } } return true, nil }) return }
func TestGet(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() HandleGetSuccessfully(t) actual, err := quotasets.Get(client.ServiceClient(), FirstTenantID).Extract() th.AssertNoErr(t, err) th.CheckDeepEquals(t, &FirstQuotaSet, actual) }
func TestQuotasetGet(t *testing.T) { client, err := clients.NewComputeV2Client() if err != nil { t.Fatalf("Unable to create a compute client: %v", err) } identityClient, err := clients.NewIdentityV2Client() if err != nil { t.Fatalf("Unable to get a new identity client: %v", err) } tenantID, err := getTenantID(t, identityClient) if err != nil { t.Fatal(err) } quotaSet, err := quotasets.Get(client, tenantID).Extract() if err != nil { t.Fatal(err) } PrintQuotaSet(t, quotaSet) }