github.com/gophercloud/gophercloud@v1.11.0/openstack/blockstorage/extensions/limits/results.go (about) 1 package limits 2 3 import ( 4 "github.com/gophercloud/gophercloud" 5 ) 6 7 // Limits is a struct that contains the response of a limit query. 8 type Limits struct { 9 // Absolute contains the limits and usage information. 10 // An absolute limit value of -1 indicates that the absolute limit for the item is infinite. 11 Absolute Absolute `json:"absolute"` 12 // Rate contains rate-limit volume copy bandwidth, used to mitigate slow down of data access from the instances. 13 Rate []Rate `json:"rate"` 14 } 15 16 // Absolute is a struct that contains the current resource usage and limits 17 // of a project. 18 type Absolute struct { 19 // MaxTotalVolumes is the maximum number of volumes. 20 MaxTotalVolumes int `json:"maxTotalVolumes"` 21 22 // MaxTotalSnapshots is the maximum number of snapshots. 23 MaxTotalSnapshots int `json:"maxTotalSnapshots"` 24 25 // MaxTotalVolumeGigabytes is the maximum total amount of volumes, in gibibytes (GiB). 26 MaxTotalVolumeGigabytes int `json:"maxTotalVolumeGigabytes"` 27 28 // MaxTotalBackups is the maximum number of backups. 29 MaxTotalBackups int `json:"maxTotalBackups"` 30 31 // MaxTotalBackupGigabytes is the maximum total amount of backups, in gibibytes (GiB). 32 MaxTotalBackupGigabytes int `json:"maxTotalBackupGigabytes"` 33 34 // TotalVolumesUsed is the total number of volumes used. 35 TotalVolumesUsed int `json:"totalVolumesUsed"` 36 37 // TotalGigabytesUsed is the total number of gibibytes (GiB) used. 38 TotalGigabytesUsed int `json:"totalGigabytesUsed"` 39 40 // TotalSnapshotsUsed the total number of snapshots used. 41 TotalSnapshotsUsed int `json:"totalSnapshotsUsed"` 42 43 // TotalBackupsUsed is the total number of backups used. 44 TotalBackupsUsed int `json:"totalBackupsUsed"` 45 46 // TotalBackupGigabytesUsed is the total number of backups gibibytes (GiB) used. 47 TotalBackupGigabytesUsed int `json:"totalBackupGigabytesUsed"` 48 } 49 50 // Rate is a struct that contains the 51 // rate-limit volume copy bandwidth, used to mitigate slow down of data access from the instances. 52 type Rate struct { 53 Regex string `json:"regex"` 54 URI string `json:"uri"` 55 Limit []Limit `json:"limit"` 56 } 57 58 // Limit struct contains Limit values for the Rate struct 59 type Limit struct { 60 Verb string `json:"verb"` 61 NextAvailable string `json:"next-available"` 62 Unit string `json:"unit"` 63 Value int `json:"value"` 64 Remaining int `json:"remaining"` 65 } 66 67 // Extract interprets a limits result as a Limits. 68 func (r GetResult) Extract() (*Limits, error) { 69 var s struct { 70 Limits *Limits `json:"limits"` 71 } 72 err := r.ExtractInto(&s) 73 return s.Limits, err 74 } 75 76 // GetResult is the response from a Get operation. Call its Extract 77 // method to interpret it as an Absolute. 78 type GetResult struct { 79 gophercloud.Result 80 }