1package resourceproviders 2 3import ( 4 "github.com/gophercloud/gophercloud" 5 "github.com/gophercloud/gophercloud/pagination" 6) 7 8type ResourceProviderLinks struct { 9 Href string `json:"href"` 10 Rel string `json:"rel"` 11} 12 13// ResourceProvider are entities which provider consumable inventory of one or more classes of resource 14type ResourceProvider struct { 15 // Generation is a consistent view marker that assists with the management of concurrent resource provider updates. 16 Generation int `json:"generation"` 17 18 // UUID of a resource provider. 19 UUID string `json:"uuid"` 20 21 // Links is a list of links associated with one resource provider. 22 Links []ResourceProviderLinks `json:"links"` 23 24 // Name of one resource provider. 25 Name string `json:"name"` 26 27 // The ParentProviderUUID contains the UUID of the immediate parent of the resource provider. 28 // Requires microversion 1.14 or above 29 ParentProviderUUID string `json:"parent_provider_uuid"` 30 31 // The RootProviderUUID contains the read-only UUID of the top-most provider in this provider tree. 32 // Requires microversion 1.14 or above 33 RootProviderUUID string `json:"root_provider_uuid"` 34} 35 36type ResourceProviderUsage struct { 37 ResourceProviderGeneration int `json:"resource_provider_generation"` 38 Usages map[string]int `json:"usages"` 39} 40 41type Inventory struct { 42 AllocationRatio float32 `json:"allocation_ratio"` 43 MaxUnit int `json:"max_unit"` 44 MinUnit int `json:"min_unit"` 45 Reserved int `json:"reserved"` 46 StepSize int `json:"step_size"` 47 Total int `json:"total"` 48} 49 50type ResourceProviderInventories struct { 51 ResourceProviderGeneration int `json:"resource_provider_generation"` 52 Inventories map[string]Inventory `json:"inventories"` 53} 54 55type ResourceProviderTraits struct { 56 ResourceProviderGeneration int `json:"resource_provider_generation"` 57 Traits []string `json:"traits"` 58} 59 60// resourceProviderResult is the response of a base ResourceProvider result. 61type resourceProviderResult struct { 62 gophercloud.Result 63} 64 65// Extract interpets any resourceProviderResult-base result as a ResourceProvider. 66func (r resourceProviderResult) Extract() (*ResourceProvider, error) { 67 var s ResourceProvider 68 err := r.ExtractInto(&s) 69 70 return &s, err 71} 72 73// CreateResult is the result of a Create operation. Call its Extract 74// method to interpret it as a ResourceProvider. 75type CreateResult struct { 76 resourceProviderResult 77} 78 79// ResourceProvidersPage contains a single page of all resource providers from a List call. 80type ResourceProvidersPage struct { 81 pagination.SinglePageBase 82} 83 84// IsEmpty determines if a ResourceProvidersPage contains any results. 85func (page ResourceProvidersPage) IsEmpty() (bool, error) { 86 resourceProviders, err := ExtractResourceProviders(page) 87 return len(resourceProviders) == 0, err 88} 89 90// ExtractResourceProviders returns a slice of ResourceProvider from a List operation. 91func ExtractResourceProviders(r pagination.Page) ([]ResourceProvider, error) { 92 var s struct { 93 ResourceProviders []ResourceProvider `json:"resource_providers"` 94 } 95 err := (r.(ResourceProvidersPage)).ExtractInto(&s) 96 return s.ResourceProviders, err 97} 98 99// GetUsagesResult is the response of a Get usage operations. Call its Extract method 100// to interpret it as a ResourceProviderUsage. 101type GetUsagesResult struct { 102 gophercloud.Result 103} 104 105// Extract interprets a GetUsagesResult as a ResourceProviderUsage. 106func (r GetUsagesResult) Extract() (*ResourceProviderUsage, error) { 107 var s ResourceProviderUsage 108 err := r.ExtractInto(&s) 109 return &s, err 110} 111 112// GetInventoriesResult is the response of a Get inventories operations. Call its Extract method 113// to interpret it as a ResourceProviderInventories. 114type GetInventoriesResult struct { 115 gophercloud.Result 116} 117 118// Extract interprets a GetInventoriesResult as a ResourceProviderInventories. 119func (r GetInventoriesResult) Extract() (*ResourceProviderInventories, error) { 120 var s ResourceProviderInventories 121 err := r.ExtractInto(&s) 122 return &s, err 123} 124 125// GetTraitsResult is the response of a Get traits operations. Call its Extract method 126// to interpret it as a ResourceProviderTraits. 127type GetTraitsResult struct { 128 gophercloud.Result 129} 130 131// Extract interprets a GetTraitsResult as a ResourceProviderTraits. 132func (r GetTraitsResult) Extract() (*ResourceProviderTraits, error) { 133 var s ResourceProviderTraits 134 err := r.ExtractInto(&s) 135 return &s, err 136} 137