github.com/huaweicloud/golangsdk@v0.0.0-20210831081626-d823fe11ceba/openstack/identity/v2/tenants/results.go (about) 1 package tenants 2 3 import ( 4 "github.com/huaweicloud/golangsdk" 5 "github.com/huaweicloud/golangsdk/pagination" 6 ) 7 8 // Tenant is a grouping of users in the identity service. 9 type Tenant struct { 10 // ID is a unique identifier for this tenant. 11 ID string `json:"id"` 12 13 // Name is a friendlier user-facing name for this tenant. 14 Name string `json:"name"` 15 16 // Description is a human-readable explanation of this Tenant's purpose. 17 Description string `json:"description"` 18 19 // Enabled indicates whether or not a tenant is active. 20 Enabled bool `json:"enabled"` 21 } 22 23 // TenantPage is a single page of Tenant results. 24 type TenantPage struct { 25 pagination.LinkedPageBase 26 } 27 28 // IsEmpty determines whether or not a page of Tenants contains any results. 29 func (r TenantPage) IsEmpty() (bool, error) { 30 tenants, err := ExtractTenants(r) 31 return len(tenants) == 0, err 32 } 33 34 // NextPageURL extracts the "next" link from the tenants_links section of the result. 35 func (r TenantPage) NextPageURL() (string, error) { 36 var s struct { 37 Links []golangsdk.Link `json:"tenants_links"` 38 } 39 err := r.ExtractInto(&s) 40 if err != nil { 41 return "", err 42 } 43 return golangsdk.ExtractNextURL(s.Links) 44 } 45 46 // ExtractTenants returns a slice of Tenants contained in a single page of 47 // results. 48 func ExtractTenants(r pagination.Page) ([]Tenant, error) { 49 var s struct { 50 Tenants []Tenant `json:"tenants"` 51 } 52 err := (r.(TenantPage)).ExtractInto(&s) 53 return s.Tenants, err 54 } 55 56 type tenantResult struct { 57 golangsdk.Result 58 } 59 60 // Extract interprets any tenantResults as a Tenant. 61 func (r tenantResult) Extract() (*Tenant, error) { 62 var s struct { 63 Tenant *Tenant `json:"tenant"` 64 } 65 err := r.ExtractInto(&s) 66 return s.Tenant, err 67 } 68 69 // GetResult is the response from a Get request. Call its Extract method to 70 // interpret it as a Tenant. 71 type GetResult struct { 72 tenantResult 73 } 74 75 // CreateResult is the response from a Create request. Call its Extract method 76 // to interpret it as a Tenant. 77 type CreateResult struct { 78 tenantResult 79 } 80 81 // DeleteResult is the response from a Get request. Call its ExtractErr method 82 // to determine if the call succeeded or failed. 83 type DeleteResult struct { 84 golangsdk.ErrResult 85 } 86 87 // UpdateResult is the response from a Update request. Call its Extract method 88 // to interpret it as a Tenant. 89 type UpdateResult struct { 90 tenantResult 91 }