Merge pull request #48264 from johscheuer/set-quota-for-volumes

Automatic merge from submit-queue (batch tested with PRs 48264, 48324, 48125, 47944, 47489)

Set quota for volumes

**What this PR does / why we need it**:
This PR allows users of the Quobyte Storage class to specify if automatically a Quota for the volume should be created. With a Quota a Quobyte volume can only grow in the specified size.

**Special notes for your reviewer**:
Update the Quobyte API version for the needed functionality.
This commit is contained in:
Kubernetes Submit Queue
2017-06-30 20:58:24 -07:00
committed by GitHub
8 changed files with 72 additions and 10 deletions

View File

@@ -22,14 +22,14 @@ func main() {
Name: "MyVolume",
RootUserID: "root",
RootGroupID: "root",
ConfigurationName: "base",
ConfigurationName: "BASE",
}
volume_uuid, err := client.CreateVolume(req)
volumeUUID, err := client.CreateVolume(req)
if err != nil {
log.Fatalf("Error:", err)
}
log.Printf("%s", volume_uuid)
log.Printf("%s", volumeUUID)
}
```
```

View File

@@ -1,7 +1,9 @@
// Package quobyte represents a golang API for the Quobyte Storage System
package quobyte
import "net/http"
import (
"net/http"
)
type QuobyteClient struct {
client *http.Client
@@ -77,3 +79,26 @@ func (client *QuobyteClient) GetClientList(tenant string) (GetClientListResponse
return response, nil
}
func (client *QuobyteClient) SetVolumeQuota(volumeUUID string, quotaSize uint64) error {
request := &setQuotaRequest{
Quotas: []*quota{
&quota{
Consumer: []*consumingEntity{
&consumingEntity{
Type: "VOLUME",
Identifier: volumeUUID,
},
},
Limits: []*resource{
&resource{
Type: "LOGICAL_DISK_SPACE",
Value: quotaSize,
},
},
},
},
}
return client.sendRequest("setQuota", request, nil)
}

View File

@@ -32,3 +32,25 @@ type Client struct {
MountedUserName string `json:"mount_user_name,omitempty"`
MountedVolumeUUID string `json:"mounted_volume_uuid,omitempty"`
}
type consumingEntity struct {
Type string `json:"type,omitempty"`
Identifier string `json:"identifier,omitempty"`
TenantID string `json:"tenant_id,omitempty"`
}
type resource struct {
Type string `json:"type,omitempty"`
Value uint64 `json:"value,omitempty"`
}
type quota struct {
ID string `json:"id,omitempty"`
Consumer []*consumingEntity `json:"consumer,omitempty"`
Limits []*resource `json:"limits,omitempty"`
Currentusage []*resource `json:"current_usage,omitempty"`
}
type setQuotaRequest struct {
Quotas []*quota `json:"quotas,omitempty"`
}