Documentation ¶
Overview ¶
Package quotasets enables retrieving and managing Block Storage quotas.
Example to Get a Quota Set
quotaset, err := quotasets.Get(blockStorageClient, "project-id").Extract() if err != nil { panic(err) } fmt.Printf("%+v\n", quotaset)
Example to Get Quota Set Usage
quotaset, err := quotasets.GetUsage(blockStorageClient, "project-id").Extract() if err != nil { panic(err) } fmt.Printf("%+v\n", quotaset)
Example to Update a Quota Set
updateOpts := quotasets.UpdateOpts{ Volumes: gophercloud.IntToPointer(100), } quotaset, err := quotasets.Update(blockStorageClient, "project-id", updateOpts).Extract() if err != nil { panic(err) } fmt.Printf("%+v\n", quotaset)
Example to Update a Quota set with volume_type quotas
updateOpts := quotasets.UpdateOpts{ Volumes: gophercloud.IntToPointer(100), Extra: map[string]interface{}{ "gigabytes_foo": gophercloud.IntToPointer(100), "snapshots_foo": gophercloud.IntToPointer(10), "volumes_foo": gophercloud.IntToPointer(10), }, } quotaset, err := quotasets.Update(blockStorageClient, "project-id", updateOpts).Extract() if err != nil { panic(err) } fmt.Printf("%+v\n", quotaset)
Example to Delete a Quota Set
err := quotasets.Delete(blockStorageClient, "project-id").ExtractErr() if err != nil { panic(err) }
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DeleteResult ¶
type DeleteResult struct {
gophercloud.ErrResult
}
DeleteResult is the response from a Delete operation. Call its ExtractErr method to determine if the request succeeded or failed.
func Delete ¶
func Delete(client *gophercloud.ServiceClient, projectID string) (r DeleteResult)
Resets the quotas for the given tenant to their default values.
type GetResult ¶
type GetResult struct {
// contains filtered or unexported fields
}
GetResult is the response from a Get operation. Call its Extract method to interpret it as a QuotaSet.
func Get ¶
func Get(client *gophercloud.ServiceClient, projectID string) (r GetResult)
Get returns public data about a previously created QuotaSet.
func GetDefaults ¶
func GetDefaults(client *gophercloud.ServiceClient, projectID string) (r GetResult)
GetDefaults returns public data about the project's default block storage quotas.
type GetUsageResult ¶
type GetUsageResult struct {
// contains filtered or unexported fields
}
GetUsageResult is the response from a Get operation. Call its Extract method to interpret it as a QuotaSet.
func GetUsage ¶
func GetUsage(client *gophercloud.ServiceClient, projectID string) (r GetUsageResult)
GetUsage returns detailed public data about a previously created QuotaSet.
func (GetUsageResult) Extract ¶
func (r GetUsageResult) Extract() (QuotaUsageSet, error)
Extract is a method that attempts to interpret any QuotaUsageSet resource response as a set of QuotaUsageSet structs.
type QuotaSet ¶
type QuotaSet struct { // ID is project associated with this QuotaSet. ID string `json:"id"` // Volumes is the number of volumes that are allowed for each project. Volumes int `json:"volumes"` // Snapshots is the number of snapshots that are allowed for each project. Snapshots int `json:"snapshots"` // Gigabytes is the size (GB) of volumes and snapshots that are allowed for // each project. Gigabytes int `json:"gigabytes"` // PerVolumeGigabytes is the size (GB) of volumes and snapshots that are // allowed for each project and the specifed volume type. PerVolumeGigabytes int `json:"per_volume_gigabytes"` // Backups is the number of backups that are allowed for each project. Backups int `json:"backups"` // BackupGigabytes is the size (GB) of backups that are allowed for each // project. BackupGigabytes int `json:"backup_gigabytes"` // Groups is the number of groups that are allowed for each project. Groups int `json:"groups,omitempty"` // Extra is a collection of miscellaneous key/values used to set // quota per volume_type Extra map[string]interface{} `json:"-"` }
QuotaSet is a set of operational limits that allow for control of block storage usage.
func ExtractQuotaSets ¶
func ExtractQuotaSets(r pagination.Page) ([]QuotaSet, error)
ExtractQuotaSets interprets a page of results as a slice of QuotaSets.
func (*QuotaSet) UnmarshalJSON ¶
UnmarshalJSON is used on QuotaSet to unmarshal extra keys that are used for volume_type quota
type QuotaSetPage ¶
type QuotaSetPage struct {
pagination.SinglePageBase
}
QuotaSetPage stores a single page of all QuotaSet results from a List call.
func (QuotaSetPage) IsEmpty ¶
func (r QuotaSetPage) IsEmpty() (bool, error)
IsEmpty determines whether or not a QuotaSetsetPage is empty.
type QuotaUsage ¶
type QuotaUsage struct { // InUse is the current number of provisioned resources of the given type. InUse int `json:"in_use"` // Allocated is the current number of resources of a given type allocated // for use. It is only available when nested quota is enabled. Allocated int `json:"allocated"` // Reserved is a transitional state when a claim against quota has been made // but the resource is not yet fully online. Reserved int `json:"reserved"` // Limit is the maximum number of a given resource that can be // allocated/provisioned. This is what "quota" usually refers to. Limit int `json:"limit"` }
QuotaUsage is a set of details about a single operational limit that allows for control of block storage usage.
type QuotaUsageSet ¶
type QuotaUsageSet struct { // ID is the project ID associated with this QuotaUsageSet. ID string `json:"id"` // Volumes is the volume usage information for this project, including // in_use, limit, reserved and allocated attributes. Note: allocated // attribute is available only when nested quota is enabled. Volumes QuotaUsage `json:"volumes"` // Snapshots is the snapshot usage information for this project, including // in_use, limit, reserved and allocated attributes. Note: allocated // attribute is available only when nested quota is enabled. Snapshots QuotaUsage `json:"snapshots"` // Gigabytes is the size (GB) usage information of volumes and snapshots // for this project, including in_use, limit, reserved and allocated // attributes. Note: allocated attribute is available only when nested // quota is enabled. Gigabytes QuotaUsage `json:"gigabytes"` // PerVolumeGigabytes is the size (GB) usage information for each volume, // including in_use, limit, reserved and allocated attributes. Note: // allocated attribute is available only when nested quota is enabled and // only limit is meaningful here. PerVolumeGigabytes QuotaUsage `json:"per_volume_gigabytes"` // Backups is the backup usage information for this project, including // in_use, limit, reserved and allocated attributes. Note: allocated // attribute is available only when nested quota is enabled. Backups QuotaUsage `json:"backups"` // BackupGigabytes is the size (GB) usage information of backup for this // project, including in_use, limit, reserved and allocated attributes. // Note: allocated attribute is available only when nested quota is // enabled. BackupGigabytes QuotaUsage `json:"backup_gigabytes"` // Groups is the number of groups that are allowed for each project. // Note: allocated attribute is available only when nested quota is // enabled. Groups QuotaUsage `json:"groups"` }
QuotaUsageSet represents details of both operational limits of block storage resources and the current usage of those resources.
type UpdateOpts ¶
type UpdateOpts struct { // Volumes is the number of volumes that are allowed for each project. Volumes *int `json:"volumes,omitempty"` // Snapshots is the number of snapshots that are allowed for each project. Snapshots *int `json:"snapshots,omitempty"` // Gigabytes is the size (GB) of volumes and snapshots that are allowed for // each project. Gigabytes *int `json:"gigabytes,omitempty"` // PerVolumeGigabytes is the size (GB) of volumes and snapshots that are // allowed for each project and the specifed volume type. PerVolumeGigabytes *int `json:"per_volume_gigabytes,omitempty"` // Backups is the number of backups that are allowed for each project. Backups *int `json:"backups,omitempty"` // BackupGigabytes is the size (GB) of backups that are allowed for each // project. BackupGigabytes *int `json:"backup_gigabytes,omitempty"` // Groups is the number of groups that are allowed for each project. Groups *int `json:"groups,omitempty"` // Force will update the quotaset even if the quota has already been used // and the reserved quota exceeds the new quota. Force bool `json:"force,omitempty"` // Extra is a collection of miscellaneous key/values used to set // quota per volume_type Extra map[string]interface{} `json:"-"` }
Options for Updating the quotas of a Tenant. All int-values are pointers so they can be nil if they are not needed. You can use gopercloud.IntToPointer() for convenience
func (UpdateOpts) ToBlockStorageQuotaUpdateMap ¶
func (opts UpdateOpts) ToBlockStorageQuotaUpdateMap() (map[string]interface{}, error)
ToBlockStorageQuotaUpdateMap builds the update options into a serializable format.
type UpdateOptsBuilder ¶
type UpdateOptsBuilder interface { // Extra specific name to prevent collisions with interfaces for other quotas // (e.g. neutron) ToBlockStorageQuotaUpdateMap() (map[string]interface{}, error) }
UpdateOptsBuilder enables extensions to add parameters to the update request.
type UpdateResult ¶
type UpdateResult struct {
// contains filtered or unexported fields
}
UpdateResult is the response from a Update operation. Call its Extract method to interpret it as a QuotaSet.
func Update ¶
func Update(client *gophercloud.ServiceClient, projectID string, opts UpdateOptsBuilder) (r UpdateResult)
Updates the quotas for the given projectID and returns the new QuotaSet.