Codebase list golang-github-quobyte-api / 9c9e38b
Import upstream version 1.2.0 Debian Janitor 2 years ago
12 changed file(s) with 5906 addition(s) and 407 deletion(s). Raw diff Collapse all Expand all
00 # Quobyte API Clients
11
2 Get the quoybte api client
2 Get the Quobyte api client
33
44 ```bash
55 go get github.com/quobyte/api
77
88 ## Usage
99
10 `Note:` Create below example in separate project outside of the api repository to avoid circular `go mod` dependencies.
11
1012 ```go
1113 package main
1214
1315 import (
1416 "log"
15 quobyte_api "github.com/quobyte/api"
17 quobyte_api "github.com/quobyte/api/quobyte"
1618 )
1719
1820 func main() {
19 client := quobyte_api.NewQuobyteClient("http://apiserver:7860", "user", "password")
21 url := flag.String("url", "", "URL of Quobyte API")
22 username := flag.String("username", "", "username")
23 password := flag.String("password", "", "password")
24 flag.Parse()
25
26 if *url == "" || *username == "" || *password == "" {
27 flag.PrintDefaults()
28 os.Exit(1)
29 }
30
31 client := quobyte_api.NewQuobyteClient(*url, *username, *password)
32 client.SetAPIRetryPolicy(quobyte_api.RetryInfinitely) // Default quobyte_api.RetryInteractive
2033 req := &quobyte_api.CreateVolumeRequest{
2134 Name: "MyVolume",
22 RootUserID: "root",
23 RootGroupID: "root",
24 ConfigurationName: "base",
35 TenantId: "32edb36d-badc-affe-b44a-4ab749af4d9a",
36 RootUserId: "root",
37 RootGroupId: "root",
38 ConfigurationName: "BASE",
39 Label: []*quobyte_api.Label{
40 {Name: "label1", Value: "value1"},
41 {Name: "label2", Value: "value2"},
42 },
2543 }
2644
27 volume_uuid, err := client.CreateVolume(req)
45 response, err := client.CreateVolume(req)
2846 if err != nil {
29 log.Fatalf("Error:", err)
47 log.Fatalf("Error: %v", err)
3048 }
3149
32 log.Printf("%s", volume_uuid)
50 capactiy := int64(1024 * 1024 * 1024)
51 err = client.SetVolumeQuota(response.VolumeUuid, capactiy)
52 if err != nil {
53 log.Fatalf("Error: %v", err)
54 }
55
56 log.Printf("%s", response.VolumeUuid)
3357 }
3458 ```
0 # Developer notes
1
2 ## Releasing new version
3
4 * `go.mod` files must be present at the root level of the project
5 * Each major release beyond V1 (such =v2[+].a.b) must provide unique import path such as `github.com/quobyte/api/vX`
6 * To get around this issue, we always use v1.x.x (**NEVER** make v2 release)
7 * Further, each `*.go` file must have a `package XYZ` statement as the first line and must be placed into `XZY`
8 directory. (It seems go mod ignores .go file that is not placed in declared package directory!!)
9 * For local testing of edited module,
10 * Create a standalone project with the `testing or main.go` and `go mod init` inside the project root.
11 The `go mod init` fetches the depedencies required by code.
12 * Replace Quobyte API with updated API `go mod edit -replace github.com/quobyte/api=</path/to/local/quobyte/api>`
13 * Publishing change must always have highest minor version of all the published tags (even if the tag is deleted,
14 the new version must have the higher version than deleted tag).
15
16 Note: go mod updates dependency to the highest minor version available. Even if the version is deleted from the tags,
17 go-git gets it from the deleted references (Uhhh!!). The only way out is to create a new higher minor
18 version with the changes.
0 module github.com/quobyte/api
1
2 go 1.14
0 package quobyte
1
2 import (
3 "log"
4 "net/http"
5 "net/http/cookiejar"
6 "net/url"
7 "regexp"
8 )
9
10 // retry policy codes
11 const (
12 RetryInteractive string = "INTERACTIVE"
13 RetryInfinitely string = "INFINITELY"
14 )
15
16 var UUIDValidator = regexp.MustCompile("^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[8|9|aA|bB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$")
17
18 type QuobyteClient struct {
19 client *http.Client
20 url *url.URL
21 username string
22 password string
23 apiRetryPolicy string
24 // hasCookies bool
25 }
26
27 func (client *QuobyteClient) hasCookies() (bool, error) {
28 return client.client.Jar != nil && len(client.client.Jar.Cookies(client.url)) > 0, nil
29 }
30
31 func (client *QuobyteClient) SetAPIRetryPolicy(retry string) {
32 client.apiRetryPolicy = retry
33 }
34
35 func (client *QuobyteClient) GetAPIRetryPolicy() string {
36 return client.apiRetryPolicy
37 }
38
39 func (client *QuobyteClient) SetTransport(t http.RoundTripper) {
40 client.client.Transport = t
41 }
42
43 // NewQuobyteClient creates a new Quobyte API client
44 func NewQuobyteClient(urlStr string, username string, password string) *QuobyteClient {
45 url, err := url.Parse(urlStr)
46 if err != nil {
47 log.Fatalf("could not parse url due to %s", err.Error())
48 }
49 cookieJar, err := cookiejar.New(nil)
50 if err != nil {
51 log.Fatalf("could not initialize cookie jar due to %s", err.Error())
52 }
53 return &QuobyteClient{
54 client: &http.Client{Jar: cookieJar},
55 url: url,
56 username: username,
57 password: password,
58 apiRetryPolicy: RetryInteractive,
59 }
60 return nil
61 }
62
63 // GetVolumeUUID resolves the volumeUUID for the given volume and tenant name.
64 // This method should be used when it is not clear if the given string is volume UUID or Name.
65 func (client *QuobyteClient) GetVolumeUUID(volume, tenant string) (string, error) {
66 if len(volume) != 0 && !IsValidUUID(volume) {
67 tenantUUID, err := client.GetTenantUUID(tenant)
68 if err != nil {
69 return "", err
70 }
71 volUUID, err := client.ResolveVolumeNameToUUID(volume, tenantUUID)
72 if err != nil {
73 return "", err
74 }
75
76 return volUUID, nil
77 }
78 return volume, nil
79 }
80
81 // GetTenantUUID resolves the tenatnUUID for the given name
82 // This method should be used when it is not clear if the given string is Tenant UUID or Name.
83 func (client *QuobyteClient) GetTenantUUID(tenant string) (string, error) {
84 if len(tenant) != 0 && !IsValidUUID(tenant) {
85 tenantUUID, err := client.ResolveTenantNameToUUID(tenant)
86 if err != nil {
87 return "", err
88 }
89 return tenantUUID, nil
90 }
91 return tenant, nil
92 }
93
94 // ResolveVolumeNameToUUID resolves a volume name to a UUID
95 func (client *QuobyteClient) ResolveVolumeNameToUUID(volumeName, tenant string) (string, error) {
96 request := &ResolveVolumeNameRequest{
97 VolumeName: volumeName,
98 TenantDomain: tenant,
99 }
100 var response ResolveVolumeNameResponse
101 if err := client.sendRequest("resolveVolumeName", request, &response); err != nil {
102 return "", err
103 }
104
105 return response.VolumeUuid, nil
106 }
107
108 // DeleteVolumeByResolvingNamesToUUID deletes the volume by resolving the volume name and tenant name to
109 // respective UUID if required.
110 // This method should be used if the given volume, tenant information is name or UUID.
111 func (client *QuobyteClient) DeleteVolumeByResolvingNamesToUUID(volume, tenant string) error {
112 volumeUUID, err := client.GetVolumeUUID(volume, tenant)
113 if err != nil {
114 return err
115 }
116
117 _, err = client.DeleteVolume(&DeleteVolumeRequest{VolumeUuid: volumeUUID})
118 return err
119 }
120
121 // DeleteVolumeByName deletes a volume by a given name
122 func (client *QuobyteClient) DeleteVolumeByName(volumeName, tenant string) error {
123 uuid, err := client.ResolveVolumeNameToUUID(volumeName, tenant)
124 if err != nil {
125 return err
126 }
127
128 _, err = client.DeleteVolume(&DeleteVolumeRequest{VolumeUuid: uuid})
129 return err
130 }
131
132 // SetVolumeQuota sets a Quota to the specified Volume
133 func (client *QuobyteClient) SetVolumeQuota(volumeUUID string, quotaSize int64) error {
134 request := &SetQuotaRequest{
135 Quotas: []*Quota{
136 &Quota{
137 Consumer: []*ConsumingEntity{
138 &ConsumingEntity{
139 Type: ConsumingEntity_Type_VOLUME,
140 Identifier: volumeUUID,
141 },
142 },
143 Limits: []*Resource{
144 &Resource{
145 Type: Resource_Type_LOGICAL_DISK_SPACE,
146 Value: quotaSize,
147 },
148 },
149 },
150 },
151 }
152
153 return client.sendRequest("setQuota", request, nil)
154 }
155
156 // GetTenantMap returns a map that contains all tenant names and there ID's
157 func (client *QuobyteClient) GetTenantMap() (map[string]string, error) {
158 result := map[string]string{}
159 response, err := client.GetTenant(&GetTenantRequest{})
160
161 if err != nil {
162 return result, err
163 }
164
165 for _, tenant := range response.Tenant {
166 result[tenant.Name] = tenant.TenantId
167 }
168
169 return result, nil
170 }
171
172 // IsValidUUID Validates the given uuid
173 func IsValidUUID(uuid string) bool {
174 return UUIDValidator.MatchString(uuid)
175 }
176
177 // ResolveTenantNameToUUID Returns UUID for given name, error if not found.
178 func (client *QuobyteClient) ResolveTenantNameToUUID(name string) (string, error) {
179 request := &ResolveTenantNameRequest{
180 TenantName: name,
181 }
182
183 var response ResolveTenantNameResponse
184 err := client.sendRequest("resolveTenantName", request, &response)
185 if err != nil {
186 return "", err
187 }
188 return response.TenantId, nil
189 }
0 package quobyte
1
2 import (
3 "bytes"
4 "encoding/json"
5 "errors"
6 "fmt"
7 "io"
8 "io/ioutil"
9 "math/rand"
10 "net/http"
11 "reflect"
12 "strconv"
13 "sync"
14 )
15
16 const (
17 emptyResponse string = "Empty result and no error occured"
18 )
19
20 var mux sync.Mutex
21
22 type request struct {
23 ID string `json:"id"`
24 Version string `json:"jsonrpc"`
25 Method string `json:"method"`
26 Params interface{} `json:"params"`
27 }
28
29 type response struct {
30 ID string `json:"id"`
31 Version string `json:"jsonrpc"`
32 Result *json.RawMessage `json:"result"`
33 Error *json.RawMessage `json:"error"`
34 }
35
36 type rpcError struct {
37 Code int64 `json:"code"`
38 Message string `json:"message"`
39 }
40
41 func (err *rpcError) decodeErrorCode() string {
42 switch err.Code {
43 case -32600:
44 return "ERROR_CODE_INVALID_REQUEST"
45 case -32603:
46 return "ERROR_CODE_JSON_ENCODING_FAILED"
47 case -32601:
48 return "ERROR_CODE_METHOD_NOT_FOUND"
49 case -32700:
50 return "ERROR_CODE_PARSE_ERROR"
51 }
52
53 return ""
54 }
55
56 func encodeRequest(method string, params interface{}) ([]byte, error) {
57 return json.Marshal(&request{
58 // Generate random ID and convert it to a string
59 ID: strconv.FormatInt(rand.Int63(), 10),
60 Version: "2.0",
61 Method: method,
62 Params: params,
63 })
64 }
65
66 func decodeResponse(ioReader io.Reader, reply interface{}) error {
67 var resp response
68 if err := json.NewDecoder(ioReader).Decode(&resp); err != nil {
69 return err
70 }
71
72 if resp.Error != nil {
73 var rpcErr rpcError
74 if err := json.Unmarshal(*resp.Error, &rpcErr); err != nil {
75 return err
76 }
77
78 if rpcErr.Message != "" {
79 return errors.New(rpcErr.Message)
80 }
81
82 respError := rpcErr.decodeErrorCode()
83 if respError != "" {
84 return errors.New(respError)
85 }
86 }
87
88 if resp.Result != nil && reply != nil {
89 return json.Unmarshal(*resp.Result, reply)
90 }
91
92 return errors.New(emptyResponse)
93 }
94
95 func (client QuobyteClient) sendRequest(method string, request interface{}, response interface{}) error {
96 etype := reflect.ValueOf(request).Elem()
97 field := etype.FieldByName("RetryPolicy")
98 if field.IsValid() {
99 field.SetString(client.GetAPIRetryPolicy())
100 }
101 message, err := encodeRequest(method, request)
102 if err != nil {
103 return err
104 }
105 req, err := http.NewRequest("POST", client.url.String(), bytes.NewBuffer(message))
106 if err != nil {
107 return err
108 }
109 req.Header.Set("Content-Type", "application/json")
110 // If no cookies, serialize requests such that first successful request sets the cookies
111 for {
112 mux.Lock()
113 hasCookies, err := client.hasCookies()
114 if err != nil {
115 return err
116 }
117 if !hasCookies {
118 req.SetBasicAuth(client.username, client.password)
119 // no cookies available, must hold lock until request is completed and
120 // new cookies are created by server
121 defer mux.Unlock()
122 } else {
123 // let every thread/routine send request using the cookie
124 mux.Unlock()
125 }
126 resp, err := client.client.Do(req)
127 if err != nil {
128 return err
129 }
130 defer resp.Body.Close()
131
132 if resp.StatusCode < 200 || resp.StatusCode > 299 {
133 if resp.StatusCode == 401 {
134 _, ok := req.Header["Authorization"]
135 if ok {
136 return errors.New("Unable to authenticate with Quobyte API service")
137 }
138 // Session is not valid anymore (service restart, sesssion invalidated etc)!!
139 // resend basic auth and get new cookies
140 // invalidate session cookies
141 cookieJar := client.client.Jar
142 if cookieJar != nil {
143 cookies := cookieJar.Cookies(client.url)
144 for _, cookie := range cookies {
145 cookie.MaxAge = -1
146 }
147 cookieJar.SetCookies(client.url, cookies)
148 }
149 // retry request with authorization header
150 continue
151 }
152 body, err := ioutil.ReadAll(resp.Body)
153 if err != nil {
154 return (err)
155 }
156 return fmt.Errorf("JsonRPC failed with error (error code: %d) %s",
157 resp.StatusCode, string(body))
158 }
159 return decodeResponse(resp.Body, &response)
160 }
161 }
0 package quobyte
1
2 import (
3 "bytes"
4 "encoding/json"
5 "reflect"
6 "testing"
7 )
8
9 func TestSuccesfullEncodeRequest(t *testing.T) {
10 req := &CreateVolumeRequest{
11 RootUserId: "root",
12 RootGroupId: "root",
13 Name: "test",
14 }
15
16 //Generate Params here
17 var param map[string]interface{}
18 byt, _ := json.Marshal(req)
19 _ = json.Unmarshal(byt, &param)
20
21 expectedRPCRequest := &request{
22 ID: "0",
23 Method: "createVolume",
24 Version: "2.0",
25 Params: param,
26 }
27
28 res, _ := encodeRequest("createVolume", req)
29
30 var reqResult request
31 json.Unmarshal(res, &reqResult)
32
33 if expectedRPCRequest.Version != reqResult.Version {
34 t.Logf("Expected Version: %s got %s\n", expectedRPCRequest.Version, reqResult.Version)
35 t.Fail()
36 }
37
38 if expectedRPCRequest.Method != reqResult.Method {
39 t.Logf("Expected Method: %s got %s\n", expectedRPCRequest.Method, reqResult.Method)
40 t.Fail()
41 }
42
43 if !reflect.DeepEqual(expectedRPCRequest.Params, reqResult.Params) {
44 t.Logf("Expected Params: %v got %v\n", expectedRPCRequest.Params, reqResult.Params)
45 t.Fail()
46 }
47 }
48
49 func TestSuccesfullDecodeResponse(t *testing.T) {
50 var byt json.RawMessage
51 byt, _ = json.Marshal(map[string]interface{}{"volume_uuid": "1234"})
52
53 expectedResult := &response{
54 ID: "0",
55 Version: "2.0",
56 Result: &byt,
57 }
58
59 res, _ := json.Marshal(expectedResult)
60
61 var resp CreateVolumeResponse
62 err := decodeResponse(bytes.NewReader(res), &resp)
63 if err != nil {
64 t.Log(err)
65 t.Fail()
66 }
67
68 if "1234" != resp.VolumeUuid {
69 t.Logf("Expected Volume UUID: %v got %v\n", "1234", resp.VolumeUuid)
70 t.Fail()
71 }
72 }
73
74 func TestSuccesfullDecodeResponseWithErrorMessage(t *testing.T) {
75 errorMessage := "ERROR_CODE_INVALID_REQUEST"
76 var byt json.RawMessage
77 byt, _ = json.Marshal(&rpcError{
78 Code: -32600,
79 Message: "ERROR_CODE_INVALID_REQUEST",
80 })
81
82 expectedResult := &response{
83 ID: "0",
84 Version: "2.0",
85 Error: &byt,
86 }
87
88 res, _ := json.Marshal(expectedResult)
89
90 var resp CreateVolumeResponse
91 err := decodeResponse(bytes.NewReader(res), &resp)
92 if err == nil {
93 t.Log("No error occured")
94 t.Fail()
95 }
96
97 if errorMessage != err.Error() {
98 t.Logf("Expected: %s got %s\n", errorMessage, err.Error())
99 t.Fail()
100 }
101 }
102
103 func TestSuccesfullDecodeResponseWithErrorCode(t *testing.T) {
104 errorMessage := "ERROR_CODE_INVALID_REQUEST"
105 var byt json.RawMessage
106 byt, _ = json.Marshal(&rpcError{
107 Code: -32600,
108 })
109
110 expectedResult := &response{
111 ID: "0",
112 Version: "2.0",
113 Error: &byt,
114 }
115
116 res, _ := json.Marshal(expectedResult)
117
118 var resp CreateVolumeResponse
119 err := decodeResponse(bytes.NewReader(res), &resp)
120 if err == nil {
121 t.Log("No error occured")
122 t.Fail()
123 }
124
125 if errorMessage != err.Error() {
126 t.Logf("Expected: %s got %s\n", errorMessage, err.Error())
127 t.Fail()
128 }
129 }
130
131 func TestBadDecodeResponse(t *testing.T) {
132 expectedResult := &response{
133 ID: "0",
134 Version: "2.0",
135 }
136
137 res, _ := json.Marshal(expectedResult)
138
139 var resp CreateVolumeResponse
140 err := decodeResponse(bytes.NewReader(res), &resp)
141 if err == nil {
142 t.Log("No error occured")
143 t.Fail()
144 }
145
146 if emptyResponse != err.Error() {
147 t.Logf("Expected: %s got %s\n", emptyResponse, err.Error())
148 t.Fail()
149 }
150 }
151
152 type decodeErrorCodeTest struct {
153 code int64
154 expected string
155 }
156
157 func TestDecodeErrorCode(t *testing.T) {
158 tests := []*decodeErrorCodeTest{
159 &decodeErrorCodeTest{code: -32600, expected: "ERROR_CODE_INVALID_REQUEST"},
160 &decodeErrorCodeTest{code: -32603, expected: "ERROR_CODE_JSON_ENCODING_FAILED"},
161 &decodeErrorCodeTest{code: -32601, expected: "ERROR_CODE_METHOD_NOT_FOUND"},
162 &decodeErrorCodeTest{code: -32700, expected: "ERROR_CODE_PARSE_ERROR"},
163 }
164
165 _ = tests
166 for _, decodeTest := range tests {
167 err := &rpcError{
168 Code: decodeTest.code,
169 }
170
171 if decodeTest.expected != err.decodeErrorCode() {
172 t.Logf("Expected: %s got %s\n", decodeTest.expected, err.decodeErrorCode())
173 t.Fail()
174 }
175 }
176 }
0 // Autogenerated code, do not edit.
1 // Copyright 2020 Quobyte Inc. See LICENSE for license terms.
2
3 package quobyte
4
5 type retryPolicy struct {
6 RetryPolicy string `json:"retry,omitempty"`
7 }
8
9 type AccessKeyType string
10
11 const (
12 AccessKeyType_S3 AccessKeyType = "S3"
13 )
14
15 type AlertState string
16
17 const (
18 // Disabled
19 AlertState_DISABLED AlertState = "DISABLED"
20 // Enabled but not signaled
21 AlertState_DORMANT AlertState = "DORMANT"
22 // Alert active
23 AlertState_FIRING AlertState = "FIRING"
24 // Superseded by another alert
25 AlertState_INHIBITED AlertState = "INHIBITED"
26 // Signaled, but not long enough yet
27 AlertState_SIGNALLED AlertState = "SIGNALLED"
28 // Active but muted
29 AlertState_SILENCED AlertState = "SILENCED"
30 )
31
32 type ConfigurationType string
33
34 const (
35 ConfigurationType_FAILURE_DOMAINS ConfigurationType = "FAILURE_DOMAINS"
36 ConfigurationType_QUOTA_POOL ConfigurationType = "QUOTA_POOL"
37 ConfigurationType_RULE_CONFIGURATION ConfigurationType = "RULE_CONFIGURATION"
38 ConfigurationType_SYSTEM_CONFIGURATION ConfigurationType = "SYSTEM_CONFIGURATION"
39 // Obsolete since release 1.4. Use setTenant() and getTenant() instead.
40 // Must not be changed to preserve compatibility with open stack drivers
41 // (MANILA v1.2.3).
42 ConfigurationType_TENANT_DOMAIN ConfigurationType = "TENANT_DOMAIN"
43 ConfigurationType_USER ConfigurationType = "USER"
44 ConfigurationType_VOLUME_CONFIGURATION ConfigurationType = "VOLUME_CONFIGURATION"
45 )
46
47 type CrlReason string
48
49 const (
50 CrlReason_AA_COMPROMISE CrlReason = "AA_COMPROMISE"
51 CrlReason_AFFILIATION_CHANGED CrlReason = "AFFILIATION_CHANGED"
52 CrlReason_CA_COMPROMISE CrlReason = "CA_COMPROMISE"
53 CrlReason_CERTIFICATE_HOLD CrlReason = "CERTIFICATE_HOLD"
54 CrlReason_CESSATION_OF_OPERATION CrlReason = "CESSATION_OF_OPERATION"
55 CrlReason_KEY_COMPROMISE CrlReason = "KEY_COMPROMISE"
56 CrlReason_PRIVILEGE_WITHDRAWN CrlReason = "PRIVILEGE_WITHDRAWN"
57 CrlReason_REMOVE_FROM_CRL CrlReason = "REMOVE_FROM_CRL"
58 CrlReason_SUPERSEDED CrlReason = "SUPERSEDED"
59 CrlReason_UNSPECIFIED CrlReason = "UNSPECIFIED"
60 )
61
62 type CsrState string
63
64 const (
65 CsrState_APPROVED CsrState = "APPROVED"
66 CsrState_PENDING CsrState = "PENDING"
67 CsrState_REJECTED CsrState = "REJECTED"
68 )
69
70 type DeviceHardwareType string
71
72 const (
73 DeviceHardwareType_ROTATING_DISK DeviceHardwareType = "ROTATING_DISK"
74 DeviceHardwareType_SHINGLED_DISK DeviceHardwareType = "SHINGLED_DISK"
75 DeviceHardwareType_SOLID_STATE_DISK DeviceHardwareType = "SOLID_STATE_DISK"
76 DeviceHardwareType_SOLID_STATE_DISK_NVME DeviceHardwareType = "SOLID_STATE_DISK_NVME"
77 DeviceHardwareType_UNKNOWN DeviceHardwareType = "UNKNOWN"
78 )
79
80 type FailureDomainType string
81
82 const (
83 FailureDomainType_CLUSTER FailureDomainType = "CLUSTER"
84 FailureDomainType_MACHINE FailureDomainType = "MACHINE"
85 FailureDomainType_METRO FailureDomainType = "METRO"
86 FailureDomainType_POWER_1 FailureDomainType = "POWER_1"
87 FailureDomainType_POWER_2 FailureDomainType = "POWER_2"
88 FailureDomainType_RACK FailureDomainType = "RACK"
89 FailureDomainType_ROOM FailureDomainType = "ROOM"
90 )
91
92 type FilterFileProperty string
93
94 const (
95 FilterFileProperty_CURRENT_FILE_SIZE FilterFileProperty = "CURRENT_FILE_SIZE"
96 FilterFileProperty_EXPECTED_SIZE_OF_NEW_FILE FilterFileProperty = "EXPECTED_SIZE_OF_NEW_FILE"
97 FilterFileProperty_FILENAME FilterFileProperty = "FILENAME"
98 FilterFileProperty_LAST_ACCESS_AGE FilterFileProperty = "LAST_ACCESS_AGE"
99 FilterFileProperty_LAST_MODIFICATION_AGE FilterFileProperty = "LAST_MODIFICATION_AGE"
100 FilterFileProperty_OWNER_USER_NAME FilterFileProperty = "OWNER_USER_NAME"
101 )
102
103 type FilterOperator string
104
105 const (
106 FilterOperator_CONTAINS FilterOperator = "CONTAINS"
107 FilterOperator_ENDS_WITH FilterOperator = "ENDS_WITH"
108 FilterOperator_EQUALS FilterOperator = "EQUALS"
109 FilterOperator_EXTENSION_MATCHES FilterOperator = "EXTENSION_MATCHES"
110 FilterOperator_LARGER_THAN FilterOperator = "LARGER_THAN"
111 FilterOperator_REGEX_MATCHES FilterOperator = "REGEX_MATCHES"
112 FilterOperator_SMALLER_THAN FilterOperator = "SMALLER_THAN"
113 FilterOperator_STARTS_WITH FilterOperator = "STARTS_WITH"
114 )
115
116 type HashMethod string
117
118 const (
119 // up to date security, flexible to parameterize
120 HashMethod_SALTED_PBKDF2_SHA512 HashMethod = "SALTED_PBKDF2_SHA512"
121 // keep the same order like in GLOBALCONFIGURATION.proto! moderate
122 // security
123 HashMethod_SALTED_SHA512 HashMethod = "SALTED_SHA512"
124 )
125
126 type ImplicitLockingMode string
127
128 const (
129 ImplicitLockingMode_FILE_BLOCKING ImplicitLockingMode = "FILE_BLOCKING"
130 ImplicitLockingMode_FILE_NON_BLOCKING ImplicitLockingMode = "FILE_NON_BLOCKING"
131 ImplicitLockingMode_IO_BLOCKING ImplicitLockingMode = "IO_BLOCKING"
132 ImplicitLockingMode_IO_NON_BLOCKING ImplicitLockingMode = "IO_NON_BLOCKING"
133 ImplicitLockingMode_NO_LOCKING ImplicitLockingMode = "NO_LOCKING"
134 )
135
136 type KeystoreSlotOwner string
137
138 const (
139 KeystoreSlotOwner_SYSTEM_SLOT KeystoreSlotOwner = "SYSTEM_SLOT"
140 KeystoreSlotOwner_USER_SLOT KeystoreSlotOwner = "USER_SLOT"
141 )
142
143 type LostLockBehavior string
144
145 const (
146 LostLockBehavior_BLOCK_IO LostLockBehavior = "BLOCK_IO"
147 LostLockBehavior_IO_ERROR LostLockBehavior = "IO_ERROR"
148 LostLockBehavior_KILL_APPLICATION LostLockBehavior = "KILL_APPLICATION"
149 )
150
151 type ModeOverride string
152
153 const (
154 ModeOverride_AS_REQUESTED ModeOverride = "AS_REQUESTED"
155 ModeOverride_DISABLE_ALWAYS ModeOverride = "DISABLE_ALWAYS"
156 ModeOverride_ENABLE_ALWAYS ModeOverride = "ENABLE_ALWAYS"
157 )
158
159 type PageCacheMode string
160
161 const (
162 PageCacheMode_FLUSH_ALWAYS PageCacheMode = "FLUSH_ALWAYS"
163 PageCacheMode_KEEP_ALWAYS PageCacheMode = "KEEP_ALWAYS"
164 PageCacheMode_USE_HEURISTIC PageCacheMode = "USE_HEURISTIC"
165 )
166
167 type QuorumReadMode string
168
169 const (
170 // elect primary after read (if file is larger than first read)
171 QuorumReadMode_FIRST_READ QuorumReadMode = "FIRST_READ"
172 // regular primary election + read
173 QuorumReadMode_OFF QuorumReadMode = "OFF"
174 )
175
176 type RpcRetryMode string
177
178 const (
179 RpcRetryMode_RETRY_FOREVER RpcRetryMode = "RETRY_FOREVER"
180 RpcRetryMode_RETRY_FOREVER_UNLESS_FULL RpcRetryMode = "RETRY_FOREVER_UNLESS_FULL"
181 RpcRetryMode_RETRY_INTERACTIVE RpcRetryMode = "RETRY_INTERACTIVE"
182 RpcRetryMode_RETRY_NEVER RpcRetryMode = "RETRY_NEVER"
183 )
184
185 type ServiceType string
186
187 const (
188 ServiceType_API_PROXY ServiceType = "API_PROXY"
189 // Clients and proxies.
190 ServiceType_CLIENT ServiceType = "CLIENT"
191 ServiceType_DIRECTORY_SERVICE ServiceType = "DIRECTORY_SERVICE"
192 ServiceType_METADATA_SERVICE ServiceType = "METADATA_SERVICE"
193 ServiceType_NFS_PROXY ServiceType = "NFS_PROXY"
194 ServiceType_S3_PROXY ServiceType = "S3_PROXY"
195 ServiceType_STORAGE_SERVICE ServiceType = "STORAGE_SERVICE"
196 ServiceType_WEBCONSOLE ServiceType = "WEBCONSOLE"
197 )
198
199 type TaskState string
200
201 const (
202 TaskState_CANCELED TaskState = "CANCELED"
203 TaskState_CANCELLING TaskState = "CANCELLING"
204 TaskState_FAILED TaskState = "FAILED"
205 TaskState_FINISHED TaskState = "FINISHED"
206 TaskState_RUNNING TaskState = "RUNNING"
207 TaskState_SCHEDULED TaskState = "SCHEDULED"
208 )
209
210 type TaskType string
211
212 const (
213 // Analyze file system volume
214 TaskType_ANALYZE_VOLUMES TaskType = "ANALYZE_VOLUMES"
215 // Synchronizes replica sets when devices were temporarily unavailable.
216 TaskType_CATCH_UP TaskType = "CATCH_UP"
217 // Cleans up unreferenced data.
218 TaskType_CLEANUP TaskType = "CLEANUP"
219 // Moves data from a device to other suitable devices.
220 TaskType_CLEAR TaskType = "CLEAR"
221 // Copies, moves or recodes files certain files from a source to another.
222 TaskType_COPY_FILES TaskType = "COPY_FILES"
223 // Safely remove a device from the Quobyte installation.
224 TaskType_DRAIN TaskType = "DRAIN"
225 // Restores replica sets and replaces replicas of volume metadata and files
226 // according to the configured replication policy.
227 TaskType_ENFORCE_PLACEMENT TaskType = "ENFORCE_PLACEMENT"
228 // Restores replica sets and replaces replicas of volume metadata according
229 // to the configured replication policy.
230 TaskType_ENFORCE_VOLUME_PLACEMENT TaskType = "ENFORCE_VOLUME_PLACEMENT"
231 // Deletes a snapshot with all then unreferenced files from data services.
232 TaskType_ERASE_SNAPSHOTS TaskType = "ERASE_SNAPSHOTS"
233 // Erases volume file data and database, and deletes volume from registry
234 // afterwards.
235 TaskType_ERASE_VOLUMES TaskType = "ERASE_VOLUMES"
236 TaskType_FSTRIM TaskType = "FSTRIM"
237 TaskType_MAKE_DEVICE TaskType = "MAKE_DEVICE"
238 // Moves replicas from overutilized to underutilized data devices.
239 TaskType_REBALANCE TaskType = "REBALANCE"
240 // Moves metadata replicas between metadata devices, trying to eliminate
241 // over- and underutilized metadata devices.
242 TaskType_REBALANCE_METADATA_DEVICES TaskType = "REBALANCE_METADATA_DEVICES"
243 // Regenerates replicas located at an inaccessible device.
244 TaskType_REGENERATE TaskType = "REGENERATE"
245 // Update service to newer releases
246 TaskType_RELEASE_ROLLOUT TaskType = "RELEASE_ROLLOUT"
247 // Reads file system data and checks for CRC errors.
248 TaskType_SCRUB TaskType = "SCRUB"
249 // Move replicas according to there configured replication policy between
250 // device classes.
251 TaskType_TIERING TaskType = "TIERING"
252 )
253
254 type UserDatabase string
255
256 const (
257 // Internal Quobyte database
258 UserDatabase_DB UserDatabase = "DB"
259 // OpenStack Keystone identity service
260 UserDatabase_KEYSTONE UserDatabase = "KEYSTONE"
261 // LDAP directory
262 UserDatabase_LDAP UserDatabase = "LDAP"
263 )
264
265 type UserRole string
266
267 const (
268 UserRole_FILESYSTEM_ADMIN UserRole = "FILESYSTEM_ADMIN"
269 UserRole_FILESYSTEM_ADMIN_READONLY UserRole = "FILESYSTEM_ADMIN_READONLY"
270 UserRole_HARDWARE_OPERATOR UserRole = "HARDWARE_OPERATOR"
271 // Not effective anymore. Use new user property instead.
272 UserRole_OBSOLETE_DOMAIN_ADMIN UserRole = "OBSOLETE_DOMAIN_ADMIN"
273 // Not effective anymore
274 UserRole_OBSOLETE_DOMAIN_ADMIN_READONLY UserRole = "OBSOLETE_DOMAIN_ADMIN_READONLY"
275 UserRole_OBSOLETE_UNPRIVILEGED_USER UserRole = "OBSOLETE_UNPRIVILEGED_USER"
276 UserRole_SUPER_USER UserRole = "SUPER_USER"
277 UserRole_SUPER_USER_READONLY UserRole = "SUPER_USER_READONLY"
278 )
279
280 type AccessControlList struct {
281 Entries []*AccessControlList_AccessControlEntry `json:"entries,omitempty"`
282 PosixAccessMask int32 `json:"posix_access_mask,omitempty"`
283 PosixDefaultMask int32 `json:"posix_default_mask,omitempty"`
284 }
285
286 type AccessControlList_AceFlags string
287
288 const (
289 AccessControlList_AceFlags_DIR_INHERIT AccessControlList_AceFlags = "DIR_INHERIT"
290 AccessControlList_AceFlags_FILE_INHERIT AccessControlList_AceFlags = "FILE_INHERIT"
291 AccessControlList_AceFlags_GROUP AccessControlList_AceFlags = "GROUP"
292 AccessControlList_AceFlags_INHERIT_ONLY AccessControlList_AceFlags = "INHERIT_ONLY"
293 AccessControlList_AceFlags_NO_PROPAGATE_INHERIT AccessControlList_AceFlags = "NO_PROPAGATE_INHERIT"
294 )
295
296 type AccessControlList_AcePermissionMask string
297
298 const (
299 AccessControlList_AcePermissionMask_APPEND AccessControlList_AcePermissionMask = "APPEND"
300 AccessControlList_AcePermissionMask_CHOWN AccessControlList_AcePermissionMask = "CHOWN"
301 AccessControlList_AcePermissionMask_DELETE AccessControlList_AcePermissionMask = "DELETE"
302 AccessControlList_AcePermissionMask_DELETE_CHILD AccessControlList_AcePermissionMask = "DELETE_CHILD"
303 AccessControlList_AcePermissionMask_EXECUTE AccessControlList_AcePermissionMask = "EXECUTE"
304 AccessControlList_AcePermissionMask_READ AccessControlList_AcePermissionMask = "READ"
305 AccessControlList_AcePermissionMask_READ_ACL AccessControlList_AcePermissionMask = "READ_ACL"
306 AccessControlList_AcePermissionMask_READ_ATTRIBUTES AccessControlList_AcePermissionMask = "READ_ATTRIBUTES"
307 AccessControlList_AcePermissionMask_READ_NAMED_ATTRS AccessControlList_AcePermissionMask = "READ_NAMED_ATTRS"
308 AccessControlList_AcePermissionMask_SYNCHRONIZE_FILE AccessControlList_AcePermissionMask = "SYNCHRONIZE_FILE"
309 AccessControlList_AcePermissionMask_WRITE AccessControlList_AcePermissionMask = "WRITE"
310 AccessControlList_AcePermissionMask_WRITE_ACL AccessControlList_AcePermissionMask = "WRITE_ACL"
311 AccessControlList_AcePermissionMask_WRITE_ATTRIBUTES AccessControlList_AcePermissionMask = "WRITE_ATTRIBUTES"
312 AccessControlList_AcePermissionMask_WRITE_NAMED_ATTRS AccessControlList_AcePermissionMask = "WRITE_NAMED_ATTRS"
313 )
314
315 type AccessControlList_AceType string
316
317 const (
318 AccessControlList_AceType_ALLOW AccessControlList_AceType = "ALLOW"
319 AccessControlList_AceType_DENY AccessControlList_AceType = "DENY"
320 )
321
322 type AccessControlList_AccessControlEntry struct {
323 // Name of the user or group to whom this entry refers.
324 Principal string `json:"principal,omitempty"`
325 // Entry type (ALLOW or DENY).
326 Type AccessControlList_AceType `json:"type,omitempty"`
327 // Flags defining how to process the entry.
328 Flags int32 `json:"flags,omitempty"`
329 // Permissions attached to the entry.
330 Permissions int32 `json:"permissions,omitempty"`
331 }
332
333 type AccessKeyCredentials struct {
334 // Access key ID
335 AccessKeyId string `json:"access_key_id,omitempty"`
336 // Secret access key
337 SecretAccessKey string `json:"secret_access_key,omitempty"`
338 // Validity time for credentials. If value is 0, the keys are non-expiring.
339 ValidUntilTimestampMs int64 `json:"valid_until_timestamp_ms,omitempty"`
340 Type AccessKeyType `json:"type,omitempty"`
341 // The tenant to use for UserCredentials.
342 TenantId string `json:"tenant_id,omitempty"`
343 }
344
345 type AccessKeyDetails struct {
346 Type AccessKeyType `json:"type,omitempty"`
347 // Access key ID
348 AccessKeyId string `json:"access_key_id,omitempty"`
349 // Secret access key
350 SecretAccessKey string `json:"secret_access_key,omitempty"`
351 // Validity time for credentials. If value is 0, the keys are non-expiring.
352 ValidityDays int32 `json:"validity_days,omitempty"`
353 // The tenant to use for UserCredentials.
354 TenantId string `json:"tenant_id,omitempty"`
355 }
356
357 type AcknowledgeAlertRequest struct {
358 AlertIdentifier string `json:"alert_identifier,omitempty"`
359 Qualifiers FiringRule `json:"qualifiers,omitempty"`
360 retryPolicy
361 }
362
363 type AcknowledgeAlertResponse struct {
364 }
365
366 type AddCaRequest struct {
367 // CA name
368 Name string `json:"name,omitempty"`
369 // CA description
370 CertificateAuthority CertificateAuthority `json:"certificate_authority,omitempty"`
371 retryPolicy
372 }
373
374 type AddCaResponse struct {
375 }
376
377 type AddCertificateRequest struct {
378 // Certificate to import (will create new one if empty)
379 Certificate Certificate `json:"certificate,omitempty"`
380 // CSR that is approved by this certificate
381 CsrId int64 `json:"csr_id,omitempty"`
382 retryPolicy
383 }
384
385 type AddCertificateResponse struct {
386 // Generated certificate
387 Certificate Certificate `json:"certificate,omitempty"`
388 // Fingerprint
389 Fingerprint string `json:"fingerprint,omitempty"`
390 // Human readable subject
391 SubjectString string `json:"subject_string,omitempty"`
392 }
393
394 type AddCsrRequest struct {
395 // CSR
396 Csr CertificateSigningRequest `json:"csr,omitempty"`
397 retryPolicy
398 }
399
400 type AddCsrResponse struct {
401 // CSR identifier
402 CsrId int64 `json:"csr_id,omitempty"`
403 }
404
405 type AddRegistryReplicaRequest struct {
406 // A string containing the device ID of the replica to add.
407 DeviceId string `json:"device_id,omitempty"`
408 // Optional comment field for auditing.
409 Comment string `json:"comment,omitempty"`
410 retryPolicy
411 }
412
413 type AddRegistryReplicaResponse struct {
414 }
415
416 type AdditionalPrivilegedGroupsSecurityPolicy struct {
417 Group []string `json:"group,omitempty"`
418 }
419
420 type AlertConfiguration struct {
421 // Ability to disable any effect of this rule.
422 Enabled bool `json:"enabled,omitempty"`
423 // The sensor signal must be present for this much time.
424 AlertAfterSeconds int32 `json:"alert_after_seconds,omitempty"`
425 // Only alert at these times
426 RestrictTime RestrictTime `json:"restrict_time,omitempty"`
427 }
428
429 type AsyncReplicationProgress struct {
430 FilesInProgress int64 `json:"files_in_progress,omitempty"`
431 InSyncUntilTimestampS int64 `json:"in_sync_until_timestamp_s,omitempty"`
432 Connected bool `json:"connected,omitempty"`
433 }
434
435 type AsyncReplicationSource struct {
436 // List of remote registry targets.
437 RemoteRegistryTarget []string `json:"remote_registry_target,omitempty"`
438 // UUID of the remote volume to sync with.
439 RemoteVolumeUuid string `json:"remote_volume_uuid,omitempty"`
440 }
441
442 type AuditEvent struct {
443 // Time at which the event was triggered
444 TimestampMs int64 `json:"timestamp_ms,omitempty"`
445 //User who triggered the event (if empty, triggered by automation rule)
446 Username string `json:"username,omitempty"`
447 //Subject type that was affected
448 SubjectType AuditEvent_SubjectType `json:"subject_type,omitempty"`
449 //ID of the affected subject
450 SubjectId string `json:"subject_id,omitempty"`
451 //Action that was executed
452 Action string `json:"action,omitempty"`
453 // Optional description
454 Comment string `json:"comment,omitempty"`
455 }
456
457 type AuditEvent_SubjectType string
458
459 const (
460 AuditEvent_SubjectType_CONFIGURATION AuditEvent_SubjectType = "CONFIGURATION"
461 AuditEvent_SubjectType_DEVICE AuditEvent_SubjectType = "DEVICE"
462 AuditEvent_SubjectType_KEY_STORE AuditEvent_SubjectType = "KEY_STORE"
463 AuditEvent_SubjectType_POLICY_RULE AuditEvent_SubjectType = "POLICY_RULE"
464 AuditEvent_SubjectType_QUOTA AuditEvent_SubjectType = "QUOTA"
465 AuditEvent_SubjectType_RULE AuditEvent_SubjectType = "RULE"
466 AuditEvent_SubjectType_TASK AuditEvent_SubjectType = "TASK"
467 AuditEvent_SubjectType_USER AuditEvent_SubjectType = "USER"
468 AuditEvent_SubjectType_VOLUME AuditEvent_SubjectType = "VOLUME"
469 AuditEvent_SubjectType_VOLUME_CONFIGURATION AuditEvent_SubjectType = "VOLUME_CONFIGURATION"
470 )
471
472 type CancelNetworkTestRequest struct {
473 retryPolicy
474 }
475
476 type CancelNetworkTestResponse struct {
477 }
478
479 type CancelSupportDumpRequest struct {
480 retryPolicy
481 }
482
483 type CancelSupportDumpResponse struct {
484 }
485
486 type CancelTaskRequest struct {
487 // List of one or more IDs of the tasks to be canceled
488 TaskId []string `json:"task_id,omitempty"`
489 retryPolicy
490 }
491
492 type CancelTaskResponse struct {
493 }
494
495 type CancelVolumeErasureRequest struct {
496 VolumeUuid string `json:"volume_uuid,omitempty"`
497 retryPolicy
498 }
499
500 type CancelVolumeErasureResponse struct {
501 }
502
503 type CatchUpSettings struct {
504 // Parameters for the downtime interval.
505 DowntimeBeginTimestampMs int64 `json:"downtime_begin_timestamp_ms,omitempty"`
506 // Obsolete since release 2.10
507 ObsoleteDowntimeEndTimestampMs int64 `json:"OBSOLETE_downtime_end_timestamp_ms,omitempty"`
508 }
509
510 type Certificate struct {
511 // Base64 encoded certificate
512 Certificate string `json:"certificate,omitempty"`
513 // Base64 encoded private key (optional)
514 PrivateKey string `json:"private_key,omitempty"`
515 // Certificate record
516 Record CertificateRecord `json:"record,omitempty"`
517 }
518
519 type CertificateAuthority struct {
520 // CA name
521 Name string `json:"name,omitempty"`
522 // CA certificate
523 Certificate Certificate `json:"certificate,omitempty"`
524 }
525
526 type CertificateRecord struct {
527 // Restrict to subject
528 Subject CertificateSubject `json:"subject,omitempty"`
529 // X.509 certificate fingerprint
530 Fingerprint string `json:"fingerprint,omitempty"`
531 // Last used from host
532 LastSeenFromHost string `json:"last_seen_from_host,omitempty"`
533 // Last used at timestamp
534 LastSeenTimestampSeconds int64 `json:"last_seen_timestamp_seconds,omitempty"`
535 // Human readable subject
536 SubjectString string `json:"subject_string,omitempty"`
537 }
538
539 type CertificateSigningRequest struct {
540 // CSR identifier
541 CsrId int64 `json:"csr_id,omitempty"`
542 // Textual CSR description
543 CsrDescription string `json:"csr_description,omitempty"`
544 // Encoded subject
545 Subject string `json:"subject,omitempty"`
546 // CSR state
547 State CsrState `json:"state,omitempty"`
548 // Resulting certificate fingerprint
549 CertificateFingerprint string `json:"certificate_fingerprint,omitempty"`
550 retryPolicy
551 }
552
553 type CertificateSubject struct {
554 // Restrict to service types
555 ServiceType []*ServiceType `json:"service_type,omitempty"`
556 // Restrict to hosts
557 RestrictToHosts []string `json:"restrict_to_hosts,omitempty"`
558 // Restrict to subjects
559 RestrictToSubjects []*DelegationSubject `json:"restrict_to_subjects,omitempty"`
560 }
561
562 type ChangePolicyRulePriorityRequest struct {
563 PolicyRuleUuid string `json:"policy_rule_uuid,omitempty"`
564 PriorityChange ChangePolicyRulePriorityRequest_PriorityChange `json:"priority_change,omitempty"`
565 retryPolicy
566 }
567
568 type ChangePolicyRulePriorityRequest_PriorityChange string
569
570 const (
571 ChangePolicyRulePriorityRequest_PriorityChange_DECREASE ChangePolicyRulePriorityRequest_PriorityChange = "DECREASE"
572 ChangePolicyRulePriorityRequest_PriorityChange_INCREASE ChangePolicyRulePriorityRequest_PriorityChange = "INCREASE"
573 )
574
575 type ChangePolicyRulePriorityResponse struct {
576 }
577
578 type ChecksumPolicy struct {
579 EnableServerChecksumComputationBeforeWrite bool `json:"enable_server_checksum_computation_before_write,omitempty"`
580 EnableServerChecksumVerificationAfterRead bool `json:"enable_server_checksum_verification_after_read,omitempty"`
581 EnableClientChecksumComputationBeforeWrite bool `json:"enable_client_checksum_computation_before_write,omitempty"`
582 EnableClientChecksumVerificationAfterRead bool `json:"enable_client_checksum_verification_after_read,omitempty"`
583 }
584
585 type Client struct {
586 ClientUuid string `json:"client_uuid,omitempty"`
587 MountedVolumeUuid string `json:"mounted_volume_uuid,omitempty"`
588 LocalMountPoint string `json:"local_mount_point,omitempty"`
589 ClientSoftwareVersion string `json:"client_software_version,omitempty"`
590 Hostname string `json:"hostname,omitempty"`
591 MountUserName string `json:"mount_user_name,omitempty"`
592 StatusServerUrl string `json:"status_server_url,omitempty"`
593 // Client start time in ms since epoch
594 ClientStartTimeMs int64 `json:"client_start_time_ms,omitempty"`
595 // Total bytes read
596 BytesRead int64 `json:"bytes_read,omitempty"`
597 // Total bytes written
598 BytesWritten int64 `json:"bytes_written,omitempty"`
599 // Current read rate in byte/s
600 ReadRate int64 `json:"read_rate,omitempty"`
601 // Current write rate in byte/s
602 WriteRate int64 `json:"write_rate,omitempty"`
603 ReadOperations int64 `json:"read_operations,omitempty"`
604 WriteOperations int64 `json:"write_operations,omitempty"`
605 Service ServiceDescription `json:"service,omitempty"`
606 ReadOperationsRate int64 `json:"read_operations_rate,omitempty"`
607 WriteOperationsRate int64 `json:"write_operations_rate,omitempty"`
608 TopCreatesPerSec []*Client_TopInfo `json:"top_creates_per_sec,omitempty"`
609 TopDeletesPerSec []*Client_TopInfo `json:"top_deletes_per_sec,omitempty"`
610 TopStatsPerSec []*Client_TopInfo `json:"top_stats_per_sec,omitempty"`
611 TopIops []*Client_TopInfo `json:"top_iops,omitempty"`
612 TopThroughputBytesPerSec []*Client_TopInfo `json:"top_throughput_bytes_per_sec,omitempty"`
613 TopReaddirsPerSec []*Client_TopInfo `json:"top_readdirs_per_sec,omitempty"`
614 TopOpensPerSec []*Client_TopInfo `json:"top_opens_per_sec,omitempty"`
615 RdmaEnabled bool `json:"rdma_enabled,omitempty"`
616 }
617
618 type Client_TopInfo struct {
619 VolumeUuid string `json:"volume_uuid,omitempty"`
620 User string `json:"user,omitempty"`
621 Process string `json:"process,omitempty"`
622 Directory string `json:"directory,omitempty"`
623 File string `json:"file,omitempty"`
624 Value float64 `json:"value,omitempty"`
625 }
626
627 type ClientCachePolicy struct {
628 Mode ClientCachePolicy_Mode `json:"mode,omitempty"`
629 }
630
631 type ClientCachePolicy_Mode string
632
633 const (
634 ClientCachePolicy_Mode_DISABLE_ALWAYS ClientCachePolicy_Mode = "DISABLE_ALWAYS"
635 ClientCachePolicy_Mode_DISABLE_FOR_O_DIRECT ClientCachePolicy_Mode = "DISABLE_FOR_O_DIRECT"
636 ClientCachePolicy_Mode_ENABLE_ALWAYS ClientCachePolicy_Mode = "ENABLE_ALWAYS"
637 )
638
639 type ClientScope struct {
640 // IP address in CIDR notation, e.g. 192.168.1.0/24.
641 ClientNetwork string `json:"client_network,omitempty"`
642 ClientType ClientScope_ClientType `json:"client_type,omitempty"`
643 }
644
645 type ClientScope_ClientType string
646
647 const (
648 ClientScope_ClientType_NATIVE ClientScope_ClientType = "NATIVE"
649 ClientScope_ClientType_NFS ClientScope_ClientType = "NFS"
650 ClientScope_ClientType_S3 ClientScope_ClientType = "S3"
651 )
652
653 type ConcurrentAppendHandlingPolicy struct {
654 Behavior ConcurrentAppendHandlingPolicy_Behavior `json:"behavior,omitempty"`
655 }
656
657 type ConcurrentAppendHandlingPolicy_Behavior string
658
659 const (
660 ConcurrentAppendHandlingPolicy_Behavior_ALLOW_READ_MODIFY_WRITE ConcurrentAppendHandlingPolicy_Behavior = "ALLOW_READ_MODIFY_WRITE"
661 ConcurrentAppendHandlingPolicy_Behavior_IO_ERROR ConcurrentAppendHandlingPolicy_Behavior = "IO_ERROR"
662 )
663
664 type ConfigurationRefinement struct {
665 // List of one or more filters. Multiple filters are combined with AND
666 Filter []*Filter `json:"filter,omitempty"`
667 // The configuration to be set
668 Statement ConfigurationStatement `json:"statement,omitempty"`
669 }
670
671 type ConfigurationStatement struct {
672 // Definition of the static (creation time) file layout
673 FileLayout FileLayoutSettings `json:"file_layout,omitempty"`
674 // Definition of the dynamic placement constraints
675 Placement PlacementSettings `json:"placement,omitempty"`
676 // Definition of the IO path behavior
677 IoPolicy FileIoSettings `json:"io_policy,omitempty"`
678 }
679
680 type ConfigureRuleRequest struct {
681 //Identifier of the rule to be configured
682 RuleIdentifier string `json:"rule_identifier,omitempty"`
683 // Enable or disable rule
684 SetAlertConfiguration AlertConfiguration `json:"set_alert_configuration,omitempty"`
685 //Identifier of the sensor to be used
686 SetSensorIdentifier string `json:"set_sensor_identifier,omitempty"`
687 // Optional parameters for the sensor, i.e. threshold etc.
688 SetSensorParameters []string `json:"set_sensor_parameters,omitempty"`
689 // List of one or more actions to be invoked
690 SetActions []*RuleAction `json:"set_actions,omitempty"`
691 retryPolicy
692 }
693
694 type ConfigureRuleResponse struct {
695 }
696
697 type ConsumingEntity struct {
698 //Type of the entity
699 Type ConsumingEntity_Type `json:"type,omitempty"`
700 //Identifier of the entity (ID/UUID/name)
701 Identifier string `json:"identifier,omitempty"`
702 // Acts as a scope for USER, GROUP and VOLUME type entities. Is ignored for other entity types.
703 TenantId string `json:"tenant_id,omitempty"`
704 // if set: - Only allow creating TENANT quotas or VOLUME quotas for that tenant. - If the entity is a volume, check if sum of new resource limits exceeds existing tenant limit.
705 DisableOversubscription bool `json:"disable_oversubscription,omitempty"`
706 // Only for entity type FAILURE_DOMAIN, is ignored for other entity types. Only for response, is ignored for request.
707 FailureDomainType FailureDomainType `json:"failure_domain_type,omitempty"`
708 // Only for user/group as additional filter
709 VolumeId string `json:"volume_id,omitempty"`
710 }
711
712 type ConsumingEntity_Type string
713
714 const (
715 ConsumingEntity_Type_DEVICE ConsumingEntity_Type = "DEVICE"
716 ConsumingEntity_Type_FAILURE_DOMAIN ConsumingEntity_Type = "FAILURE_DOMAIN"
717 ConsumingEntity_Type_GROUP ConsumingEntity_Type = "GROUP"
718 ConsumingEntity_Type_SYSTEM ConsumingEntity_Type = "SYSTEM"
719 ConsumingEntity_Type_TENANT ConsumingEntity_Type = "TENANT"
720 ConsumingEntity_Type_USER ConsumingEntity_Type = "USER"
721 ConsumingEntity_Type_VOLUME ConsumingEntity_Type = "VOLUME"
722 )
723
724 type CopyFilesSettings struct {
725 // Job configuration for each sub task of the batch.
726 Job []*CopyFilesSettings_Job `json:"job,omitempty"`
727 }
728
729 type CopyFilesSettings_Job struct {
730 // Defines from where files will be copied from.
731 Source CopyFilesSettings_Job_Location `json:"source,omitempty"`
732 // Defines to where files will be copied to.
733 Destination CopyFilesSettings_Job_Location `json:"destination,omitempty"`
734 // Filters are evaluated in a logical AND fashion.
735 Filter []*CopyFilesSettings_Job_Filter `json:"filter,omitempty"`
736 // Defines how the destination files are being created.
737 DestinationFileSettings CopyFilesSettings_Job_DestinationFileSettings `json:"destination_file_settings,omitempty"`
738 // Define what happens to source and/or destination files after finishing copying. Only relevant if not doing in-place recode, but copies.
739 CommitAction CopyFilesSettings_Job_CommitAction `json:"commit_action,omitempty"`
740 }
741
742 type CopyFilesSettings_Job_CommitAction string
743
744 const (
745 CopyFilesSettings_Job_CommitAction_DELETE_SOURCE_FILE CopyFilesSettings_Job_CommitAction = "DELETE_SOURCE_FILE"
746 )
747
748 type CopyFilesSettings_Job_DestinationFileSettings struct {
749 // Define behavior on file creation. Only relevant if not doing in-place recode, but copies.
750 CreateBehavior CopyFilesSettings_Job_DestinationFileSettings_CreateBehavior `json:"create_behavior,omitempty"`
751 // Define whether to keep existing redundancy or recode the file.
752 RedundancySetting CopyFilesSettings_Job_DestinationFileSettings_RedundancySetting `json:"redundancy_setting,omitempty"`
753 }
754
755 type CopyFilesSettings_Job_DestinationFileSettings_CreateBehavior string
756
757 const (
758 CopyFilesSettings_Job_DestinationFileSettings_CreateBehavior_FAIL_IF_FILE_EXISTS CopyFilesSettings_Job_DestinationFileSettings_CreateBehavior = "FAIL_IF_FILE_EXISTS"
759 CopyFilesSettings_Job_DestinationFileSettings_CreateBehavior_OVERWRITE_EXISTING_FILE CopyFilesSettings_Job_DestinationFileSettings_CreateBehavior = "OVERWRITE_EXISTING_FILE"
760 )
761
762 type CopyFilesSettings_Job_DestinationFileSettings_RedundancySetting string
763
764 const (
765 CopyFilesSettings_Job_DestinationFileSettings_RedundancySetting_APPLY_DESTINATION_POLICY_RULES CopyFilesSettings_Job_DestinationFileSettings_RedundancySetting = "APPLY_DESTINATION_POLICY_RULES"
766 )
767
768 type CopyFilesSettings_Job_Filter struct {
769 // Filter files by either current file size, atime or mtime.
770 Type CopyFilesSettings_Job_Filter_Type `json:"type,omitempty"`
771 // Compare current file size, atime or mtime of files using this operator.
772 Operator CopyFilesSettings_Job_Filter_Operator `json:"operator,omitempty"`
773 // The current file size, atime or mtime value to compare with.
774 Value int64 `json:"value,omitempty"`
775 }
776
777 type CopyFilesSettings_Job_Filter_Operator string
778
779 const (
780 CopyFilesSettings_Job_Filter_Operator_EQUALS CopyFilesSettings_Job_Filter_Operator = "EQUALS"
781 CopyFilesSettings_Job_Filter_Operator_LARGER_THAN CopyFilesSettings_Job_Filter_Operator = "LARGER_THAN"
782 CopyFilesSettings_Job_Filter_Operator_SMALLER_THAN CopyFilesSettings_Job_Filter_Operator = "SMALLER_THAN"
783 )
784
785 type CopyFilesSettings_Job_Filter_Type string
786
787 const (
788 CopyFilesSettings_Job_Filter_Type_CURRENT_FILE_SIZE CopyFilesSettings_Job_Filter_Type = "CURRENT_FILE_SIZE"
789 CopyFilesSettings_Job_Filter_Type_LAST_ACCESS_AGE_S CopyFilesSettings_Job_Filter_Type = "LAST_ACCESS_AGE_S"
790 CopyFilesSettings_Job_Filter_Type_LAST_MODIFICATION_AGE_S CopyFilesSettings_Job_Filter_Type = "LAST_MODIFICATION_AGE_S"
791 )
792
793 type CopyFilesSettings_Job_Location struct {
794 // Exactly one Location type is allowed to be set. (Currently, only Quobyte is supported.)
795 Quobyte CopyFilesSettings_Job_Location_Quobyte `json:"quobyte,omitempty"`
796 }
797
798 type CopyFilesSettings_Job_Location_Quobyte struct {
799 // Either a list of registries (<hostname/IP>:<port>), a single DNS SRV or QNS record. Can only be set for the destination; any Quobyte source must be the local cluster.
800 Registry []string `json:"registry,omitempty"`
801 // The volume UUID.
802 Volume string `json:"volume,omitempty"`
803 // Path to a subdirectory to restrict to. If recoding, that is if source and destination volume are the same, must not be set. Otherwise, must only be set for the destination. (Infinite recursive copies could occur otherwise.)
804 Path string `json:"path,omitempty"`
805 }
806
807 type CreateAccessKeyCredentialsRequest struct {
808 TenantId string `json:"tenant_id,omitempty"`
809 UserName string `json:"user_name,omitempty"`
810 ValidityDays int32 `json:"validity_days,omitempty"`
811 // e.g. S3 for S3 credentials
812 AccessKeyType AccessKeyType `json:"access_key_type,omitempty"`
813 retryPolicy
814 }
815
816 type CreateAccessKeyCredentialsResponse struct {
817 AccessKeyCredentials AccessKeyCredentials `json:"access_key_credentials,omitempty"`
818 }
819
820 type CreateCopyFilesTaskRequest struct {
821 // Textual representation of the settings.
822 CopyFilesSettingsProtoDump string `json:"copy_files_settings_proto_dump,omitempty"`
823 // Optional comment
824 Comment string `json:"comment,omitempty"`
825 retryPolicy
826 }
827
828 type CreateMasterKeystoreSlotRequest struct {
829 MasterKeystoreSlotPassword string `json:"master_keystore_slot_password,omitempty"`
830 retryPolicy
831 }
832
833 type CreateMasterKeystoreSlotResponse struct {
834 KeystoreSlotUuid string `json:"keystore_slot_uuid,omitempty"`
835 PasswordHashHex string `json:"password_hash_hex,omitempty"`
836 }
837
838 type CreateMirroredVolumeRequest struct {
839 LocalVolumeName string `json:"local_volume_name,omitempty"`
840 LocalConfigurationName string `json:"local_configuration_name,omitempty"`
841 LocalTenantId string `json:"local_tenant_id,omitempty"`
842 RemoteVolumeUuid string `json:"remote_volume_uuid,omitempty"`
843 RemoteRegistryTarget []string `json:"remote_registry_target,omitempty"`
844 retryPolicy
845 }
846
847 type CreateMirroredVolumeResponse struct {
848 //UUID of the created volume
849 VolumeUuid string `json:"volume_uuid,omitempty"`
850 }
851
852 type CreateNewUserKeystoreSlotRequest struct {
853 EncodedNewKeystoreSlotPasswordHash string `json:"encoded_new_keystore_slot_password_hash,omitempty"`
854 EncodedNewKeystoreSlotPasswordSalt string `json:"encoded_new_keystore_slot_password_salt,omitempty"`
855 retryPolicy
856 }
857
858 type CreateNewUserKeystoreSlotResponse struct {
859 KeystoreSlotUuid string `json:"keystore_slot_uuid,omitempty"`
860 }
861
862 type CreateNotificationRuleRequest struct {
863 Rule NotificationRule `json:"rule,omitempty"`
864 retryPolicy
865 }
866
867 type CreateNotificationRuleResponse struct {
868 Uuid string `json:"uuid,omitempty"`
869 }
870
871 type CreatePolicyRuleRequest struct {
872 // Must omit UUID; will be generated. ordering_number may be omitted. If omitted, set to next highest. Disallows default. Default policy rules can't be created.
873 PolicyRule PolicyRule `json:"policy_rule,omitempty"`
874 retryPolicy
875 }
876
877 type CreatePolicyRuleResponse struct {
878 // The UUID of the created policy rule.
879 PolicyRuleUuid string `json:"policy_rule_uuid,omitempty"`
880 }
881
882 type CreatePolicyRuleSetRequest struct {
883 // Must not create, update or delete default ones.
884 PolicyRule []*PolicyRule `json:"policy_rule,omitempty"`
885 Creator string `json:"creator,omitempty"`
886 Comment string `json:"comment,omitempty"`
887 retryPolicy
888 }
889
890 type CreatePolicyRuleSetResponse struct {
891 }
892
893 type CreateSnapshotRequest struct {
894 // Volume uuid
895 VolumeUuid string `json:"volume_uuid,omitempty"`
896 // Snapshot name
897 Name string `json:"name,omitempty"`
898 // Comment
899 Comment string `json:"comment,omitempty"`
900 // Create pinned snapshot (will not be deleted by cleanup)
901 Pinned bool `json:"pinned,omitempty"`
902 retryPolicy
903 }
904
905 type CreateSnapshotResponse struct {
906 // Snapshot version
907 Version int64 `json:"version,omitempty"`
908 }
909
910 type CreateTaskRequest struct {
911 //Type of the task
912 TaskType TaskType `json:"task_type,omitempty"`
913 // Settings for REBALANCE tasks
914 RebalanceSettings RebalanceSettings `json:"rebalance_settings,omitempty"`
915 // Settings for SCRUB tasks
916 ScrubSettings ScrubSettings `json:"scrub_settings,omitempty"`
917 // Settings for CATCH UP tasks
918 CatchUpSettings CatchUpSettings `json:"catch_up_settings,omitempty"`
919 // Settings for MAKE DEVICE tasks
920 MakeDeviceSettings MakeDeviceSettings `json:"make_device_settings,omitempty"`
921 // Settings for COPY_FILES tasks
922 CopyFilesSettings CopyFilesSettings `json:"copy_files_settings,omitempty"`
923 // List of devices the task should be restricted to
924 RestrictToDevices []int64 `json:"restrict_to_devices,omitempty"`
925 // List of volumes the task should be restricted to
926 RestrictToVolumes []string `json:"restrict_to_volumes,omitempty"`
927 // Optional comment
928 Comment string `json:"comment,omitempty"`
929 ObsoleteTargetUuid string `json:"OBSOLETE_target_uuid,omitempty"`
930 retryPolicy
931 }
932
933 type CreateTaskResponse struct {
934 // ID of the created task
935 TaskId string `json:"task_id,omitempty"`
936 }
937
938 type CreateUserRequest struct {
939 UserName string `json:"user_name,omitempty"`
940 Password string `json:"password,omitempty"`
941 Email string `json:"email,omitempty"`
942 AdminOfTenantId []string `json:"admin_of_tenant_id,omitempty"`
943 Role UserRole `json:"role,omitempty"`
944 MemberOfTenantId []string `json:"member_of_tenant_id,omitempty"`
945 MemberOfGroup []string `json:"member_of_group,omitempty"`
946 retryPolicy
947 }
948
949 type CreateUserResponse struct {
950 UserConfiguration UserConfiguration `json:"user_configuration,omitempty"`
951 }
952
953 type CreateVolumeRequest struct {
954 // Human readable name of the volume to be created.
955 Name string `json:"name,omitempty"`
956 // List of one or more metadata device uuids to store replicas of this volume. Optional, if absent replicas will be placed automatically.
957 ReplicaDeviceIds []int64 `json:"replica_device_ids,omitempty"`
958 // userid of the owner of the root directory (Linux uid, certificate CN).
959 RootUserId string `json:"root_user_id,omitempty"`
960 // group id of the owner of the root directory (Linux gid, certificate OU).
961 RootGroupId string `json:"root_group_id,omitempty"`
962 // Will be generated automatically.
963 ObsoleteVolumeUuid string `json:"OBSOLETE_volume_uuid,omitempty"`
964 ConfigurationName string `json:"configuration_name,omitempty"`
965 // POSIX access mode for the root directory of the newly created volume.
966 AccessMode int32 `json:"access_mode,omitempty"`
967 // Optional tenant
968 TenantId string `json:"tenant_id,omitempty"`
969 // DEPRECATED Legacy name for field 8
970 TenantDomain string `json:"tenant_domain,omitempty"`
971 // Labels to set for the volume prior to its creation. Name and value are sufficient.
972 Label []*Label `json:"label,omitempty"`
973 VolumeEncryptionProfile CreateVolumeRequest_VolumeEncryptionProfile `json:"volume_encryption_profile,omitempty"`
974 RootAcl AccessControlList `json:"root_acl,omitempty"`
975 retryPolicy
976 }
977
978 type CreateVolumeRequest_VolumeEncryptionProfile string
979
980 const (
981 CreateVolumeRequest_VolumeEncryptionProfile_NONE CreateVolumeRequest_VolumeEncryptionProfile = "NONE"
982 CreateVolumeRequest_VolumeEncryptionProfile_SYSTEM_AES_128 CreateVolumeRequest_VolumeEncryptionProfile = "SYSTEM_AES_128"
983 CreateVolumeRequest_VolumeEncryptionProfile_SYSTEM_AES_256 CreateVolumeRequest_VolumeEncryptionProfile = "SYSTEM_AES_256"
984 CreateVolumeRequest_VolumeEncryptionProfile_USER_AES_128 CreateVolumeRequest_VolumeEncryptionProfile = "USER_AES_128"
985 CreateVolumeRequest_VolumeEncryptionProfile_USER_AES_256 CreateVolumeRequest_VolumeEncryptionProfile = "USER_AES_256"
986 )
987
988 type CreateVolumeResponse struct {
989 //UUID of the created volume
990 VolumeUuid string `json:"volume_uuid,omitempty"`
991 }
992
993 type DataServiceCachePolicy struct {
994 NotifyOnClose bool `json:"notify_on_close,omitempty"`
995 }
996
997 type DecideCsrRequest struct {
998 // CSR identifier
999 CsrId int64 `json:"csr_id,omitempty"`
1000 // Override csr subject with effective subject
1001 EffectiveSubject string `json:"effective_subject,omitempty"`
1002 // Approve CSR
1003 Approve bool `json:"approve,omitempty"`
1004 retryPolicy
1005 }
1006
1007 type DecideCsrResponse struct {
1008 }
1009
1010 type DeferredClosePolicy struct {
1011 DeferCloseUpToS int64 `json:"defer_close_up_to_s,omitempty"`
1012 }
1013
1014 type DeferredWritebackPolicy struct {
1015 DeferWritebackAfterCloseUpToS int64 `json:"defer_writeback_after_close_up_to_s,omitempty"`
1016 }
1017
1018 type DelegationSubject struct {
1019 // Restrict to tenant id
1020 Tenant string `json:"tenant,omitempty"`
1021 // Restrict to volume
1022 Volume string `json:"volume,omitempty"`
1023 // Restrict to user
1024 User string `json:"user,omitempty"`
1025 // Restrict to groups
1026 Groups []string `json:"groups,omitempty"`
1027 // Allow only read access
1028 ReadOnly bool `json:"read_only,omitempty"`
1029 // Forbid root access
1030 ForbidRoot bool `json:"forbid_root,omitempty"`
1031 }
1032
1033 type DeleteAccessKeyCredentialsRequest struct {
1034 UserName string `json:"user_name,omitempty"`
1035 AccessKeyId string `json:"access_key_id,omitempty"`
1036 retryPolicy
1037 }
1038
1039 type DeleteAccessKeyCredentialsResponse struct {
1040 }
1041
1042 type DeleteCaRequest struct {
1043 // CA name
1044 Name string `json:"name,omitempty"`
1045 retryPolicy
1046 }
1047
1048 type DeleteCaResponse struct {
1049 }
1050
1051 type DeleteCertificateRequest struct {
1052 // X.509 certificate fingerprint
1053 Fingerprint string `json:"fingerprint,omitempty"`
1054 retryPolicy
1055 }
1056
1057 type DeleteCertificateResponse struct {
1058 }
1059
1060 type DeleteConfigurationRequest struct {
1061 //Type of the configuration to be deleted
1062 ConfigurationType ConfigurationType `json:"configuration_type,omitempty"`
1063 // Name of the configuration to be deleted
1064 ConfigurationName string `json:"configuration_name,omitempty"`
1065 retryPolicy
1066 }
1067
1068 type DeleteConfigurationResponse struct {
1069 }
1070
1071 type DeleteCsrRequest struct {
1072 CsrId int64 `json:"csr_id,omitempty"`
1073 retryPolicy
1074 }
1075
1076 type DeleteCsrResponse struct {
1077 }
1078
1079 type DeleteLabelsRequest struct {
1080 Label []*Label `json:"label,omitempty"`
1081 retryPolicy
1082 }
1083
1084 type DeleteLabelsResponse struct {
1085 }
1086
1087 type DeleteNotificationRuleRequest struct {
1088 Uuid string `json:"uuid,omitempty"`
1089 retryPolicy
1090 }
1091
1092 type DeleteNotificationRuleResponse struct {
1093 }
1094
1095 type DeletePolicyRulesRequest struct {
1096 PolicyRuleUuid []string `json:"policy_rule_uuid,omitempty"`
1097 retryPolicy
1098 }
1099
1100 type DeletePolicyRulesResponse struct {
1101 }
1102
1103 type DeleteSnapshotRequest struct {
1104 // Volume uuid
1105 VolumeUuid string `json:"volume_uuid,omitempty"`
1106 // Snapshot name
1107 Name string `json:"name,omitempty"`
1108 retryPolicy
1109 }
1110
1111 type DeleteSnapshotResponse struct {
1112 }
1113
1114 type DeleteTenantRequest struct {
1115 TenantId string `json:"tenant_id,omitempty"`
1116 retryPolicy
1117 }
1118
1119 type DeleteTenantResponse struct {
1120 }
1121
1122 type DeleteUserRequest struct {
1123 UserName string `json:"user_name,omitempty"`
1124 retryPolicy
1125 }
1126
1127 type DeleteUserResponse struct {
1128 }
1129
1130 type DeleteVolumeRequest struct {
1131 VolumeUuid string `json:"volume_uuid,omitempty"`
1132 retryPolicy
1133 }
1134
1135 type DeleteVolumeResponse struct {
1136 }
1137
1138 type DeregisterServiceRequest struct {
1139 ServiceUuid string `json:"service_uuid,omitempty"`
1140 retryPolicy
1141 }
1142
1143 type DeregisterServiceResponse struct {
1144 }
1145
1146 type Device struct {
1147 // UUID of the device (e.g.
1148 DeviceId int64 `json:"device_id,omitempty"`
1149 //Custom label (name) for the device
1150 DeviceLabel string `json:"device_label,omitempty"`
1151 // List of one or more contents of the device
1152 Content []*DeviceContent `json:"content,omitempty"`
1153 //Current status of the device
1154 DeviceStatus Device_Status `json:"device_status,omitempty"`
1155 //Name of the host where this device resides
1156 HostName string `json:"host_name,omitempty"`
1157 //Total size of the device
1158 TotalDiskSpaceBytes int64 `json:"total_disk_space_bytes,omitempty"`
1159 //Currently used bytes on the device
1160 UsedDiskSpaceBytes int64 `json:"used_disk_space_bytes,omitempty"`
1161 //List of optional device tags
1162 DeviceTags []string `json:"device_tags,omitempty"`
1163 // List of optional failure domains this device belongs to
1164 FailureDomainInfos []*FailureDomainInfo `json:"failure_domain_infos,omitempty"`
1165 //Current LED status of the device
1166 LedStatus Device_LEDStatus `json:"led_status,omitempty"`
1167 //Device does not contain any active data after a drain
1168 IsEmpty bool `json:"is_empty,omitempty"`
1169 //If true, file placement will move any replica under consideration away from this device.
1170 Draining bool `json:"draining,omitempty"`
1171 //Device serial number extracted via smartctl by qmkdev
1172 DeviceSerialNumber string `json:"device_serial_number,omitempty"`
1173 //Device model extracted via smartctl by qmkdev
1174 DeviceModel string `json:"device_model,omitempty"`
1175 //Disk type detected by the storage server
1176 DetectedDiskType DeviceHardwareType `json:"detected_disk_type,omitempty"`
1177 //Local file system path where the device is mounted
1178 CurrentMountPath string `json:"current_mount_path,omitempty"`
1179 //Number of referenced files, according to Metadata service
1180 FileCount int64 `json:"file_count,omitempty"`
1181 //Number of volume replicas
1182 VolumeDatabaseCount int64 `json:"volume_database_count,omitempty"`
1183 //Number of registry replicas (0 or 1)
1184 RegistryDatabaseCount int64 `json:"registry_database_count,omitempty"`
1185 //Number of IO errors
1186 IoErrorCount int64 `json:"io_error_count,omitempty"`
1187 //Number of CRC errors
1188 CrcErrorCount int64 `json:"crc_error_count,omitempty"`
1189 //Timestamp of last cleanup
1190 LastCleanupMs int64 `json:"last_cleanup_ms,omitempty"`
1191 //Current utilization in percent
1192 CurrentUtilization float64 `json:"current_utilization,omitempty"`
1193 //Number of reallocated sectors, extracted via smartctl (attribute #5)
1194 ReallocatedSectorCt int64 `json:"reallocated_sector_ct,omitempty"`
1195 //Number of unrecoverable errors, extracted via smartctl (attribute #187)
1196 ReportedUncorrect int64 `json:"reported_uncorrect,omitempty"`
1197 //Number of aborted operations due to timeout, extracted via smartctl (attribute #188)
1198 CommandTimeout int64 `json:"command_timeout,omitempty"`
1199 //Number of currently unstable sectors waiting to be remapped, extracted via smartctl (attribute #197)
1200 CurrentPendingSector int64 `json:"current_pending_sector,omitempty"`
1201 //Number of uncorrectable errors, extracted via smartctl (attribute #198)
1202 OfflineUncorrectable int64 `json:"offline_uncorrectable,omitempty"`
1203 // Total time the drive was running, extracted via smartctl (attribute #9)
1204 PowerOnHours int64 `json:"power_on_hours,omitempty"`
1205 // The total number of bytes written during the entire lifetime of the device, extracted via smartctl (attribute #241)
1206 TotalBytesWritten int64 `json:"total_bytes_written,omitempty"`
1207 // The total number of bytes read during the entire lifetime of the device, extracted via smartctl (attribute #242)
1208 TotalBytesRead int64 `json:"total_bytes_read,omitempty"`
1209 // The wear-out indicator of the device (attribute #177, #231, or #233)
1210 DeviceLifeLeft int64 `json:"device_life_left,omitempty"`
1211 // The crc error count, extracted via smartclt (attribute #199)
1212 SmartCrcErrorCount int64 `json:"smart_crc_error_count,omitempty"`
1213 // The device temperature in degree celsius (attribute #194)
1214 DeviceTemperatureInC int64 `json:"device_temperature_in_c,omitempty"`
1215 // normalized percentage (0 to 100%) of the remaining spare capacity available.
1216 AvailableSpare int64 `json:"available_spare,omitempty"`
1217 // vendor specific estimate of the percentage of NVM subsystem life used.
1218 PercentageUsed int64 `json:"percentage_used,omitempty"`
1219 // number of unsafe shutdowns (CC.SHN is not received prior to loss of power)
1220 UnsafeShutdowns int64 `json:"unsafe_shutdowns,omitempty"`
1221 // number of unrecovered data integrity error
1222 MediaErrors int64 `json:"media_errors,omitempty"`
1223 // bitwise indicator where each corresponds to a critical warning type; multiple bits may be set.
1224 CriticalWarningIndicator int64 `json:"critical_warning_indicator,omitempty"`
1225 // True if device is primary in the current replica set
1226 IsPrimary bool `json:"is_primary,omitempty"`
1227 //Timestamp of last fstrim
1228 LastFstrimMs int64 `json:"last_fstrim_ms,omitempty"`
1229 DeviceHealth Device_DeviceHealth `json:"device_health,omitempty"`
1230 // timestamp when this device was detected fully available by the health manager timestamp is used for device unavailable alerts and Regenerate Unavailable HM policy.
1231 LastDeviceAvailableMs int64 `json:"last_device_available_ms,omitempty"`
1232 FirmwareVersion string `json:"firmware_version,omitempty"`
1233 MountState Device_MountState `json:"mount_state,omitempty"`
1234 FilesystemCheckBeforeMount Device_FileSystemCheckBeforeMount `json:"filesystem_check_before_mount,omitempty"`
1235 }
1236
1237 type Device_FileSystemCheckBeforeMount string
1238
1239 const (
1240 Device_FileSystemCheckBeforeMount_DISABLED Device_FileSystemCheckBeforeMount = "DISABLED"
1241 Device_FileSystemCheckBeforeMount_ENABLED Device_FileSystemCheckBeforeMount = "ENABLED"
1242 )
1243
1244 type Device_LEDStatus string
1245
1246 const (
1247 Device_LEDStatus_FAIL Device_LEDStatus = "FAIL"
1248 Device_LEDStatus_LOCATE Device_LEDStatus = "LOCATE"
1249 Device_LEDStatus_OFF Device_LEDStatus = "OFF"
1250 )
1251
1252 type Device_MountState string
1253
1254 const (
1255 Device_MountState_MOUNTED Device_MountState = "MOUNTED"
1256 Device_MountState_UNMOUNTED Device_MountState = "UNMOUNTED"
1257 )
1258
1259 type Device_Status string
1260
1261 const (
1262 Device_Status_DECOMMISSIONED Device_Status = "DECOMMISSIONED"
1263 Device_Status_DRAIN Device_Status = "DRAIN"
1264 Device_Status_OFFLINE Device_Status = "OFFLINE"
1265 Device_Status_ONLINE Device_Status = "ONLINE"
1266 Device_Status_REGENERATE Device_Status = "REGENERATE"
1267 )
1268
1269 type Device_DeviceHealth struct {
1270 HealthStatus Device_DeviceHealth_DeviceHealthStatus `json:"health_status,omitempty"`
1271 ErrorReport string `json:"error_report,omitempty"`
1272 }
1273
1274 type Device_DeviceHealth_DeviceHealthStatus string
1275
1276 const (
1277 Device_DeviceHealth_DeviceHealthStatus_DEFECTIVE Device_DeviceHealth_DeviceHealthStatus = "DEFECTIVE"
1278 Device_DeviceHealth_DeviceHealthStatus_HEALTHY Device_DeviceHealth_DeviceHealthStatus = "HEALTHY"
1279 )
1280
1281 type DeviceContent struct {
1282 // Type of data this content has.
1283 ContentType DeviceContent_ContentType `json:"content_type,omitempty"`
1284 //The service that manages the content
1285 ServiceUuid string `json:"service_uuid,omitempty"`
1286 // Last time it was online
1287 LastSeenTimestampMs int64 `json:"last_seen_timestamp_ms,omitempty"`
1288 // Indicates whether device is currently available
1289 Available bool `json:"available,omitempty"`
1290 //If the device is not available (not currently registered with a service) this field contains the UUID of the service where the device was last registered.
1291 LastSeenServiceUuid string `json:"last_seen_service_uuid,omitempty"`
1292 // Name of the service where it was last registered
1293 LastSeenServiceName string `json:"last_seen_service_name,omitempty"`
1294 //Mountpoint that it was last registered at
1295 LastSeenMountPath string `json:"last_seen_mount_path,omitempty"`
1296 // Timestamp until which the device can be considered as up-to-date for this content (i.e., needs no catch-up). If not set, the device can be considered as completely up-to-date for this content.
1297 UpToDateUntilMs int64 `json:"up_to_date_until_ms,omitempty"`
1298 // if the disk is dead, the last_seen_service_uuid + last_seen_device_location are used to locate the device with ledctl
1299 LastSeenDeviceLocation string `json:"last_seen_device_location,omitempty"`
1300 }
1301
1302 type DeviceContent_ContentType string
1303
1304 const (
1305 DeviceContent_ContentType_DATA DeviceContent_ContentType = "DATA"
1306 DeviceContent_ContentType_METADATA DeviceContent_ContentType = "METADATA"
1307 DeviceContent_ContentType_REGISTRY DeviceContent_ContentType = "REGISTRY"
1308 )
1309
1310 type DeviceList struct {
1311 Devices []*Device `json:"devices,omitempty"`
1312 }
1313
1314 type DeviceNetworkEndpoint struct {
1315 // FQDN or IP address of the server.
1316 Hostname string `json:"hostname,omitempty"`
1317 // TCP/UDP port number.
1318 Port int32 `json:"port,omitempty"`
1319 // Type of device for this endpoint.
1320 DeviceType DeviceContent_ContentType `json:"device_type,omitempty"`
1321 }
1322
1323 type DisconnectMirroredVolumeRequest struct {
1324 // The volume UUID.
1325 VolumeUuid string `json:"volume_uuid,omitempty"`
1326 retryPolicy
1327 }
1328
1329 type DisconnectMirroredVolumeResponse struct {
1330 }
1331
1332 type DiskIoPolicy struct {
1333 Priority DiskIoPolicy_Priority `json:"priority,omitempty"`
1334 }
1335
1336 type DiskIoPolicy_Priority string
1337
1338 const (
1339 DiskIoPolicy_Priority_HIGH DiskIoPolicy_Priority = "HIGH"
1340 DiskIoPolicy_Priority_LOW DiskIoPolicy_Priority = "LOW"
1341 DiskIoPolicy_Priority_NORMAL DiskIoPolicy_Priority = "NORMAL"
1342 )
1343
1344 type DumpEffectivePolicyRulesRequest struct {
1345 PolicySubject FilterPolicyRulesRequest_PolicySubject `json:"policy_subject,omitempty"`
1346 // If true, returns only effective Policies. Otherwise, all effective PolicyRules are returned.
1347 PoliciesOnly bool `json:"policies_only,omitempty"`
1348 retryPolicy
1349 }
1350
1351 type DumpEffectivePolicyRulesResponse struct {
1352 // Has the format of Policies or repeated PolicyRule.
1353 ProtoDump string `json:"proto_dump,omitempty"`
1354 }
1355
1356 type DumpPolicyPresetsRequest struct {
1357 retryPolicy
1358 }
1359
1360 type DumpPolicyPresetsResponse struct {
1361 // Has the format of repeated PolicyPreset.
1362 ProtoDump string `json:"proto_dump,omitempty"`
1363 }
1364
1365 type EcParityPolicy struct {
1366 Mode EcParityPolicy_Mode `json:"mode,omitempty"`
1367 }
1368
1369 type EcParityPolicy_Mode string
1370
1371 const (
1372 EcParityPolicy_Mode_RELAXED EcParityPolicy_Mode = "RELAXED"
1373 EcParityPolicy_Mode_STRONG EcParityPolicy_Mode = "STRONG"
1374 )
1375
1376 type EcRedundancyDetailsPolicy struct {
1377 FileStructure EcRedundancyDetailsPolicy_FileStructure `json:"file_structure,omitempty"`
1378 DistributionSchema EcRedundancyDetailsPolicy_DistributionSchema `json:"distribution_schema,omitempty"`
1379 EcMetadataFormat EcRedundancyDetailsPolicy_EcMetadataFormat `json:"ec_metadata_format,omitempty"`
1380 }
1381
1382 type EcRedundancyDetailsPolicy_EcMetadataFormat string
1383
1384 const (
1385 EcRedundancyDetailsPolicy_EcMetadataFormat_EC_COMMIT_IDS EcRedundancyDetailsPolicy_EcMetadataFormat = "EC_COMMIT_IDS"
1386 )
1387
1388 type EcRedundancyDetailsPolicy_DistributionSchema struct {
1389 DataStripeCount int32 `json:"data_stripe_count,omitempty"`
1390 CodingStripeCount int32 `json:"coding_stripe_count,omitempty"`
1391 StripingMethod EcRedundancyDetailsPolicy_DistributionSchema_StripingMethod `json:"striping_method,omitempty"`
1392 }
1393
1394 type EcRedundancyDetailsPolicy_DistributionSchema_StripingMethod string
1395
1396 const (
1397 EcRedundancyDetailsPolicy_DistributionSchema_StripingMethod_BLOCK_LEVEL EcRedundancyDetailsPolicy_DistributionSchema_StripingMethod = "BLOCK_LEVEL"
1398 EcRedundancyDetailsPolicy_DistributionSchema_StripingMethod_OBJECT_LEVEL EcRedundancyDetailsPolicy_DistributionSchema_StripingMethod = "OBJECT_LEVEL"
1399 )
1400
1401 type EcRedundancyDetailsPolicy_FileStructure struct {
1402 BlockSizeBytes int32 `json:"block_size_bytes,omitempty"`
1403 ObjectSizeBytes int64 `json:"object_size_bytes,omitempty"`
1404 SegmentSizeBytes int64 `json:"segment_size_bytes,omitempty"`
1405 }
1406
1407 type EditablePolicyRuleSet struct {
1408 PolicyRule []*PolicyRule `json:"policy_rule,omitempty"`
1409 }
1410
1411 type EncodedEncryptedKey struct {
1412 // base64 encoded byte arrays
1413 EncodedInitializationVector string `json:"encoded_initialization_vector,omitempty"`
1414 EncodedKeyDerivationSalt string `json:"encoded_key_derivation_salt,omitempty"`
1415 EncodedEncryptedKey string `json:"encoded_encrypted_key,omitempty"`
1416 }
1417
1418 type EncodedKeyStoreSlot struct {
1419 EncodedSlotPasswordSalt string `json:"encoded_slot_password_salt,omitempty"`
1420 KeystoreSlotOwner KeystoreSlotOwner `json:"keystore_slot_owner,omitempty"`
1421 KeystoreSlotParams KeyStoreSlotParams `json:"keystore_slot_params,omitempty"`
1422 }
1423
1424 type EraseSnapshotRequest struct {
1425 // Volume uuid
1426 VolumeUuid string `json:"volume_uuid,omitempty"`
1427 // Snapshot name
1428 Name string `json:"name,omitempty"`
1429 retryPolicy
1430 }
1431
1432 type EraseSnapshotResponse struct {
1433 }
1434
1435 type EraseVolumeRequest struct {
1436 VolumeUuid string `json:"volume_uuid,omitempty"`
1437 Force bool `json:"force,omitempty"`
1438 retryPolicy
1439 }
1440
1441 type EraseVolumeResponse struct {
1442 }
1443
1444 type ExportCertificateRequest struct {
1445 // X.509 certificate fingerprint
1446 Fingerprint string `json:"fingerprint,omitempty"`
1447 retryPolicy
1448 }
1449
1450 type ExportCertificateResponse struct {
1451 // Certificate
1452 Certificate Certificate `json:"certificate,omitempty"`
1453 }
1454
1455 type ExportConfigurationRequest struct {
1456 // Requested configuration type (e.g."VOLUME_CONFIGURATION")
1457 ConfigurationType ConfigurationType `json:"configuration_type,omitempty"`
1458 // Name of the configuration
1459 ConfigurationName string `json:"configuration_name,omitempty"`
1460 retryPolicy
1461 }
1462
1463 type ExportConfigurationResponse struct {
1464 // String representation of the requested configuration
1465 ProtoDump string `json:"proto_dump,omitempty"`
1466 }
1467
1468 type ExportPolicyRulesRequest struct {
1469 // If set, export only this policy rule. Otherwise, export all.
1470 PolicyRuleUuid string `json:"policy_rule_uuid,omitempty"`
1471 // If true, also include default policy rules. Otherwise, they will not be exported.
1472 IncludeDefaultPolicyRules bool `json:"include_default_policy_rules,omitempty"`
1473 retryPolicy
1474 }
1475
1476 type ExportPolicyRulesResponse struct {
1477 // Has the format of EditablePolicyRuleSet.
1478 ProtoDump string `json:"proto_dump,omitempty"`
1479 }
1480
1481 type ExportVolumeRequest struct {
1482 //UUID of the volume to be made available
1483 VolumeUuid string `json:"volume_uuid,omitempty"`
1484 Protocol string `json:"protocol,omitempty"`
1485 //IP or network address to grant access to
1486 AddAllowIp string `json:"add_allow_ip,omitempty"`
1487 //IP or network address to revoke access for
1488 RemoveAllowIp string `json:"remove_allow_ip,omitempty"`
1489 // True if export should be read-only
1490 ReadOnly bool `json:"read_only,omitempty"`
1491 // True if volume should be made unavailable
1492 RemoveExport bool `json:"remove_export,omitempty"`
1493 retryPolicy
1494 }
1495
1496 type ExportVolumeResponse struct {
1497 // The IP address of the NFS endpoint
1498 NfsServerIp string `json:"nfs_server_ip,omitempty"`
1499 // The NFS export path
1500 NfsExportPath string `json:"nfs_export_path,omitempty"`
1501 }
1502
1503 type FailureDomain struct {
1504 //The name of the failure domain
1505 Name string `json:"name,omitempty"`
1506 DomainType FailureDomainType `json:"domain_type,omitempty"`
1507 //List of one or more IP addresses belonging to the failure domain
1508 Ip []string `json:"ip,omitempty"`
1509 //List of one or more IP networks belonging to the failure domain. Notation: <address>/<netmask length>
1510 Network []string `json:"network,omitempty"`
1511 }
1512
1513 type FailureDomainConfiguration struct {
1514 // List of one or more configured failure domains
1515 Domain []*FailureDomain `json:"domain,omitempty"`
1516 }
1517
1518 type FailureDomainInfo struct {
1519 //Name of the failure domain
1520 Name string `json:"name,omitempty"`
1521 //Type of the failure domain
1522 DomainType FailureDomainType `json:"domain_type,omitempty"`
1523 }
1524
1525 type FailureDomainPlacementPolicy struct {
1526 Type FailureDomainPlacementPolicy_Type `json:"type,omitempty"`
1527 }
1528
1529 type FailureDomainPlacementPolicy_Type string
1530
1531 const (
1532 FailureDomainPlacementPolicy_Type_MACHINE FailureDomainPlacementPolicy_Type = "MACHINE"
1533 FailureDomainPlacementPolicy_Type_OBSOLETE_CLUSTER FailureDomainPlacementPolicy_Type = "OBSOLETE_CLUSTER"
1534 FailureDomainPlacementPolicy_Type_OBSOLETE_METRO FailureDomainPlacementPolicy_Type = "OBSOLETE_METRO"
1535 FailureDomainPlacementPolicy_Type_OBSOLETE_POWER_1 FailureDomainPlacementPolicy_Type = "OBSOLETE_POWER_1"
1536 FailureDomainPlacementPolicy_Type_OBSOLETE_POWER_2 FailureDomainPlacementPolicy_Type = "OBSOLETE_POWER_2"
1537 FailureDomainPlacementPolicy_Type_RACK FailureDomainPlacementPolicy_Type = "RACK"
1538 FailureDomainPlacementPolicy_Type_ROOM FailureDomainPlacementPolicy_Type = "ROOM"
1539 )
1540
1541 type FileIoSettings struct {
1542 // Cache size in objects. Determines possible parallelism
1543 ObsoleteCacheSizeInObjects int64 `json:"OBSOLETE_cache_size_in_objects,omitempty"`
1544 // Enable asynchronous write-backs of dirty data
1545 ObsoleteEnableAsyncWritebacks bool `json:"OBSOLETE_enable_async_writebacks,omitempty"`
1546 // Write dirty data directly to disk
1547 ObsoleteAsyncWritebacksAreSync bool `json:"OBSOLETE_async_writebacks_are_sync,omitempty"`
1548 // Enable checksum verification on the client for read
1549 EnableClientChecksumVerification bool `json:"enable_client_checksum_verification,omitempty"`
1550 // Enable checksum computation on the client for write (DO NOT DISABLE)
1551 EnableClientChecksumComputation bool `json:"enable_client_checksum_computation,omitempty"`
1552 // O_SYNC semantics (default is to pass O_SYNC with write to client).
1553 SyncWrites ModeOverride `json:"sync_writes,omitempty"`
1554 // O_DIRECT semantics (default is no caching, direct write to OSD), DISABLE_ALWAYS will enable the client cache also for writes with O_DIRECT */
1555 DirectIo ModeOverride `json:"direct_io,omitempty"`
1556 // Pass-through errors to application instead of retrying forever.
1557 ObsoleteInteractiveMode bool `json:"OBSOLETE_interactive_mode,omitempty"`
1558 // implicitly lock file on open
1559 ObsoleteImplicitLocking bool `json:"OBSOLETE_implicit_locking,omitempty"`
1560 // Behavior in case of lost locks
1561 LostLockBehavior LostLockBehavior `json:"lost_lock_behavior,omitempty"`
1562 // Do not clean page cache on open. Deprecated since Quobyte 1.4
1563 ObsoleteKeepPageCache bool `json:"OBSOLETE_keep_page_cache,omitempty"`
1564 // Implicit locking mode
1565 ImplicitLockingMode ImplicitLockingMode `json:"implicit_locking_mode,omitempty"`
1566 // Skip page cache on data service for cache write backs
1567 EnableDirectWritebacks bool `json:"enable_direct_writebacks,omitempty"`
1568 // Notify data service on close. Leads to higher but more consistent close latencies
1569 NotifyDataserviceOnClose bool `json:"notify_dataservice_on_close,omitempty"`
1570 // Whether to clear fuse page cache on open or use heuristic based on mtime
1571 KeepPageCacheMode PageCacheMode `json:"keep_page_cache_mode,omitempty"`
1572 // Control quorum reads
1573 ObsoleteQuorumReadMode QuorumReadMode `json:"OBSOLETE_quorum_read_mode,omitempty"`
1574 // retry mode for client rpcs (replaces interactive_mode)
1575 RpcRetryMode RpcRetryMode `json:"rpc_retry_mode,omitempty"`
1576 // require some or all successful parity updates for ec files
1577 EcRequiredParities FileIoSettings_EcParityMode `json:"ec_required_parities,omitempty"`
1578 // Handle locks locally by the client
1579 LockScope FileIoSettings_LockScope `json:"lock_scope,omitempty"`
1580 // Priority of operations in queues of the IO path
1581 IoPriority FileIoSettings_IoPriority `json:"io_priority,omitempty"`
1582 // Maximum time a write back is deferred after close
1583 DeferWritebackAfterCloseUpToS int64 `json:"defer_writeback_after_close_up_to_s,omitempty"`
1584 // Handle concurrently appended files with a read-modify-write cycle
1585 HandleConcurrentAppends bool `json:"handle_concurrent_appends,omitempty"`
1586 }
1587
1588 type FileIoSettings_EcParityMode string
1589
1590 const (
1591 FileIoSettings_EcParityMode_RELAXED FileIoSettings_EcParityMode = "RELAXED"
1592 FileIoSettings_EcParityMode_STRONG FileIoSettings_EcParityMode = "STRONG"
1593 )
1594
1595 type FileIoSettings_IoPriority string
1596
1597 const (
1598 FileIoSettings_IoPriority_HIGH_PRIORITY FileIoSettings_IoPriority = "HIGH_PRIORITY"
1599 FileIoSettings_IoPriority_LOW_PRIORITY FileIoSettings_IoPriority = "LOW_PRIORITY"
1600 FileIoSettings_IoPriority_NORMAL_PRIORITY FileIoSettings_IoPriority = "NORMAL_PRIORITY"
1601 )
1602
1603 type FileIoSettings_LockScope string
1604
1605 const (
1606 FileIoSettings_LockScope_CLIENT FileIoSettings_LockScope = "CLIENT"
1607 FileIoSettings_LockScope_GLOBAL FileIoSettings_LockScope = "GLOBAL"
1608 )
1609
1610 type FileLayoutSettings struct {
1611 // Number of stripes
1612 StripeWidth int32 `json:"stripe_width,omitempty"`
1613 // Number of replicas. Each stripe has its own replica set.
1614 ReplicationFactor int32 `json:"replication_factor,omitempty"`
1615 // Size of an individual block. Multiple of 512 bytes. Default: 4k.
1616 BlockSizeBytes int32 `json:"block_size_bytes,omitempty"`
1617 // Size of an object, the unit of replication. Multiple of block size. Default: 8M.
1618 ObjectSizeBytes int64 `json:"object_size_bytes,omitempty"`
1619 //
1620 StripingMethod FileLayoutSettings_StripingMethod `json:"striping_method,omitempty"`
1621 // Size of a segment, the unit for splitting files across devices. Multiple of object size. Default: 10G.
1622 SegmentSizeBytes int64 `json:"segment_size_bytes,omitempty"`
1623 CrcMethod FileLayoutSettings_CrcMethod `json:"crc_method,omitempty"`
1624 CodingMethod FileLayoutSettings_CodingMethod `json:"coding_method,omitempty"`
1625 // Erasure Code N
1626 CodingDataBlocks int32 `json:"coding_data_blocks,omitempty"`
1627 // Erasure Code M
1628 CodingParityBlocks int32 `json:"coding_parity_blocks,omitempty"`
1629 PersistentFormat FileLayoutSettings_PersistentFormat `json:"persistent_format,omitempty"`
1630 RedundancyMethod FileLayoutSettings_RedundancyMethod `json:"redundancy_method,omitempty"`
1631 }
1632
1633 type FileLayoutSettings_CodingMethod string
1634
1635 const (
1636 FileLayoutSettings_CodingMethod_NONE FileLayoutSettings_CodingMethod = "NONE"
1637 FileLayoutSettings_CodingMethod_REED_SOLOMON FileLayoutSettings_CodingMethod = "REED_SOLOMON"
1638 )
1639
1640 type FileLayoutSettings_CrcMethod string
1641
1642 const (
1643 FileLayoutSettings_CrcMethod_CRC32C FileLayoutSettings_CrcMethod = "CRC32C"
1644 FileLayoutSettings_CrcMethod_CRC_32_ISCSI FileLayoutSettings_CrcMethod = "CRC_32_ISCSI"
1645 FileLayoutSettings_CrcMethod_NO_CRC FileLayoutSettings_CrcMethod = "NO_CRC"
1646 )
1647
1648 type FileLayoutSettings_PersistentFormat string
1649
1650 const (
1651 FileLayoutSettings_PersistentFormat_V1 FileLayoutSettings_PersistentFormat = "V1"
1652 FileLayoutSettings_PersistentFormat_V2 FileLayoutSettings_PersistentFormat = "V2"
1653 FileLayoutSettings_PersistentFormat_V3 FileLayoutSettings_PersistentFormat = "V3"
1654 )
1655
1656 type FileLayoutSettings_RedundancyMethod string
1657
1658 const (
1659 FileLayoutSettings_RedundancyMethod_AUTO_WRITE_SEQUENTIAL FileLayoutSettings_RedundancyMethod = "AUTO_WRITE_SEQUENTIAL"
1660 FileLayoutSettings_RedundancyMethod_CUSTOM FileLayoutSettings_RedundancyMethod = "CUSTOM"
1661 )
1662
1663 type FileLayoutSettings_StripingMethod string
1664
1665 const (
1666 FileLayoutSettings_StripingMethod_BLOCK_LEVEL FileLayoutSettings_StripingMethod = "BLOCK_LEVEL"
1667 FileLayoutSettings_StripingMethod_OBJECT_LEVEL FileLayoutSettings_StripingMethod = "OBJECT_LEVEL"
1668 )
1669
1670 type FileLockPolicy struct {
1671 LockScope FileLockPolicy_LockScope `json:"lock_scope,omitempty"`
1672 LostLockBehavior FileLockPolicy_LostLockBehavior `json:"lost_lock_behavior,omitempty"`
1673 ImplicitLockingMode FileLockPolicy_ImplicitLockingMode `json:"implicit_locking_mode,omitempty"`
1674 }
1675
1676 type FileLockPolicy_ImplicitLockingMode string
1677
1678 const (
1679 FileLockPolicy_ImplicitLockingMode_FILE_BLOCKING FileLockPolicy_ImplicitLockingMode = "FILE_BLOCKING"
1680 FileLockPolicy_ImplicitLockingMode_FILE_NON_BLOCKING FileLockPolicy_ImplicitLockingMode = "FILE_NON_BLOCKING"
1681 FileLockPolicy_ImplicitLockingMode_IO_BLOCKING FileLockPolicy_ImplicitLockingMode = "IO_BLOCKING"
1682 FileLockPolicy_ImplicitLockingMode_IO_NON_BLOCKING FileLockPolicy_ImplicitLockingMode = "IO_NON_BLOCKING"
1683 FileLockPolicy_ImplicitLockingMode_NO_LOCKING FileLockPolicy_ImplicitLockingMode = "NO_LOCKING"
1684 )
1685
1686 type FileLockPolicy_LockScope string
1687
1688 const (
1689 FileLockPolicy_LockScope_CLIENT FileLockPolicy_LockScope = "CLIENT"
1690 FileLockPolicy_LockScope_GLOBAL FileLockPolicy_LockScope = "GLOBAL"
1691 )
1692
1693 type FileLockPolicy_LostLockBehavior string
1694
1695 const (
1696 FileLockPolicy_LostLockBehavior_LOST_LOCK_BLOCK_IO FileLockPolicy_LostLockBehavior = "LOST_LOCK_BLOCK_IO"
1697 FileLockPolicy_LostLockBehavior_LOST_LOCK_IO_ERROR FileLockPolicy_LostLockBehavior = "LOST_LOCK_IO_ERROR"
1698 FileLockPolicy_LostLockBehavior_LOST_LOCK_KILL_APPLICATION FileLockPolicy_LostLockBehavior = "LOST_LOCK_KILL_APPLICATION"
1699 )
1700
1701 type FileMetadataCacheConfiguration struct {
1702 // TTL in milliseconds for cached metadata
1703 CacheTtlMs int32 `json:"cache_ttl_ms,omitempty"`
1704 // TTL in milliseconds for negative cache of metadata. Set to 0 to disable
1705 NegativeCacheTtlMs int32 `json:"negative_cache_ttl_ms,omitempty"`
1706 // Enable some metadata to be written back asynchronously
1707 EnableWriteBackCache bool `json:"enable_write_back_cache,omitempty"`
1708 }
1709
1710 type FileMetadataCachePolicy struct {
1711 CacheTtlMs int32 `json:"cache_ttl_ms,omitempty"`
1712 NegativeCacheTtlMs int32 `json:"negative_cache_ttl_ms,omitempty"`
1713 EnableWriteBackCache bool `json:"enable_write_back_cache,omitempty"`
1714 }
1715
1716 type FileMetadataDump struct {
1717 // resolved file path
1718 File string `json:"file,omitempty"`
1719 // resolved file id
1720 FileId int64 `json:"file_id,omitempty"`
1721 VolumeUuid string `json:"volume_uuid,omitempty"`
1722 FileMetadata string `json:"file_metadata,omitempty"`
1723 DynamicFileMetadata string `json:"dynamic_file_metadata,omitempty"`
1724 }
1725
1726 type FilePrefetchPolicy struct {
1727 FileNameRegex string `json:"file_name_regex,omitempty"`
1728 RegexMatchIndex int32 `json:"regex_match_index,omitempty"`
1729 }
1730
1731 type FileRecodePolicy struct {
1732 RecodeFileIfNecessary bool `json:"recode_file_if_necessary,omitempty"`
1733 }
1734
1735 type FileRedundancyPolicy struct {
1736 Redundancy FileRedundancyPolicy_Redundancy `json:"redundancy,omitempty"`
1737 }
1738
1739 type FileRedundancyPolicy_Redundancy string
1740
1741 const (
1742 FileRedundancyPolicy_Redundancy_AUTO_WRITE_SEQUENTIAL FileRedundancyPolicy_Redundancy = "AUTO_WRITE_SEQUENTIAL"
1743 FileRedundancyPolicy_Redundancy_EC FileRedundancyPolicy_Redundancy = "EC"
1744 FileRedundancyPolicy_Redundancy_REPLICATION FileRedundancyPolicy_Redundancy = "REPLICATION"
1745 )
1746
1747 type FileRetentionPolicy struct {
1748 // Retention properties
1749 Property []*FileRetentionPolicy_RetentionProperty `json:"property,omitempty"`
1750 // If empty, quobyte.retention_timestamp must be set Retention is only effective when a timestamp is set.
1751 DefaultRetentionDurationS int64 `json:"default_retention_duration_s,omitempty"`
1752 }
1753
1754 type FileRetentionPolicy_RetentionProperty string
1755
1756 const (
1757 FileRetentionPolicy_RetentionProperty_DELETE_AFTER FileRetentionPolicy_RetentionProperty = "DELETE_AFTER"
1758 FileRetentionPolicy_RetentionProperty_IMMUTABLE FileRetentionPolicy_RetentionProperty = "IMMUTABLE"
1759 FileRetentionPolicy_RetentionProperty_MAY_EXTEND_RETENTION FileRetentionPolicy_RetentionProperty = "MAY_EXTEND_RETENTION"
1760 FileRetentionPolicy_RetentionProperty_MAY_SHORTEN_RETENTION FileRetentionPolicy_RetentionProperty = "MAY_SHORTEN_RETENTION"
1761 FileRetentionPolicy_RetentionProperty_RETAIN_UNTIL FileRetentionPolicy_RetentionProperty = "RETAIN_UNTIL"
1762 )
1763
1764 type FileScope struct {
1765 FilterType FileScope_FilterType `json:"filter_type,omitempty"`
1766 Operator FileScope_Operator `json:"operator,omitempty"`
1767 // Exactly one of the following fields must be set, depending on FilterType.
1768 TextValue string `json:"text_value,omitempty"`
1769 NumericValue int64 `json:"numeric_value,omitempty"`
1770 Xattr XAttr `json:"xattr,omitempty"`
1771 }
1772
1773 type FileScope_FilterType string
1774
1775 const (
1776 FileScope_FilterType_CURRENT_FILE_SIZE FileScope_FilterType = "CURRENT_FILE_SIZE"
1777 FileScope_FilterType_DIRECTORY_XATTR FileScope_FilterType = "DIRECTORY_XATTR"
1778 FileScope_FilterType_EXPECTED_SIZE_OF_NEW_FILE FileScope_FilterType = "EXPECTED_SIZE_OF_NEW_FILE"
1779 FileScope_FilterType_FILE_XATTR FileScope_FilterType = "FILE_XATTR"
1780 FileScope_FilterType_LAST_ACCESS_AGE_S FileScope_FilterType = "LAST_ACCESS_AGE_S"
1781 FileScope_FilterType_LAST_MODIFICATION_AGE_S FileScope_FilterType = "LAST_MODIFICATION_AGE_S"
1782 FileScope_FilterType_NAME FileScope_FilterType = "NAME"
1783 FileScope_FilterType_OWNER_USER_NAME FileScope_FilterType = "OWNER_USER_NAME"
1784 FileScope_FilterType_RECURSIVE_DIRECTORY_XATTR FileScope_FilterType = "RECURSIVE_DIRECTORY_XATTR"
1785 )
1786
1787 type FileScope_Operator string
1788
1789 const (
1790 FileScope_Operator_CONTAINS FileScope_Operator = "CONTAINS"
1791 FileScope_Operator_ENDS_WITH FileScope_Operator = "ENDS_WITH"
1792 FileScope_Operator_EQUALS FileScope_Operator = "EQUALS"
1793 FileScope_Operator_EXTENSION_MATCHES FileScope_Operator = "EXTENSION_MATCHES"
1794 FileScope_Operator_LARGER_THAN FileScope_Operator = "LARGER_THAN"
1795 FileScope_Operator_REGEX_MATCHES FileScope_Operator = "REGEX_MATCHES"
1796 FileScope_Operator_SMALLER_THAN FileScope_Operator = "SMALLER_THAN"
1797 FileScope_Operator_STARTS_WITH FileScope_Operator = "STARTS_WITH"
1798 )
1799
1800 type Filter struct {
1801 // Supported properties: path, filename, size, last_access, username
1802 Property FilterFileProperty `json:"property,omitempty"`
1803 // Supported operators: matches, smaller, larger, older
1804 Operator FilterOperator `json:"operator,omitempty"`
1805 // Supported values (depending on property and operator): regex, times, byte sizes
1806 Value string `json:"value,omitempty"`
1807 }
1808
1809 type FilterPolicyRulesRequest struct {
1810 // If not set, simply returns all policy rules. If set, returns only effective policy rules with their effective policies.
1811 PolicySubject FilterPolicyRulesRequest_PolicySubject `json:"policy_subject,omitempty"`
1812 // If not set, returns latest version.
1813 PolicyRuleSetVersion int64 `json:"policy_rule_set_version,omitempty"`
1814 retryPolicy
1815 }
1816
1817 type FilterPolicyRulesRequest_PolicySubject struct {
1818 // Set the following subject(s) to match a certain one: Global: global. Tenant: tenant. Volume: volume. File: volume and file. Client: volume, file and client info.
1819 Global bool `json:"global,omitempty"`
1820 Tenant FilterPolicyRulesRequest_PolicySubject_TenantPolicySubject `json:"tenant,omitempty"`
1821 Volume FilterPolicyRulesRequest_PolicySubject_VolumePolicySubject `json:"volume,omitempty"`
1822 File FilterPolicyRulesRequest_PolicySubject_FilePolicySubject `json:"file,omitempty"`
1823 Client GetPolicyRulesRequest_PolicySubject_ClientPolicySubject `json:"client,omitempty"`
1824 }
1825
1826 type FilterPolicyRulesRequest_PolicySubject_FilePolicySubject struct {
1827 Path string `json:"path,omitempty"`
1828 }
1829
1830 type FilterPolicyRulesRequest_PolicySubject_TenantPolicySubject struct {
1831 Uuid string `json:"uuid,omitempty"`
1832 }
1833
1834 type FilterPolicyRulesRequest_PolicySubject_VolumePolicySubject struct {
1835 Uuid string `json:"uuid,omitempty"`
1836 }
1837
1838 type FilterPolicyRulesResponse struct {
1839 PolicyRule []*PolicyRule `json:"policy_rule,omitempty"`
1840 }
1841
1842 type FiringRule struct {
1843 //Identifier for the rule
1844 RuleIdentifier string `json:"rule_identifier,omitempty"`
1845 //Severity level
1846 Severity FiringRule_RuleSeverity `json:"severity,omitempty"`
1847 //Current status of the alert
1848 AlertState AlertState `json:"alert_state,omitempty"`
1849 //ID of the affected device
1850 DeviceId string `json:"device_id,omitempty"`
1851 //UUID of the affected service
1852 ServiceUuid string `json:"service_uuid,omitempty"`
1853 //UUID of the affected volume
1854 VolumeUuid string `json:"volume_uuid,omitempty"`
1855 //UUID of the affected client
1856 ClientUuid string `json:"client_uuid,omitempty"`
1857 //ID of the affected tenant
1858 TenantId string `json:"tenant_id,omitempty"`
1859 // affected user with his tenant-id (e.g 'admin@c858ffe2-4fa1-4c78-adbf-54c211734883')
1860 UserAtTenant string `json:"user_at_tenant,omitempty"`
1861 // affected group with his tenant-id (e.g 'users@c858ffe2-4fa1-4c78-adbf-54c211734883')
1862 GroupAtTenant string `json:"group_at_tenant,omitempty"`
1863 Db string `json:"db,omitempty"`
1864 Config string `json:"config,omitempty"`
1865 Hostname string `json:"hostname,omitempty"`
1866 // Description of the alert
1867 UserMessage string `json:"user_message,omitempty"`
1868 // Description of actions to be taken for a fix
1869 UserSuggestedAction string `json:"user_suggested_action,omitempty"`
1870 AlertIdentifier string `json:"alert_identifier,omitempty"`
1871 FiringSinceTimestampS int64 `json:"firing_since_timestamp_s,omitempty"`
1872 SilencedUntilTimestampS int64 `json:"silenced_until_timestamp_s,omitempty"`
1873 }
1874
1875 type FiringRule_RuleSeverity string
1876
1877 const (
1878 FiringRule_RuleSeverity_ERROR FiringRule_RuleSeverity = "ERROR"
1879 FiringRule_RuleSeverity_INFO FiringRule_RuleSeverity = "INFO"
1880 FiringRule_RuleSeverity_WARNING FiringRule_RuleSeverity = "WARNING"
1881 )
1882
1883 type FsyncBehaviorPolicy struct {
1884 Mode FsyncBehaviorPolicy_Mode `json:"mode,omitempty"`
1885 }
1886
1887 type FsyncBehaviorPolicy_Mode string
1888
1889 const (
1890 FsyncBehaviorPolicy_Mode_ALWAYS_FLUSH_METADATA FsyncBehaviorPolicy_Mode = "ALWAYS_FLUSH_METADATA"
1891 FsyncBehaviorPolicy_Mode_FLUSH_METADATA_AS_REQUESTED FsyncBehaviorPolicy_Mode = "FLUSH_METADATA_AS_REQUESTED"
1892 FsyncBehaviorPolicy_Mode_NEVER_FLUSH_METADATA FsyncBehaviorPolicy_Mode = "NEVER_FLUSH_METADATA"
1893 )
1894
1895 type GenerateAsyncSupportDumpRequest struct {
1896 SupportTicketId int32 `json:"support_ticket_id,omitempty"`
1897 retryPolicy
1898 }
1899
1900 type GenerateAsyncSupportDumpResponse struct {
1901 IsScheduled bool `json:"is_scheduled,omitempty"`
1902 }
1903
1904 type GetAccountingRequest struct {
1905 Entity []*ConsumingEntity `json:"entity,omitempty"`
1906 retryPolicy
1907 }
1908
1909 type GetAccountingResponse struct {
1910 EntityUsage []*GetAccountingResponse_EntityUsage `json:"entity_usage,omitempty"`
1911 }
1912
1913 type GetAccountingResponse_EntityUsage struct {
1914 Consumer ConsumingEntity `json:"consumer,omitempty"`
1915 Usage []*Resource `json:"usage,omitempty"`
1916 }
1917
1918 type GetAddKeySlotDataRequest struct {
1919 NewKeystoreSlotUuid string `json:"new_keystore_slot_uuid,omitempty"`
1920 ExistingKeystoreSlotUuid string `json:"existing_keystore_slot_uuid,omitempty"`
1921 VolumeUuid string `json:"volume_uuid,omitempty"`
1922 retryPolicy
1923 }
1924
1925 type GetAddKeySlotDataResponse struct {
1926 NewKeystoreSlotData EncodedKeyStoreSlot `json:"new_keystore_slot_data,omitempty"`
1927 ExistingKeystoreSlotData EncodedKeyStoreSlot `json:"existing_keystore_slot_data,omitempty"`
1928 KeyVersion int32 `json:"key_version,omitempty"`
1929 }
1930
1931 type GetAnalyzeReportsRequest struct {
1932 VolumeUuid string `json:"volume_uuid,omitempty"`
1933 TaskId string `json:"task_id,omitempty"`
1934 Format GetAnalyzeReportsRequest_Format `json:"format,omitempty"`
1935 retryPolicy
1936 }
1937
1938 type GetAnalyzeReportsRequest_Format string
1939
1940 const (
1941 GetAnalyzeReportsRequest_Format_PLAIN_UTF8 GetAnalyzeReportsRequest_Format = "PLAIN_UTF8"
1942 )
1943
1944 type GetAnalyzeReportsResponse struct {
1945 ReportBinaryData string `json:"report_binary_data,omitempty"`
1946 // only set if a string encode-able format was requested
1947 ReportString string `json:"report_string,omitempty"`
1948 }
1949
1950 type GetAuditLogRequest struct {
1951 // Filter by subject type
1952 OnlySubjectType AuditEvent_SubjectType `json:"only_subject_type,omitempty"`
1953 // Filter by subject ID
1954 OnlySubjectId string `json:"only_subject_id,omitempty"`
1955 // AuditDatabase key at which to start the lookup.
1956 StartAtKey GetAuditLogRequest_AuditDatabaseKey `json:"start_at_key,omitempty"`
1957 // Number of log entries to return (no limit if 0)
1958 LogsLimit int32 `json:"logs_limit,omitempty"`
1959 // Database lookup direction
1960 OldestLogFirst bool `json:"oldest_log_first,omitempty"`
1961 retryPolicy
1962 }
1963
1964 type GetAuditLogRequest_AuditDatabaseKey struct {
1965 SubjectType AuditEvent_SubjectType `json:"subject_type,omitempty"`
1966 SubjectId string `json:"subject_id,omitempty"`
1967 TimestampMs int64 `json:"timestamp_ms,omitempty"`
1968 }
1969
1970 type GetAuditLogResponse struct {
1971 // List of audit events matching the given filters
1972 AuditEvent []*AuditEvent `json:"audit_event,omitempty"`
1973 }
1974
1975 type GetCertificateSubjectRequest struct {
1976 // X.509 certificate fingerprint
1977 Fingerprint string `json:"fingerprint,omitempty"`
1978 retryPolicy
1979 }
1980
1981 type GetCertificateSubjectResponse struct {
1982 // Certificate subject description
1983 Subject CertificateSubject `json:"subject,omitempty"`
1984 }
1985
1986 type GetClientListRequest struct {
1987 // Only list clients in this domain
1988 TenantDomain string `json:"tenant_domain,omitempty"`
1989 retryPolicy
1990 }
1991
1992 type GetClientListResponse struct {
1993 // List of currently registered clients
1994 Client []*Client `json:"client,omitempty"`
1995 }
1996
1997 type GetConfigurationRequest struct {
1998 // Type of the requested configuration
1999 ConfigurationType ConfigurationType `json:"configuration_type,omitempty"`
2000 // Name of the requested configuration (leave empty for a full list)
2001 ConfigurationName string `json:"configuration_name,omitempty"`
2002 retryPolicy
2003 }
2004
2005 type GetConfigurationResponse struct {
2006 VolumeConfiguration []*VolumeConfiguration `json:"volume_configuration,omitempty"`
2007 FailureDomainConfiguration FailureDomainConfiguration `json:"failure_domain_configuration,omitempty"`
2008 UserConfiguration []*UserConfiguration `json:"user_configuration,omitempty"`
2009 SystemConfiguration SystemConfiguration `json:"system_configuration,omitempty"`
2010 QuotaPoolConfiguration []*QuotaPoolConfiguration `json:"quota_pool_configuration,omitempty"`
2011 RuleConfiguration []*RuleConfiguration `json:"rule_configuration,omitempty"`
2012 //Obsolete since release 1.4. Use getTenant() instead.
2013 TenantConfiguration []*TenantDomainConfiguration `json:"tenant_configuration,omitempty"`
2014 }
2015
2016 type GetDefaultKeyStoreSlotParamsRequest struct {
2017 retryPolicy
2018 }
2019
2020 type GetDefaultKeyStoreSlotParamsResponse struct {
2021 DefaultKeystoreSlotParams KeyStoreSlotParams `json:"default_keystore_slot_params,omitempty"`
2022 }
2023
2024 type GetDeviceIdsRequest struct {
2025 ServiceUuid string `json:"service_uuid,omitempty"`
2026 retryPolicy
2027 }
2028
2029 type GetDeviceIdsResponse struct {
2030 DeviceIds []int64 `json:"device_ids,omitempty"`
2031 }
2032
2033 type GetDeviceListRequest struct {
2034 // Specify device id to retrieve data for specific devices. Retrieve all if not set.
2035 DeviceId []int64 `json:"device_id,omitempty"`
2036 // Specify types to retrieve only devices with matching type.
2037 DeviceType []*DeviceContent_ContentType `json:"device_type,omitempty"`
2038 retryPolicy
2039 }
2040
2041 type GetDeviceListResponse struct {
2042 DeviceList DeviceList `json:"device_list,omitempty"`
2043 }
2044
2045 type GetDeviceNetworkEndpointsRequest struct {
2046 // Specify device id to retrieve data for specific devices. Retrieve all if not set.
2047 DeviceId int64 `json:"device_id,omitempty"`
2048 retryPolicy
2049 }
2050
2051 type GetDeviceNetworkEndpointsResponse struct {
2052 Endpoints []*DeviceNetworkEndpoint `json:"endpoints,omitempty"`
2053 }
2054
2055 type GetDeviceTagsRequest struct {
2056 retryPolicy
2057 }
2058
2059 type GetDeviceTagsResponse struct {
2060 Tag []string `json:"tag,omitempty"`
2061 }
2062
2063 type GetEffectiveVolumeConfigurationRequest struct {
2064 //volume_uuid and configuration_name are mutually exclusive.
2065 VolumeUuid string `json:"volume_uuid,omitempty"`
2066 ConfigurationName string `json:"configuration_name,omitempty"`
2067 retryPolicy
2068 }
2069
2070 type GetEffectiveVolumeConfigurationResponse struct {
2071 Configuration VolumeConfiguration `json:"configuration,omitempty"`
2072 }
2073
2074 type GetEncryptStatusRequest struct {
2075 retryPolicy
2076 }
2077
2078 type GetEncryptStatusResponse struct {
2079 Status string `json:"status,omitempty"`
2080 }
2081
2082 type GetEncryptedVolumeKeyRequest struct {
2083 // to retrieve data of a slot, the slot's password hash needs to be known on the client side.
2084 KeystoreSlotUuid string `json:"keystore_slot_uuid,omitempty"`
2085 EncodedSlotPasswordHash string `json:"encoded_slot_password_hash,omitempty"`
2086 VolumeUuid string `json:"volume_uuid,omitempty"`
2087 KeyVersion int32 `json:"key_version,omitempty"`
2088 retryPolicy
2089 }
2090
2091 type GetEncryptedVolumeKeyResponse struct {
2092 EncryptedVolumeKey EncodedEncryptedKey `json:"encrypted_volume_key,omitempty"`
2093 }
2094
2095 type GetFileMetadataDumpRequest struct {
2096 VolumeUuid string `json:"volume_uuid,omitempty"`
2097 // as an alternative to file_id (to be resolved to file_id internally)
2098 File string `json:"file,omitempty"`
2099 FileId int64 `json:"file_id,omitempty"`
2100 // for segment block dumps from data services
2101 IncludeSegmentDumps bool `json:"include_segment_dumps,omitempty"`
2102 // optional
2103 SegmentStartOffset int64 `json:"segment_start_offset,omitempty"`
2104 // optional
2105 StripeNumber int32 `json:"stripe_number,omitempty"`
2106 retryPolicy
2107 }
2108
2109 type GetFileMetadataDumpResponse struct {
2110 FileMetadataDump FileMetadataDump `json:"file_metadata_dump,omitempty"`
2111 StripeBlockDump []string `json:"stripe_block_dump,omitempty"`
2112 // start offset where stopped due to size limit
2113 LastSegmentStartOffset int64 `json:"last_segment_start_offset,omitempty"`
2114 // stripe number where stopped due to size limit
2115 LastStripeNumber int32 `json:"last_stripe_number,omitempty"`
2116 }
2117
2118 type GetFiringRulesRequest struct {
2119 Filteroutsilenced bool `json:"filterOutSilenced,omitempty"`
2120 retryPolicy
2121 }
2122
2123 type GetFiringRulesResponse struct {
2124 // List of currently firing alerts
2125 Rule []*FiringRule `json:"rule,omitempty"`
2126 }
2127
2128 type GetHealthManagerStatusRequest struct {
2129 retryPolicy
2130 }
2131
2132 type GetHealthManagerStatusResponse struct {
2133 HealthManagerStatus HealthManagerStatus `json:"health_manager_status,omitempty"`
2134 }
2135
2136 type GetInformationRequest struct {
2137 retryPolicy
2138 }
2139
2140 type GetInformationResponse struct {
2141 }
2142
2143 type GetKeyStoreSlotWithoutHashRequest struct {
2144 KeystoreSlotUuid string `json:"keystore_slot_uuid,omitempty"`
2145 retryPolicy
2146 }
2147
2148 type GetKeyStoreSlotWithoutHashResponse struct {
2149 KeystoreSlot EncodedKeyStoreSlot `json:"keystore_slot,omitempty"`
2150 }
2151
2152 type GetLabelsRequest struct {
2153 Namespace Label_Namespace `json:"namespace,omitempty"`
2154 FilterEntityType Label_EntityType `json:"filter_entity_type,omitempty"`
2155 FilterEntityId string `json:"filter_entity_id,omitempty"`
2156 LabelName string `json:"label_name,omitempty"`
2157 retryPolicy
2158 }
2159
2160 type GetLabelsResponse struct {
2161 Label []*Label `json:"label,omitempty"`
2162 }
2163
2164 type GetLatestEventRequest struct {
2165 SubjectType AuditEvent_SubjectType `json:"subject_type,omitempty"`
2166 SubjectId string `json:"subject_id,omitempty"`
2167 retryPolicy
2168 }
2169
2170 type GetLatestEventResponse struct {
2171 LatestEvent AuditEvent `json:"latest_event,omitempty"`
2172 }
2173
2174 type GetLicenseRequest struct {
2175 retryPolicy
2176 }
2177
2178 type GetLicenseResponse struct {
2179 CustomerId string `json:"customer_id,omitempty"`
2180 CustomerName string `json:"customer_name,omitempty"`
2181 ProductVersion string `json:"product_version,omitempty"`
2182 ExpiryDateTimestampS int64 `json:"expiry_date_timestamp_s,omitempty"`
2183 LimitedToTotalLogicalBytes int64 `json:"limited_to_total_logical_bytes,omitempty"`
2184 CurrentUsageTotalLogicalBytes int64 `json:"current_usage_total_logical_bytes,omitempty"`
2185 LimitedToTotalPhysicalBytes int64 `json:"limited_to_total_physical_bytes,omitempty"`
2186 LicenseInfoMessage string `json:"license_info_message,omitempty"`
2187 LicenseWarningMessage string `json:"license_warning_message,omitempty"`
2188 }
2189
2190 type GetNetworkTestResultRequest struct {
2191 retryPolicy
2192 }
2193
2194 type GetNetworkTestResultResponse struct {
2195 Status GetNetworkTestResultResponse_Status `json:"status,omitempty"`
2196 Result []*GetNetworkTestResultResponse_ConnectionTestJobResult `json:"result,omitempty"`
2197 }
2198
2199 type GetNetworkTestResultResponse_Status string
2200
2201 const (
2202 GetNetworkTestResultResponse_Status_DONE GetNetworkTestResultResponse_Status = "DONE"
2203 GetNetworkTestResultResponse_Status_IN_PROGRESS GetNetworkTestResultResponse_Status = "IN_PROGRESS"
2204 GetNetworkTestResultResponse_Status_NOT_SCHEDULED GetNetworkTestResultResponse_Status = "NOT_SCHEDULED"
2205 )
2206
2207 type GetNetworkTestResultResponse_ConnectionTestJobResult struct {
2208 RpcTargetServerRole string `json:"rpc_target_server_role,omitempty"`
2209 RpcTargetClientRole string `json:"rpc_target_client_role,omitempty"`
2210 ResultType GetNetworkTestResultResponse_ConnectionTestJobResult_ResultType `json:"result_type,omitempty"`
2211 BytesSent int64 `json:"bytes_sent,omitempty"`
2212 BytesReceived int64 `json:"bytes_received,omitempty"`
2213 TestDurationMs int64 `json:"test_duration_ms,omitempty"`
2214 HistogramBucket []*GetNetworkTestResultResponse_ConnectionTestJobResult_HistogramBucket `json:"histogram_bucket,omitempty"`
2215 }
2216
2217 type GetNetworkTestResultResponse_ConnectionTestJobResult_ResultType string
2218
2219 const (
2220 GetNetworkTestResultResponse_ConnectionTestJobResult_ResultType_NOT_SCHEDULED GetNetworkTestResultResponse_ConnectionTestJobResult_ResultType = "NOT_SCHEDULED"
2221 GetNetworkTestResultResponse_ConnectionTestJobResult_ResultType_PING_FAILED GetNetworkTestResultResponse_ConnectionTestJobResult_ResultType = "PING_FAILED"
2222 GetNetworkTestResultResponse_ConnectionTestJobResult_ResultType_RESPONSE_ERROR GetNetworkTestResultResponse_ConnectionTestJobResult_ResultType = "RESPONSE_ERROR"
2223 GetNetworkTestResultResponse_ConnectionTestJobResult_ResultType_RESPONSE_SUCCESS GetNetworkTestResultResponse_ConnectionTestJobResult_ResultType = "RESPONSE_SUCCESS"
2224 GetNetworkTestResultResponse_ConnectionTestJobResult_ResultType_RESPONSE_TIME_OUT GetNetworkTestResultResponse_ConnectionTestJobResult_ResultType = "RESPONSE_TIME_OUT"
2225 )
2226
2227 type GetNetworkTestResultResponse_ConnectionTestJobResult_HistogramBucket struct {
2228 UpperBoundUs int64 `json:"upper_bound_us,omitempty"`
2229 Count int64 `json:"count,omitempty"`
2230 }
2231
2232 type GetNotificationRulesRequest struct {
2233 retryPolicy
2234 }
2235
2236 type GetNotificationRulesResponse struct {
2237 Rule []*NotificationRule `json:"rule,omitempty"`
2238 }
2239
2240 type GetPolicyPresetsRequest struct {
2241 retryPolicy
2242 }
2243
2244 type GetPolicyPresetsResponse struct {
2245 PolicyPreset []*PolicyPreset `json:"policy_preset,omitempty"`
2246 }
2247
2248 type GetPolicyRuleSetsRequest struct {
2249 retryPolicy
2250 }
2251
2252 type GetPolicyRuleSetsResponse struct {
2253 PolicyRuleSet []*PolicyRuleSet `json:"policy_rule_set,omitempty"`
2254 }
2255
2256 type GetPolicyRulesRequest struct {
2257 // If not set, simply returns all policy rules. If set, returns only effective policy rules with their effective policies.
2258 PolicySubject GetPolicyRulesRequest_PolicySubject `json:"policy_subject,omitempty"`
2259 // If not set, returns latest version.
2260 PolicyRuleSetVersion int64 `json:"policy_rule_set_version,omitempty"`
2261 retryPolicy
2262 }
2263
2264 type GetPolicyRulesRequest_PolicySubject struct {
2265 // Set the following subject(s) to match a certain one: Global: global. Tenant: tenant. Volume: tenant and volume. File: tenant, volume and file. Client: tenant, volume, file and client info.
2266 Global bool `json:"global,omitempty"`
2267 Tenant GetPolicyRulesRequest_PolicySubject_TenantPolicySubject `json:"tenant,omitempty"`
2268 Volume GetPolicyRulesRequest_PolicySubject_VolumePolicySubject `json:"volume,omitempty"`
2269 File GetPolicyRulesRequest_PolicySubject_FilePolicySubject `json:"file,omitempty"`
2270 Client GetPolicyRulesRequest_PolicySubject_ClientPolicySubject `json:"client,omitempty"`
2271 }
2272
2273 type GetPolicyRulesRequest_PolicySubject_ClientPolicySubject struct {
2274 ClientIpAddress string `json:"client_ip_address,omitempty"`
2275 ClientType GetPolicyRulesRequest_PolicySubject_ClientPolicySubject_ClientType `json:"client_type,omitempty"`
2276 }
2277
2278 type GetPolicyRulesRequest_PolicySubject_ClientPolicySubject_ClientType string
2279
2280 const (
2281 GetPolicyRulesRequest_PolicySubject_ClientPolicySubject_ClientType_NATIVE GetPolicyRulesRequest_PolicySubject_ClientPolicySubject_ClientType = "NATIVE"
2282 GetPolicyRulesRequest_PolicySubject_ClientPolicySubject_ClientType_NFS GetPolicyRulesRequest_PolicySubject_ClientPolicySubject_ClientType = "NFS"
2283 GetPolicyRulesRequest_PolicySubject_ClientPolicySubject_ClientType_S3 GetPolicyRulesRequest_PolicySubject_ClientPolicySubject_ClientType = "S3"
2284 )
2285
2286 type GetPolicyRulesRequest_PolicySubject_FilePolicySubject struct {
2287 Name string `json:"name,omitempty"`
2288 Owner string `json:"owner,omitempty"`
2289 SizeBytes int64 `json:"size_bytes,omitempty"`
2290 LastAccessAgeS int64 `json:"last_access_age_s,omitempty"`
2291 LastModificationAgeS int64 `json:"last_modification_age_s,omitempty"`
2292 FileXattr []*XAttr `json:"file_xattr,omitempty"`
2293 DirectoryXattr []*XAttr `json:"directory_xattr,omitempty"`
2294 RecursiveDirectoryXattr []*XAttr `json:"recursive_directory_xattr,omitempty"`
2295 }
2296
2297 type GetPolicyRulesRequest_PolicySubject_Label struct {
2298 Name string `json:"name,omitempty"`
2299 Value string `json:"value,omitempty"`
2300 }
2301
2302 type GetPolicyRulesRequest_PolicySubject_TenantPolicySubject struct {
2303 Uuid string `json:"uuid,omitempty"`
2304 Name string `json:"name,omitempty"`
2305 Label []*GetPolicyRulesRequest_PolicySubject_Label `json:"label,omitempty"`
2306 }
2307
2308 type GetPolicyRulesRequest_PolicySubject_VolumePolicySubject struct {
2309 Uuid string `json:"uuid,omitempty"`
2310 Name string `json:"name,omitempty"`
2311 Label []*GetPolicyRulesRequest_PolicySubject_Label `json:"label,omitempty"`
2312 }
2313
2314 type GetPolicyRulesResponse struct {
2315 PolicyRule []*PolicyRule `json:"policy_rule,omitempty"`
2316 }
2317
2318 type GetQuotaRequest struct {
2319 TenantDomain string `json:"tenant_domain,omitempty"`
2320 OnlyEntity []*ConsumingEntity `json:"only_entity,omitempty"`
2321 OnlyResourceType []*Resource_Type `json:"only_resource_type,omitempty"`
2322 IncludeDefaultQuotas bool `json:"include_default_quotas,omitempty"`
2323 retryPolicy
2324 }
2325
2326 type GetQuotaResponse struct {
2327 Quotas []*Quota `json:"quotas,omitempty"`
2328 }
2329
2330 type GetRulesRequest struct {
2331 retryPolicy
2332 }
2333
2334 type GetRulesResponse struct {
2335 }
2336
2337 type GetServiceDumpRequest struct {
2338 ServiceUuid string `json:"service_uuid,omitempty"`
2339 SupportTicketId int32 `json:"support_ticket_id,omitempty"`
2340 retryPolicy
2341 }
2342
2343 type GetServiceDumpResponse struct {
2344 // byte stream from the zip file
2345 Bytes string `json:"bytes,omitempty"`
2346 // not empty if s3 upload is requested
2347 S3UploadResponseCode int32 `json:"s3_upload_response_code,omitempty"`
2348 }
2349
2350 type GetServicesRequest struct {
2351 // Filter for service type.
2352 ServiceType []*ServiceType `json:"service_type,omitempty"`
2353 // Filter for service UUID
2354 Serviceuuid string `json:"serviceUuid,omitempty"`
2355 retryPolicy
2356 }
2357
2358 type GetServicesResponse struct {
2359 Service []*ServiceDescription `json:"service,omitempty"`
2360 }
2361
2362 type GetSupportDumpRequest struct {
2363 SupportDumpId string `json:"support_dump_id,omitempty"`
2364 retryPolicy
2365 }
2366
2367 type GetSupportDumpResponse struct {
2368 Bytes string `json:"bytes,omitempty"`
2369 }
2370
2371 type GetSupportDumpStatusRequest struct {
2372 retryPolicy
2373 }
2374
2375 type GetSupportDumpStatusResponse struct {
2376 // Obsolete, use status field
2377 ObsoleteIsInProgress bool `json:"OBSOLETE_is_in_progress,omitempty"`
2378 SupportDumpId string `json:"support_dump_id,omitempty"`
2379 Status GetSupportDumpStatusResponse_Status `json:"status,omitempty"`
2380 // not empty if s3 upload is requested
2381 SupportTicketId int32 `json:"support_ticket_id,omitempty"`
2382 // not empty if s3 upload is requested
2383 S3UploadResponseCode int32 `json:"s3_upload_response_code,omitempty"`
2384 }
2385
2386 type GetSupportDumpStatusResponse_Status string
2387
2388 const (
2389 GetSupportDumpStatusResponse_Status_DONE GetSupportDumpStatusResponse_Status = "DONE"
2390 GetSupportDumpStatusResponse_Status_GENERATING GetSupportDumpStatusResponse_Status = "GENERATING"
2391 GetSupportDumpStatusResponse_Status_NOT_FOUND GetSupportDumpStatusResponse_Status = "NOT_FOUND"
2392 )
2393
2394 type GetSystemStatisticsRequest struct {
2395 retryPolicy
2396 }
2397
2398 type GetSystemStatisticsResponse struct {
2399 // Current system statistics
2400 Statistics SystemStatistics `json:"statistics,omitempty"`
2401 // total_physical_capacity & total_physical_usage ensure backward compatibility for manila driver Overall physical storage capacity in bytes
2402 TotalPhysicalCapacity int64 `json:"total_physical_capacity,omitempty"`
2403 // Current overall physical usage in bytes
2404 TotalPhysicalUsage int64 `json:"total_physical_usage,omitempty"`
2405 }
2406
2407 type GetTaskListRequest struct {
2408 // The limit number of tasks requested. Result list will contain task_count_limit elements, if set and > 0. No limit, if = 0.
2409 TaskCountLimit int32 `json:"task_count_limit,omitempty"`
2410 // Filter to tasks in non-final states.
2411 OnlyProcessing bool `json:"only_processing,omitempty"`
2412 // The task to query, or empty for all recent tasks.
2413 TaskId []string `json:"task_id,omitempty"`
2414 // The type to filter to, if set.
2415 TaskType TaskType `json:"task_type,omitempty"`
2416 // UI Relevant Parameters Database lookup in reversed (descending) direction
2417 OldestTasksFirst bool `json:"oldest_tasks_first,omitempty"`
2418 // Requesting only root tasks
2419 OnlyRootTasks bool `json:"only_root_tasks,omitempty"`
2420 // The key in database to start the iterator at
2421 StartAtKey string `json:"start_at_key,omitempty"`
2422 // The state to filter to, if set.
2423 TaskState TaskState `json:"task_state,omitempty"`
2424 // The parent task id to query its subtasks
2425 ByParentTaskId string `json:"by_parent_task_id,omitempty"`
2426 ObsoleteOnlyUiSampling bool `json:"OBSOLETE_only_ui_sampling,omitempty"`
2427 retryPolicy
2428 }
2429
2430 type GetTaskListResponse struct {
2431 // List of currently scheduled or running tasks
2432 Tasks []*TaskInfo `json:"tasks,omitempty"`
2433 }
2434
2435 type GetTenantRequest struct {
2436 TenantId []string `json:"tenant_id,omitempty"`
2437 retryPolicy
2438 }
2439
2440 type GetTenantResponse struct {
2441 Tenant []*TenantDomainConfiguration `json:"tenant,omitempty"`
2442 }
2443
2444 type GetTopConsumerRequest struct {
2445 Scope GetTopConsumerRequest_Scope `json:"scope,omitempty"`
2446 ScopeIdentifier string `json:"scope_identifier,omitempty"`
2447 TopConsumerLimit int32 `json:"top_consumer_limit,omitempty"`
2448 OnlyConsumerType []*ConsumingEntity_Type `json:"only_consumer_type,omitempty"`
2449 OnlyResourceType []*Resource_Type `json:"only_resource_type,omitempty"`
2450 retryPolicy
2451 }
2452
2453 type GetTopConsumerRequest_Scope string
2454
2455 const (
2456 GetTopConsumerRequest_Scope_SYSTEM GetTopConsumerRequest_Scope = "SYSTEM"
2457 GetTopConsumerRequest_Scope_TENANT GetTopConsumerRequest_Scope = "TENANT"
2458 GetTopConsumerRequest_Scope_VOLUME GetTopConsumerRequest_Scope = "VOLUME"
2459 )
2460
2461 type GetTopConsumerResponse struct {
2462 TopConsumer []*GetTopConsumerResponse_TopConsumer `json:"top_consumer,omitempty"`
2463 }
2464
2465 type GetTopConsumerResponse_Consumer struct {
2466 Identifier ConsumingEntity `json:"identifier,omitempty"`
2467 Usage int64 `json:"usage,omitempty"`
2468 }
2469
2470 type GetTopConsumerResponse_TopConsumer struct {
2471 ConsumerType ConsumingEntity_Type `json:"consumer_type,omitempty"`
2472 ResourceType Resource_Type `json:"resource_type,omitempty"`
2473 Consumer []*GetTopConsumerResponse_Consumer `json:"consumer,omitempty"`
2474 }
2475
2476 type GetUnformattedDevicesRequest struct {
2477 ServiceUuid string `json:"service_uuid,omitempty"`
2478 retryPolicy
2479 }
2480
2481 type GetUnformattedDevicesResponse struct {
2482 UnformattedDevice []*UnformattedDevice `json:"unformatted_device,omitempty"`
2483 }
2484
2485 type GetUsersRequest struct {
2486 UserId []string `json:"user_id,omitempty"`
2487 retryPolicy
2488 }
2489
2490 type GetUsersResponse struct {
2491 UserConfiguration []*UserConfiguration `json:"user_configuration,omitempty"`
2492 }
2493
2494 type GetVolumeListRequest struct {
2495 //Restrict query to single volume
2496 VolumeUuid string `json:"volume_uuid,omitempty"`
2497 // Restrict query to tenant domain
2498 TenantDomain string `json:"tenant_domain,omitempty"`
2499 retryPolicy
2500 }
2501
2502 type GetVolumeListResponse struct {
2503 // List of volumes
2504 Volume []*Volume `json:"volume,omitempty"`
2505 }
2506
2507 type GetVolumeMappingInfosRequest struct {
2508 // Filter for specific uuids.
2509 Uuid []string `json:"uuid,omitempty"`
2510 IncludeDeleted bool `json:"include_deleted,omitempty"`
2511 TenantDomain string `json:"tenant_domain,omitempty"`
2512 IncludeMirrored bool `json:"include_mirrored,omitempty"`
2513 retryPolicy
2514 }
2515
2516 type GroupsToAttributesMapping struct {
2517 LdapGroup []string `json:"ldap_group,omitempty"`
2518 // SUPER_USER, FILESYSTEM_ADMIN, ...
2519 Role UserRole `json:"role,omitempty"`
2520 AdminOfTenantId string `json:"admin_of_tenant_id,omitempty"`
2521 MemberOfTenantId string `json:"member_of_tenant_id,omitempty"`
2522 }
2523
2524 type HealthManagerStatus struct {
2525 NextMaintenanceWindowState HealthManagerStatus_MaintenanceWindowMode `json:"next_maintenance_window_state,omitempty"`
2526 NextMaintenanceWindowStartMs int64 `json:"next_maintenance_window_start_ms,omitempty"`
2527 DevicesWithCleanupDue int32 `json:"devices_with_cleanup_due,omitempty"`
2528 DevicesWithFstrimDue int32 `json:"devices_with_fstrim_due,omitempty"`
2529 VolumesWithScrubDue int32 `json:"volumes_with_scrub_due,omitempty"`
2530 RunningHealthManagerTasks int32 `json:"running_health_manager_tasks,omitempty"`
2531 DefectiveDevices int32 `json:"defective_devices,omitempty"`
2532 DevicesWithCatchupDue int32 `json:"devices_with_catchup_due,omitempty"`
2533 VolumesWithEnforcePlacementDue int32 `json:"volumes_with_enforce_placement_due,omitempty"`
2534 VolumesWithErasureDue int32 `json:"volumes_with_erasure_due,omitempty"`
2535 SnapshotsWithErasureDue int32 `json:"snapshots_with_erasure_due,omitempty"`
2536 HostsWithVersionUpdateDue int32 `json:"hosts_with_version_update_due,omitempty"`
2537 SystemHealth HealthManagerStatus_SystemHealth `json:"system_health,omitempty"`
2538 SystemHealthReason []string `json:"system_health_reason,omitempty"`
2539 RegistryReplicasInSync bool `json:"registry_replicas_in_sync,omitempty"`
2540 }
2541
2542 type HealthManagerStatus_MaintenanceWindowMode string
2543
2544 const (
2545 HealthManagerStatus_MaintenanceWindowMode_ACTIVE HealthManagerStatus_MaintenanceWindowMode = "ACTIVE"
2546 HealthManagerStatus_MaintenanceWindowMode_ALWAYS HealthManagerStatus_MaintenanceWindowMode = "ALWAYS"
2547 HealthManagerStatus_MaintenanceWindowMode_HEALTH_MANAGER_DISABLED HealthManagerStatus_MaintenanceWindowMode = "HEALTH_MANAGER_DISABLED"
2548 HealthManagerStatus_MaintenanceWindowMode_SCHEDULED HealthManagerStatus_MaintenanceWindowMode = "SCHEDULED"
2549 )
2550
2551 type HealthManagerStatus_SystemHealth string
2552
2553 const (
2554 HealthManagerStatus_SystemHealth_DEGRADED HealthManagerStatus_SystemHealth = "DEGRADED"
2555 HealthManagerStatus_SystemHealth_HEALTHY HealthManagerStatus_SystemHealth = "HEALTHY"
2556 )
2557
2558 type ImportAccessKeysRequest struct {
2559 UserName string `json:"user_name,omitempty"`
2560 AccessKeyDetails []*AccessKeyDetails `json:"access_key_details,omitempty"`
2561 retryPolicy
2562 }
2563
2564 type ImportAccessKeysResponse struct {
2565 }
2566
2567 type ImportConfigurationRequest struct {
2568 //Type of the configuration to be edited
2569 ConfigurationType ConfigurationType `json:"configuration_type,omitempty"`
2570 // Name of the configuration to be edited
2571 ConfigurationName string `json:"configuration_name,omitempty"`
2572 // Textual representation of the configuration. The configuration is being deleted if this is empty.
2573 ProtoDump string `json:"proto_dump,omitempty"`
2574 retryPolicy
2575 }
2576
2577 type ImportConfigurationResponse struct {
2578 }
2579
2580 type ImportPolicyRulesRequest struct {
2581 Creator string `json:"creator,omitempty"`
2582 // Must have the format of EditablePolicyRuleSet. If only a single policy rule is defined: Update it, if UUID is set, and create it otherwise. If multiple are defined, set all as current set. Must not import default policy rules.
2583 ProtoDump string `json:"proto_dump,omitempty"`
2584 retryPolicy
2585 }
2586
2587 type ImportPolicyRulesResponse struct {
2588 }
2589
2590 type InternalOnDiskFormatPolicy struct {
2591 CrcMethod InternalOnDiskFormatPolicy_CrcMethod `json:"crc_method,omitempty"`
2592 PersistentFormat InternalOnDiskFormatPolicy_PersistentFormat `json:"persistent_format,omitempty"`
2593 }
2594
2595 type InternalOnDiskFormatPolicy_CrcMethod string
2596
2597 const (
2598 InternalOnDiskFormatPolicy_CrcMethod_CRC_32C InternalOnDiskFormatPolicy_CrcMethod = "CRC_32C"
2599 InternalOnDiskFormatPolicy_CrcMethod_CRC_32_ISCSI InternalOnDiskFormatPolicy_CrcMethod = "CRC_32_ISCSI"
2600 InternalOnDiskFormatPolicy_CrcMethod_NO_CRC InternalOnDiskFormatPolicy_CrcMethod = "NO_CRC"
2601 )
2602
2603 type InternalOnDiskFormatPolicy_PersistentFormat string
2604
2605 const (
2606 InternalOnDiskFormatPolicy_PersistentFormat_V1_METADATA_FILE InternalOnDiskFormatPolicy_PersistentFormat = "V1_METADATA_FILE"
2607 InternalOnDiskFormatPolicy_PersistentFormat_V2_METADATA_HEADER_4K InternalOnDiskFormatPolicy_PersistentFormat = "V2_METADATA_HEADER_4K"
2608 InternalOnDiskFormatPolicy_PersistentFormat_V3_METADATA_HEADER_4K_BLOCK_LENGTH InternalOnDiskFormatPolicy_PersistentFormat = "V3_METADATA_HEADER_4K_BLOCK_LENGTH"
2609 )
2610
2611 type KeyStoreSlotParams struct {
2612 // method this slot uses to encrypt the volume keys
2613 KeyEncryptionMethod KeyStoreSlotParams_KeyEncryptionMethod `json:"key_encryption_method,omitempty"`
2614 PasswordHashMethod KeyStoreSlotParams_HashMethod `json:"password_hash_method,omitempty"`
2615 PasswordHashIterations int32 `json:"password_hash_iterations,omitempty"`
2616 KeyDerivationMethod KeyStoreSlotParams_HashMethod `json:"key_derivation_method,omitempty"`
2617 KeyDerivationIterations int32 `json:"key_derivation_iterations,omitempty"`
2618 }
2619
2620 type KeyStoreSlotParams_HashMethod string
2621
2622 const (
2623 KeyStoreSlotParams_HashMethod_PBKDF2WithHmacSHA512 KeyStoreSlotParams_HashMethod = "PBKDF2WITHHMACSHA512"
2624 )
2625
2626 type KeyStoreSlotParams_KeyEncryptionMethod string
2627
2628 const (
2629 KeyStoreSlotParams_KeyEncryptionMethod_AES_CBC_256_PKCS5PADDING KeyStoreSlotParams_KeyEncryptionMethod = "AES_CBC_256_PKCS5PADDING"
2630 )
2631
2632 type Label struct {
2633 // Visibility of this label. Currently all labels are visible system-wide to super users.
2634 Namespace Label_Namespace `json:"namespace,omitempty"`
2635 // Type of entity to which the label belongs.
2636 EntityType Label_EntityType `json:"entity_type,omitempty"`
2637 // Id of the entity to which the label belongs. Labels can only be set for existing entities.
2638 EntityId string `json:"entity_id,omitempty"`
2639 // Name of the label, must be a valid ascii string.
2640 Name string `json:"name,omitempty"`
2641 // Value of label.
2642 Value string `json:"value,omitempty"`
2643 }
2644
2645 type Label_EntityType string
2646
2647 const (
2648 Label_EntityType_SERVICE Label_EntityType = "SERVICE"
2649 Label_EntityType_TENANT Label_EntityType = "TENANT"
2650 Label_EntityType_VOLUME Label_EntityType = "VOLUME"
2651 )
2652
2653 type Label_Namespace string
2654
2655 const (
2656 Label_Namespace_SYSTEM Label_Namespace = "SYSTEM"
2657 )
2658
2659 type LabelPattern struct {
2660 NameRegex string `json:"name_regex,omitempty"`
2661 ValueRegex string `json:"value_regex,omitempty"`
2662 }
2663
2664 type ListCaRequest struct {
2665 retryPolicy
2666 }
2667
2668 type ListCaResponse struct {
2669 // List of certificate authorities
2670 Ca []*CertificateAuthority `json:"ca,omitempty"`
2671 }
2672
2673 type ListCertificatesRequest struct {
2674 retryPolicy
2675 }
2676
2677 type ListCertificatesResponse struct {
2678 // List of certificate records
2679 Certificate []*CertificateRecord `json:"certificate,omitempty"`
2680 }
2681
2682 type ListCsrRequest struct {
2683 // Limit to state
2684 State CsrState `json:"state,omitempty"`
2685 retryPolicy
2686 }
2687
2688 type ListCsrResponse struct {
2689 // List of open CSRs
2690 Csr []*CertificateSigningRequest `json:"csr,omitempty"`
2691 }
2692
2693 type ListRegistryReplicasRequest struct {
2694 retryPolicy
2695 }
2696
2697 type ListRegistryReplicasResponse struct {
2698 // A list all DIR device IDs that are currently acting as replicas.
2699 DeviceIds []string `json:"device_ids,omitempty"`
2700 }
2701
2702 type ListSnapshotsRequest struct {
2703 // Volume uuid
2704 VolumeUuid string `json:"volume_uuid,omitempty"`
2705 retryPolicy
2706 }
2707
2708 type ListSnapshotsResponse struct {
2709 // Snapshots
2710 Snapshot []*VolumeSnapshot `json:"snapshot,omitempty"`
2711 }
2712
2713 type MakeDeviceRequest struct {
2714 HandleId string `json:"handle_id,omitempty"`
2715 DeviceType MakeDeviceSettings_DeviceType `json:"device_type,omitempty"`
2716 FsType MakeDeviceSettings_FsType `json:"fs_type,omitempty"`
2717 Comment string `json:"comment,omitempty"`
2718 retryPolicy
2719 }
2720
2721 type MakeDeviceResponse struct {
2722 // ID of the created task
2723 TaskId string `json:"task_id,omitempty"`
2724 HostName string `json:"host_name,omitempty"`
2725 DeviceName string `json:"device_name,omitempty"`
2726 }
2727
2728 type MakeDeviceSettings struct {
2729 ServiceUuid string `json:"service_uuid,omitempty"`
2730 FsType MakeDeviceSettings_FsType `json:"fs_type,omitempty"`
2731 DeviceType MakeDeviceSettings_DeviceType `json:"device_type,omitempty"`
2732 DevicePath string `json:"device_path,omitempty"`
2733 }
2734
2735 type MakeDeviceSettings_DeviceType string
2736
2737 const (
2738 MakeDeviceSettings_DeviceType_DATA MakeDeviceSettings_DeviceType = "DATA"
2739 MakeDeviceSettings_DeviceType_METADATA MakeDeviceSettings_DeviceType = "METADATA"
2740 MakeDeviceSettings_DeviceType_REGISTRY MakeDeviceSettings_DeviceType = "REGISTRY"
2741 )
2742
2743 type MakeDeviceSettings_FsType string
2744
2745 const (
2746 MakeDeviceSettings_FsType_EXT4 MakeDeviceSettings_FsType = "EXT4"
2747 MakeDeviceSettings_FsType_XFS MakeDeviceSettings_FsType = "XFS"
2748 )
2749
2750 type MetadataReplicationPolicy struct {
2751 ReplicationFactor int32 `json:"replication_factor,omitempty"`
2752 }
2753
2754 type NotificationRule struct {
2755 Uuid string `json:"uuid,omitempty"`
2756 Description string `json:"description,omitempty"`
2757 FilterSource []*NotificationRule_NotificationSource `json:"filter_source,omitempty"`
2758 FilterSeverity NotificationRule_Severity `json:"filter_severity,omitempty"`
2759 NotificationTarget []*NotificationTarget `json:"notification_target,omitempty"`
2760 Enabled bool `json:"enabled,omitempty"`
2761 }
2762
2763 type NotificationRule_NotificationSource string
2764
2765 const (
2766 NotificationRule_NotificationSource_ALERT_MANAGER NotificationRule_NotificationSource = "ALERT_MANAGER"
2767 NotificationRule_NotificationSource_HEALTH_MANAGER NotificationRule_NotificationSource = "HEALTH_MANAGER"
2768 NotificationRule_NotificationSource_QUOTA_MANAGER NotificationRule_NotificationSource = "QUOTA_MANAGER"
2769 )
2770
2771 type NotificationRule_Severity string
2772
2773 const (
2774 NotificationRule_Severity_ERROR NotificationRule_Severity = "ERROR"
2775 NotificationRule_Severity_INFO NotificationRule_Severity = "INFO"
2776 NotificationRule_Severity_WARN NotificationRule_Severity = "WARN"
2777 )
2778
2779 type NotificationTarget struct {
2780 TargetType NotificationTarget_TargetType `json:"target_type,omitempty"`
2781 // only considered when target_type is EMAIL
2782 EmailAddress string `json:"email_address,omitempty"`
2783 // only considered when target_type is EMAIL_USER
2784 EmailDomain string `json:"email_domain,omitempty"`
2785 // only considered when target_type is EMAIL_ROLE
2786 RoleType NotificationTarget_RoleType `json:"role_type,omitempty"`
2787 }
2788
2789 type NotificationTarget_RoleType string
2790
2791 const (
2792 NotificationTarget_RoleType_SUPERUSER NotificationTarget_RoleType = "SUPERUSER"
2793 NotificationTarget_RoleType_TENANT_ADMIN NotificationTarget_RoleType = "TENANT_ADMIN"
2794 )
2795
2796 type NotificationTarget_TargetType string
2797
2798 const (
2799 NotificationTarget_TargetType_AUDIT_LOG NotificationTarget_TargetType = "AUDIT_LOG"
2800 NotificationTarget_TargetType_EMAIL NotificationTarget_TargetType = "EMAIL"
2801 NotificationTarget_TargetType_EMAIL_ROLE NotificationTarget_TargetType = "EMAIL_ROLE"
2802 NotificationTarget_TargetType_EMAIL_USER NotificationTarget_TargetType = "EMAIL_USER"
2803 )
2804
2805 type OSyncBehaviorPolicy struct {
2806 Mode OSyncBehaviorPolicy_Mode `json:"mode,omitempty"`
2807 }
2808
2809 type OSyncBehaviorPolicy_Mode string
2810
2811 const (
2812 OSyncBehaviorPolicy_Mode_AS_REQUESTED OSyncBehaviorPolicy_Mode = "AS_REQUESTED"
2813 OSyncBehaviorPolicy_Mode_DISABLE_ALWAYS OSyncBehaviorPolicy_Mode = "DISABLE_ALWAYS"
2814 OSyncBehaviorPolicy_Mode_ENABLE_ALWAYS OSyncBehaviorPolicy_Mode = "ENABLE_ALWAYS"
2815 )
2816
2817 type OrdinaryUserPrivilegePolicy struct {
2818 CanSetSuid bool `json:"can_set_suid,omitempty"`
2819 CanChown bool `json:"can_chown,omitempty"`
2820 CanChgrp bool `json:"can_chgrp,omitempty"`
2821 }
2822
2823 type OverrideCreateModePolicy struct {
2824 OverrideCreateMode int32 `json:"override_create_mode,omitempty"`
2825 OverrideDirectoryMode int32 `json:"override_directory_mode,omitempty"`
2826 }
2827
2828 type PageCachePolicy struct {
2829 Mode PageCachePolicy_Mode `json:"mode,omitempty"`
2830 EnableDirectWritebacks bool `json:"enable_direct_writebacks,omitempty"`
2831 }
2832
2833 type PageCachePolicy_Mode string
2834
2835 const (
2836 PageCachePolicy_Mode_FLUSH_ALWAYS PageCachePolicy_Mode = "FLUSH_ALWAYS"
2837 PageCachePolicy_Mode_KEEP_ALWAYS PageCachePolicy_Mode = "KEEP_ALWAYS"
2838 PageCachePolicy_Mode_USE_HEURISTIC PageCachePolicy_Mode = "USE_HEURISTIC"
2839 )
2840
2841 type PlacementSettings struct {
2842 //* Place on devices that have these tags
2843 RequiredDeviceTags PlacementSettings_Tags `json:"required_device_tags,omitempty"`
2844 //* Do not place on devices that have these tags
2845 ForbiddenDeviceTags PlacementSettings_Tags `json:"forbidden_device_tags,omitempty"`
2846 // Prefer placement on devices on the client machine.
2847 PreferClientLocalDevice bool `json:"prefer_client_local_device,omitempty"`
2848 // File replicas are placed to support MR locality and reduce bandwidth requirements.
2849 OptimizeForMapreduce bool `json:"optimize_for_mapreduce,omitempty"`
2850 // Do not place on devices within the same MACHINE/RACK/ROOM/CLUSTER/...
2851 FailureDomainType FailureDomainType `json:"failure_domain_type,omitempty"`
2852 PlacementMethod PlacementSettings_PlacementMethod `json:"placement_method,omitempty"`
2853 }
2854
2855 type PlacementSettings_PlacementMethod string
2856
2857 const (
2858 PlacementSettings_PlacementMethod_AUTOMATIC_HDD_SSD PlacementSettings_PlacementMethod = "AUTOMATIC_HDD_SSD"
2859 PlacementSettings_PlacementMethod_TAG_BASED PlacementSettings_PlacementMethod = "TAG_BASED"
2860 )
2861
2862 type PlacementSettings_Tags struct {
2863 Tags []string `json:"tags,omitempty"`
2864 }
2865
2866 type Policies struct {
2867 // Volume metadata placement
2868 MetadataReplication MetadataReplicationPolicy `json:"metadata_replication,omitempty"`
2869 MetadataTagBasedPlacement TagBasedPlacementPolicy `json:"metadata_tag_based_placement,omitempty"`
2870 MetadataFailureDomainPlacement FailureDomainPlacementPolicy `json:"metadata_failure_domain_placement,omitempty"`
2871 // Volume
2872 UserAndGroupMappingSecurity UserAndGroupMappingSecurityPolicy `json:"user_and_group_mapping_security,omitempty"`
2873 AdditionalPrivilegedGroupsSecurity AdditionalPrivilegedGroupsSecurityPolicy `json:"additional_privileged_groups_security,omitempty"`
2874 OrdinaryUserPrivilege OrdinaryUserPrivilegePolicy `json:"ordinary_user_privilege,omitempty"`
2875 WindowsSpecificSecurity WindowsSpecificSecurityPolicy `json:"windows_specific_security,omitempty"`
2876 OverrideCreateMode OverrideCreateModePolicy `json:"override_create_mode,omitempty"`
2877 VolumeSnapshotFrequency VolumeSnapshotFrequencyPolicy `json:"volume_snapshot_frequency,omitempty"`
2878 VolumeSnapshotRetention VolumeSnapshotRetentionPolicy `json:"volume_snapshot_retention,omitempty"`
2879 VolumeEncryption VolumeEncryptionPolicy `json:"volume_encryption,omitempty"`
2880 // File placement
2881 FileTagBasedPlacement TagBasedPlacementPolicy `json:"file_tag_based_placement,omitempty"`
2882 FileFailureDomainPlacement FailureDomainPlacementPolicy `json:"file_failure_domain_placement,omitempty"`
2883 FileRetention FileRetentionPolicy `json:"file_retention,omitempty"`
2884 // File layout
2885 FileRecode FileRecodePolicy `json:"file_recode,omitempty"`
2886 FileRedundancy FileRedundancyPolicy `json:"file_redundancy,omitempty"`
2887 InternalOnDiskFormat InternalOnDiskFormatPolicy `json:"internal_on_disk_format,omitempty"`
2888 ReplicationRedundancyDetails ReplicationRedundancyDetailsPolicy `json:"replication_redundancy_details,omitempty"`
2889 EcRedundancyDetails EcRedundancyDetailsPolicy `json:"ec_redundancy_details,omitempty"`
2890 SpecialFilePlacement SpecialFilePlacementPolicy `json:"special_file_placement,omitempty"`
2891 // File IO
2892 FilePrefetch FilePrefetchPolicy `json:"file_prefetch,omitempty"`
2893 FileMetadataCache FileMetadataCachePolicy `json:"file_metadata_cache,omitempty"`
2894 PageCache PageCachePolicy `json:"page_cache,omitempty"`
2895 DeferredWriteback DeferredWritebackPolicy `json:"deferred_writeback,omitempty"`
2896 DeferredClose DeferredClosePolicy `json:"deferred_close,omitempty"`
2897 RpcRetryOperations RpcRetryOperationsPolicy `json:"rpc_retry_operations,omitempty"`
2898 FileLock FileLockPolicy `json:"file_lock,omitempty"`
2899 DiskIo DiskIoPolicy `json:"disk_io,omitempty"`
2900 OSyncBehavior OSyncBehaviorPolicy `json:"o_sync_behavior,omitempty"`
2901 ClientCache ClientCachePolicy `json:"client_cache,omitempty"`
2902 FsyncBehavior FsyncBehaviorPolicy `json:"fsync_behavior,omitempty"`
2903 Checksum ChecksumPolicy `json:"checksum,omitempty"`
2904 DataServiceCache DataServiceCachePolicy `json:"data_service_cache,omitempty"`
2905 EcParity EcParityPolicy `json:"ec_parity,omitempty"`
2906 ConcurrentAppendHandling ConcurrentAppendHandlingPolicy `json:"concurrent_append_handling,omitempty"`
2907 }
2908
2909 type PolicyPreset struct {
2910 Id string `json:"id,omitempty"`
2911 Name string `json:"name,omitempty"`
2912 Description string `json:"description,omitempty"`
2913 Deprecated bool `json:"deprecated,omitempty"`
2914 // When setting a rule, can be left empty because policies are generated programmatically. When getting a rule, contains (effective) policies.
2915 Policies Policies `json:"policies,omitempty"`
2916 }
2917
2918 type PolicyRule struct {
2919 Uuid string `json:"uuid,omitempty"`
2920 Name string `json:"name,omitempty"`
2921 Description string `json:"description,omitempty"`
2922 Creator string `json:"creator,omitempty"`
2923 Enabled bool `json:"enabled,omitempty"`
2924 // If set, this rule is a default rule provided by us. The rule has been generated programmatically and is read-only.
2925 Default bool `json:"default,omitempty"`
2926 // Used to prioritize if any subject is affected by multiple rules. Must be distinct!
2927 OrderingNumber int32 `json:"ordering_number,omitempty"`
2928 Scope PolicyScope `json:"scope,omitempty"`
2929 // Exactly one field must be set.
2930 PolicyPreset PolicyPreset `json:"policy_preset,omitempty"`
2931 Policies Policies `json:"policies,omitempty"`
2932 }
2933
2934 type PolicyRuleSet struct {
2935 Version int64 `json:"version,omitempty"`
2936 Creator string `json:"creator,omitempty"`
2937 Comment string `json:"comment,omitempty"`
2938 }
2939
2940 type PolicyScope struct {
2941 // Must be set exclusively.
2942 Global bool `json:"global,omitempty"`
2943 // Can be combined.
2944 Tenant []*TenantScope `json:"tenant,omitempty"`
2945 Volume []*VolumeScope `json:"volume,omitempty"`
2946 File []*FileScope `json:"file,omitempty"`
2947 FilesOperator PolicyScope_Operator `json:"files_operator,omitempty"`
2948 Client []*ClientScope `json:"client,omitempty"`
2949 }
2950
2951 type PolicyScope_Operator string
2952
2953 const (
2954 PolicyScope_Operator_ALL_OF PolicyScope_Operator = "ALL_OF"
2955 PolicyScope_Operator_ANY_OF PolicyScope_Operator = "ANY_OF"
2956 )
2957
2958 type PublishBucketVolumeRequest struct {
2959 // The S3 exclusive bucket volume to publish.
2960 VolumeUuid string `json:"volume_uuid,omitempty"`
2961 // Make the volume available as S3 bucket using the given name.
2962 BucketName string `json:"bucket_name,omitempty"`
2963 retryPolicy
2964 }
2965
2966 type PublishBucketVolumeResponse struct {
2967 }
2968
2969 type Quota struct {
2970 // Global identifier of this quota pool configuration (should be empty for new quotas)
2971 Id string `json:"id,omitempty"`
2972 // One consuming entity (Quota applies to the first consumer only; the list structure is kept for backward-compatibility).
2973 Consumer []*ConsumingEntity `json:"consumer,omitempty"`
2974 // One or several resource limits
2975 Limits []*Resource `json:"limits,omitempty"`
2976 // Optional list of current quota usage (field is ignored for set/import quota)
2977 CurrentUsage []*Resource `json:"current_usage,omitempty"`
2978 }
2979
2980 type QuotaPoolConfiguration struct {
2981 // One or several resource limits
2982 Resource []*Resource `json:"resource,omitempty"`
2983 // One consuming entity (Quota applies to the first consumer only; the list structure is kept for backward-compatibility).
2984 Consumer []*ConsumingEntity `json:"consumer,omitempty"`
2985 //Global identifier of this quota pool configuration
2986 Id string `json:"id,omitempty"`
2987 }
2988
2989 type RebalanceSettings struct {
2990 // If device disk space usage is below this threshold (5 to overutilized_threshold_percentage) the device is considered underutilized.
2991 UnderutilizedThresholdPercentage int32 `json:"underutilized_threshold_percentage,omitempty"`
2992 // If device disk space usage exceeds this threshold (underutilized_threshold_percentage to 95) the device is considered overutilized.
2993 OverutilizedThresholdPercentage int32 `json:"overutilized_threshold_percentage,omitempty"`
2994 MaxBytesToMove int64 `json:"max_bytes_to_move,omitempty"`
2995 }
2996
2997 type RegenerateDatabaseRequest struct {
2998 Databasetype RegenerateDatabaseRequest_DatabaseType `json:"databaseType,omitempty"`
2999 // Database identifier, like a volume UUID for VOLUME_ACCOUNTING database type for example.
3000 DatabaseIdentifier string `json:"database_identifier,omitempty"`
3001 retryPolicy
3002 }
3003
3004 type RegenerateDatabaseRequest_DatabaseType string
3005
3006 const (
3007 RegenerateDatabaseRequest_DatabaseType_VOLUME_ACCOUNTING RegenerateDatabaseRequest_DatabaseType = "VOLUME_ACCOUNTING"
3008 )
3009
3010 type RegenerateDatabaseResponse struct {
3011 }
3012
3013 type RemoveKeystoreSlotRequest struct {
3014 KeystoreSlotUuid string `json:"keystore_slot_uuid,omitempty"`
3015 retryPolicy
3016 }
3017
3018 type RemoveKeystoreSlotResponse struct {
3019 }
3020
3021 type RemoveRegistryReplicaRequest struct {
3022 // A string containing the device ID of the replica to remove.
3023 DeviceId string `json:"device_id,omitempty"`
3024 // Optional comment field for auditing.
3025 Comment string `json:"comment,omitempty"`
3026 retryPolicy
3027 }
3028
3029 type RemoveRegistryReplicaResponse struct {
3030 }
3031
3032 type ReplicationRedundancyDetailsPolicy struct {
3033 FileStructure ReplicationRedundancyDetailsPolicy_FileStructure `json:"file_structure,omitempty"`
3034 DistributionSchema ReplicationRedundancyDetailsPolicy_DistributionSchema `json:"distribution_schema,omitempty"`
3035 ReplicationFactor int32 `json:"replication_factor,omitempty"`
3036 }
3037
3038 type ReplicationRedundancyDetailsPolicy_DistributionSchema struct {
3039 DataStripeCount int32 `json:"data_stripe_count,omitempty"`
3040 StripingMethod ReplicationRedundancyDetailsPolicy_DistributionSchema_StripingMethod `json:"striping_method,omitempty"`
3041 }
3042
3043 type ReplicationRedundancyDetailsPolicy_DistributionSchema_StripingMethod string
3044
3045 const (
3046 ReplicationRedundancyDetailsPolicy_DistributionSchema_StripingMethod_BLOCK_LEVEL ReplicationRedundancyDetailsPolicy_DistributionSchema_StripingMethod = "BLOCK_LEVEL"
3047 ReplicationRedundancyDetailsPolicy_DistributionSchema_StripingMethod_OBJECT_LEVEL ReplicationRedundancyDetailsPolicy_DistributionSchema_StripingMethod = "OBJECT_LEVEL"
3048 )
3049
3050 type ReplicationRedundancyDetailsPolicy_FileStructure struct {
3051 BlockSizeBytes int32 `json:"block_size_bytes,omitempty"`
3052 ObjectSizeBytes int64 `json:"object_size_bytes,omitempty"`
3053 SegmentSizeBytes int64 `json:"segment_size_bytes,omitempty"`
3054 }
3055
3056 type ResolveGlobalFileIdRequest struct {
3057 GlobalFileId string `json:"global_file_id,omitempty"`
3058 retryPolicy
3059 }
3060
3061 type ResolveGlobalFileIdResponse struct {
3062 VolumeUuid string `json:"volume_uuid,omitempty"`
3063 // path relative to volume uuid
3064 File string `json:"file,omitempty"`
3065 }
3066
3067 type ResolvePolicyRuleNameRequest struct {
3068 PolicyRuleName string `json:"policy_rule_name,omitempty"`
3069 retryPolicy
3070 }
3071
3072 type ResolvePolicyRuleNameResponse struct {
3073 PolicyRuleUuid string `json:"policy_rule_uuid,omitempty"`
3074 }
3075
3076 type ResolveTenantNameRequest struct {
3077 TenantName string `json:"tenant_name,omitempty"`
3078 retryPolicy
3079 }
3080
3081 type ResolveTenantNameResponse struct {
3082 TenantId string `json:"tenant_id,omitempty"`
3083 }
3084
3085 type ResolveVolumeNameRequest struct {
3086 VolumeName string `json:"volume_name,omitempty"`
3087 // Optional tenant domain for the volume
3088 TenantDomain string `json:"tenant_domain,omitempty"`
3089 retryPolicy
3090 }
3091
3092 type ResolveVolumeNameResponse struct {
3093 VolumeUuid string `json:"volume_uuid,omitempty"`
3094 ObsoleteVolumeUuid []string `json:"OBSOLETE_volume_uuid,omitempty"`
3095 }
3096
3097 type Resource struct {
3098 //Type of the resource
3099 Type Resource_Type `json:"type,omitempty"`
3100 //Value of the resource
3101 Value int64 `json:"value,omitempty"`
3102 // Only set for Quota@GetQuotaResponse
3103 LimitType Resource_LimitType `json:"limit_type,omitempty"`
3104 }
3105
3106 type Resource_LimitType string
3107
3108 const (
3109 Resource_LimitType_DEFAULT_QUOTA Resource_LimitType = "DEFAULT_QUOTA"
3110 Resource_LimitType_DERIVED Resource_LimitType = "DERIVED"
3111 Resource_LimitType_LICENSE Resource_LimitType = "LICENSE"
3112 Resource_LimitType_QUOTA Resource_LimitType = "QUOTA"
3113 )
3114
3115 type Resource_Type string
3116
3117 const (
3118 Resource_Type_DIRECTORY_COUNT Resource_Type = "DIRECTORY_COUNT"
3119 Resource_Type_FILE_COUNT Resource_Type = "FILE_COUNT"
3120 Resource_Type_HDD_LOGICAL_DISK_SPACE Resource_Type = "HDD_LOGICAL_DISK_SPACE"
3121 Resource_Type_HDD_PHYSICAL_DISK_SPACE Resource_Type = "HDD_PHYSICAL_DISK_SPACE"
3122 Resource_Type_LOGICAL_DISK_SPACE Resource_Type = "LOGICAL_DISK_SPACE"
3123 Resource_Type_PHYSICAL_DISK_SPACE Resource_Type = "PHYSICAL_DISK_SPACE"
3124 Resource_Type_RESERVED_0 Resource_Type = "RESERVED_0"
3125 Resource_Type_RESERVED_4 Resource_Type = "RESERVED_4"
3126 Resource_Type_RESERVED_7 Resource_Type = "RESERVED_7"
3127 Resource_Type_SSD_LOGICAL_DISK_SPACE Resource_Type = "SSD_LOGICAL_DISK_SPACE"
3128 Resource_Type_SSD_PHYSICAL_DISK_SPACE Resource_Type = "SSD_PHYSICAL_DISK_SPACE"
3129 Resource_Type_VOLUME_COUNT Resource_Type = "VOLUME_COUNT"
3130 )
3131
3132 type RestrictTime struct {
3133 // 0-24
3134 RestrictToHours []int32 `json:"restrict_to_hours,omitempty"`
3135 // 0=Sun, 1=Mon, ...
3136 RestrictToWeekdays []int32 `json:"restrict_to_weekdays,omitempty"`
3137 // 0-53, restrict to weeks of year.
3138 RestrictToWeekOfYear []int32 `json:"restrict_to_week_of_year,omitempty"`
3139 }
3140
3141 type ResumeTaskRequest struct {
3142 // List of one or more IDs of the tasks to be resumed
3143 TaskId []string `json:"task_id,omitempty"`
3144 retryPolicy
3145 }
3146
3147 type ResumeTaskResponse struct {
3148 }
3149
3150 type RetryTaskRequest struct {
3151 // List of one or more IDs of the tasks to be restarted
3152 TaskId []string `json:"task_id,omitempty"`
3153 retryPolicy
3154 }
3155
3156 type RetryTaskResponse struct {
3157 }
3158
3159 type RevokeCertificateRequest struct {
3160 // Certificate fingerprint to revoke
3161 Fingerprint string `json:"fingerprint,omitempty"`
3162 // Reason to revoke according to RFC 5280
3163 CrlReason CrlReason `json:"crl_reason,omitempty"`
3164 retryPolicy
3165 }
3166
3167 type RevokeCertificateResponse struct {
3168 }
3169
3170 type RpcRetryOperationsPolicy struct {
3171 Mode RpcRetryOperationsPolicy_Mode `json:"mode,omitempty"`
3172 }
3173
3174 type RpcRetryOperationsPolicy_Mode string
3175
3176 const (
3177 RpcRetryOperationsPolicy_Mode_RETRY_FOREVER RpcRetryOperationsPolicy_Mode = "RETRY_FOREVER"
3178 RpcRetryOperationsPolicy_Mode_RETRY_FOREVER_UNLESS_FULL RpcRetryOperationsPolicy_Mode = "RETRY_FOREVER_UNLESS_FULL"
3179 RpcRetryOperationsPolicy_Mode_RETRY_INTERACTIVE RpcRetryOperationsPolicy_Mode = "RETRY_INTERACTIVE"
3180 RpcRetryOperationsPolicy_Mode_RETRY_NEVER RpcRetryOperationsPolicy_Mode = "RETRY_NEVER"
3181 )
3182
3183 type RuleAction struct {
3184 ActionType RuleAction_ActionType `json:"action_type,omitempty"`
3185 NotifyEmailAddress []string `json:"notify_email_address,omitempty"`
3186 }
3187
3188 type RuleAction_ActionType string
3189
3190 const (
3191 RuleAction_ActionType_DO_NOTHING RuleAction_ActionType = "DO_NOTHING"
3192 RuleAction_ActionType_OBSOLETE_CLEANUP_DEVICE RuleAction_ActionType = "OBSOLETE_CLEANUP_DEVICE"
3193 RuleAction_ActionType_OBSOLETE_ENFORCE_FILE_PLACEMENT RuleAction_ActionType = "OBSOLETE_ENFORCE_FILE_PLACEMENT"
3194 RuleAction_ActionType_OBSOLETE_ENFORCE_VOLUME_PLACEMENT RuleAction_ActionType = "OBSOLETE_ENFORCE_VOLUME_PLACEMENT"
3195 RuleAction_ActionType_OBSOLETE_MANAGE_REGISTRY_REPLICAS RuleAction_ActionType = "OBSOLETE_MANAGE_REGISTRY_REPLICAS"
3196 RuleAction_ActionType_OBSOLETE_NOTIFY RuleAction_ActionType = "OBSOLETE_NOTIFY"
3197 RuleAction_ActionType_OBSOLETE_REBALANCE_DEVICE RuleAction_ActionType = "OBSOLETE_REBALANCE_DEVICE"
3198 RuleAction_ActionType_OBSOLETE_REGENERATE_DEVICE RuleAction_ActionType = "OBSOLETE_REGENERATE_DEVICE"
3199 RuleAction_ActionType_OBSOLETE_SCRUB_VOLUME RuleAction_ActionType = "OBSOLETE_SCRUB_VOLUME"
3200 RuleAction_ActionType_OBSOLETE_SET_DEVICE_DISCONNECTED RuleAction_ActionType = "OBSOLETE_SET_DEVICE_DISCONNECTED"
3201 RuleAction_ActionType_OBSOLETE_SET_DEVICE_OFFLINE RuleAction_ActionType = "OBSOLETE_SET_DEVICE_OFFLINE"
3202 RuleAction_ActionType_OBSOLETE_TRIGGER_VOLUME_CHECKPOINT RuleAction_ActionType = "OBSOLETE_TRIGGER_VOLUME_CHECKPOINT"
3203 RuleAction_ActionType_RESET_VOLUME_ACCOUNTING RuleAction_ActionType = "RESET_VOLUME_ACCOUNTING"
3204 RuleAction_ActionType_UNREGISTER_SERVICE RuleAction_ActionType = "UNREGISTER_SERVICE"
3205 )
3206
3207 type RuleConfiguration struct {
3208 RuleIdentifier string `json:"rule_identifier,omitempty"`
3209 // A flag indicating whether the rule is enabled.
3210 Enabled bool `json:"enabled,omitempty"`
3211 // Number of seconds to wait before alerting.
3212 AlertAfterSeconds int32 `json:"alert_after_seconds,omitempty"`
3213 // Time restrictions for alerting.
3214 RestrictTime RestrictTime `json:"restrict_time,omitempty"`
3215 // Actions to take when alerting.
3216 Actions []*RuleAction `json:"actions,omitempty"`
3217 }
3218
3219 type RuleDescriptor struct {
3220 RuleIdentifier string `json:"rule_identifier,omitempty"`
3221 AlertConfiguration AlertConfiguration `json:"alert_configuration,omitempty"`
3222 SensorIdentifier string `json:"sensor_identifier,omitempty"`
3223 SensorParameters []string `json:"sensor_parameters,omitempty"`
3224 // The description of the sensor's working (with placeholders)
3225 SensorDescription string `json:"sensor_description,omitempty"`
3226 // The description of what state has been detected (with placeholders)
3227 SensorMessage string `json:"sensor_message,omitempty"`
3228 // What the user should do manually
3229 SensorSuggestedAction string `json:"sensor_suggested_action,omitempty"`
3230 Actions []*RuleAction `json:"actions,omitempty"`
3231 // The set of supported actions for the rule.
3232 SupportedActions []*RuleAction `json:"supported_actions,omitempty"`
3233 Severity FiringRule_RuleSeverity `json:"severity,omitempty"`
3234 }
3235
3236 type ScrubSettings struct {
3237 // Obsolete since release 2.6.
3238 SkipOpenFiles bool `json:"skip_open_files,omitempty"`
3239 }
3240
3241 type ServiceDescription struct {
3242 ServiceUuid string `json:"service_uuid,omitempty"`
3243 ServiceName string `json:"service_name,omitempty"`
3244 // The service's network addresses.
3245 NetworkAddresses []*ServiceDescription_NetworkEndpoint `json:"network_addresses,omitempty"`
3246 // HTTP status page server endpoint.
3247 StatusServer ServiceDescription_NetworkEndpoint `json:"status_server,omitempty"`
3248 // service type
3249 ServiceType ServiceType `json:"service_type,omitempty"`
3250 // service's last seen time stamp in ms
3251 LastSeenTimestampMs int64 `json:"last_seen_timestamp_ms,omitempty"`
3252 // service availability
3253 IsAvailable bool `json:"is_available,omitempty"`
3254 // Service has a registered network location
3255 IsRegistered bool `json:"is_registered,omitempty"`
3256 IsPrimary bool `json:"is_primary,omitempty"`
3257 FailureDomainInfos []*FailureDomainInfo `json:"failure_domain_infos,omitempty"`
3258 //additional service information
3259 AdditionalServiceAddress ServiceDescription_NetworkEndpoint `json:"additional_service_address,omitempty"`
3260 RdmaEnabled bool `json:"rdma_enabled,omitempty"`
3261 }
3262
3263 type ServiceDescription_NetworkEndpoint struct {
3264 Protocol ServiceDescription_NetworkEndpoint_Protocol `json:"protocol,omitempty"`
3265 //IP address of the server.
3266 IpAddress string `json:"ip_address,omitempty"`
3267 // TCP/UDP port number.
3268 Port int32 `json:"port,omitempty"`
3269 }
3270
3271 type ServiceDescription_NetworkEndpoint_Protocol string
3272
3273 const (
3274 ServiceDescription_NetworkEndpoint_Protocol_HTTP ServiceDescription_NetworkEndpoint_Protocol = "HTTP"
3275 ServiceDescription_NetworkEndpoint_Protocol_HTTPS ServiceDescription_NetworkEndpoint_Protocol = "HTTPS"
3276 ServiceDescription_NetworkEndpoint_Protocol_NFS ServiceDescription_NetworkEndpoint_Protocol = "NFS"
3277 ServiceDescription_NetworkEndpoint_Protocol_PLAIN ServiceDescription_NetworkEndpoint_Protocol = "PLAIN"
3278 )
3279
3280 type ServiceStatusServerNetworkEndpoint struct {
3281 // related to HTTP status server FQDN or IP address of the server.
3282 Hostname string `json:"hostname,omitempty"`
3283 // TCP/UDP port number.
3284 Port int32 `json:"port,omitempty"`
3285 // service type.
3286 ServiceType ServiceType `json:"service_type,omitempty"`
3287 // service's last seen time stamp in ms
3288 LastSeenTimestampMs int64 `json:"last_seen_timestamp_ms,omitempty"`
3289 // service availability
3290 IsAvailable bool `json:"is_available,omitempty"`
3291 //service uuid
3292 ServiceUuid string `json:"service_uuid,omitempty"`
3293 // service name (display host name)
3294 ServiceName string `json:"service_name,omitempty"`
3295 IsPrimary bool `json:"is_primary,omitempty"`
3296 }
3297
3298 type SetCertificateOwnerRequest struct {
3299 // Certificate certificate fingerprint
3300 Fingerprint string `json:"fingerprint,omitempty"`
3301 // Tenant id
3302 TenantId string `json:"tenant_id,omitempty"`
3303 retryPolicy
3304 }
3305
3306 type SetCertificateOwnerResponse struct {
3307 }
3308
3309 type SetCertificateSubjectRequest struct {
3310 // X.509 certificate fingerprint
3311 Fingerprint string `json:"fingerprint,omitempty"`
3312 // Certificate subject description
3313 Subject CertificateSubject `json:"subject,omitempty"`
3314 retryPolicy
3315 }
3316
3317 type SetCertificateSubjectResponse struct {
3318 }
3319
3320 type SetConfigurationRequest struct {
3321 ConfigurationType ConfigurationType `json:"configuration_type,omitempty"`
3322 ConfigurationName string `json:"configuration_name,omitempty"`
3323 VolumeConfiguration VolumeConfiguration `json:"volume_configuration,omitempty"`
3324 FailureDomainConfiguration FailureDomainConfiguration `json:"failure_domain_configuration,omitempty"`
3325 UserConfiguration UserConfiguration `json:"user_configuration,omitempty"`
3326 SystemConfiguration SystemConfiguration `json:"system_configuration,omitempty"`
3327 RuleConfiguration RuleConfiguration `json:"rule_configuration,omitempty"`
3328 // Obsolete since release 1.4. Use setTenant() instead.
3329 TenantConfiguration TenantDomainConfiguration `json:"tenant_configuration,omitempty"`
3330 retryPolicy
3331 }
3332
3333 type SetConfigurationResponse struct {
3334 }
3335
3336 type SetEncryptedVolumeKeyRequest struct {
3337 VolumeUuid string `json:"volume_uuid,omitempty"`
3338 KeyVersion int32 `json:"key_version,omitempty"`
3339 // not required if this is the first key for the volume.
3340 ExistingKeystoreSlotUuid string `json:"existing_keystore_slot_uuid,omitempty"`
3341 EncodedExistingKeystoreSlotPasswordHash string `json:"encoded_existing_keystore_slot_password_hash,omitempty"`
3342 NewEncryptedVolumeKey EncodedEncryptedKey `json:"new_encrypted_volume_key,omitempty"`
3343 NewKeystoreSlotUuid string `json:"new_keystore_slot_uuid,omitempty"`
3344 EncodedNewKeystoreSlotPasswordHash string `json:"encoded_new_keystore_slot_password_hash,omitempty"`
3345 retryPolicy
3346 }
3347
3348 type SetEncryptedVolumeKeyResponse struct {
3349 }
3350
3351 type SetLabelsRequest struct {
3352 Label []*Label `json:"label,omitempty"`
3353 retryPolicy
3354 }
3355
3356 type SetLabelsResponse struct {
3357 }
3358
3359 type SetNotificationRuleRequest struct {
3360 Rule NotificationRule `json:"rule,omitempty"`
3361 retryPolicy
3362 }
3363
3364 type SetNotificationRuleResponse struct {
3365 }
3366
3367 type SetQuotaRequest struct {
3368 Quotas []*Quota `json:"quotas,omitempty"`
3369 retryPolicy
3370 }
3371
3372 type SetQuotaResponse struct {
3373 }
3374
3375 type SetTenantRequest struct {
3376 Tenant TenantDomainConfiguration `json:"tenant,omitempty"`
3377 // Labels to set for the tenant prior to its creation. Name and value are sufficient.
3378 OnCreateLabel []*Label `json:"on_create_label,omitempty"`
3379 retryPolicy
3380 }
3381
3382 type SetTenantResponse struct {
3383 TenantId string `json:"tenant_id,omitempty"`
3384 }
3385
3386 type SilenceAlertRequest struct {
3387 AlertIdentifier string `json:"alert_identifier,omitempty"`
3388 Qualifiers FiringRule `json:"qualifiers,omitempty"`
3389 SilenceForS int64 `json:"silence_for_s,omitempty"`
3390 retryPolicy
3391 }
3392
3393 type SilenceAlertResponse struct {
3394 }
3395
3396 type SpecialFilePlacementPolicy struct {
3397 PreferClientLocalDevices bool `json:"prefer_client_local_devices,omitempty"`
3398 TryToPlaceStripesInSameMachine bool `json:"try_to_place_stripes_in_same_machine,omitempty"`
3399 }
3400
3401 type StartNetworkTestRequest struct {
3402 retryPolicy
3403 }
3404
3405 type StartNetworkTestResponse struct {
3406 }
3407
3408 type SubjectList struct {
3409 Type SubjectList_Type `json:"type,omitempty"`
3410 // in case of UNFORMATTED_DEVICE subjectId = serviceUuid.concat(path) in case of SNAPSHOT subjectId = volumeUuid:snapshotName
3411 SubjectId []string `json:"subject_id,omitempty"`
3412 // is relevant for UNFORMATTED_DEVICE case
3413 Devicetype MakeDeviceSettings_DeviceType `json:"deviceType,omitempty"`
3414 }
3415
3416 type SubjectList_Type string
3417
3418 const (
3419 SubjectList_Type_DEVICE SubjectList_Type = "DEVICE"
3420 SubjectList_Type_SNAPSHOT SubjectList_Type = "SNAPSHOT"
3421 SubjectList_Type_TASK SubjectList_Type = "TASK"
3422 SubjectList_Type_UNFORMATTED_DEVICE SubjectList_Type = "UNFORMATTED_DEVICE"
3423 SubjectList_Type_VOLUME SubjectList_Type = "VOLUME"
3424 )
3425
3426 type SystemConfiguration struct {
3427 Smtp SystemConfiguration_SmtpServerConfig `json:"smtp,omitempty"`
3428 // Configuration for the Quobyte network
3429 Network SystemConfiguration_NetworkConfig `json:"network,omitempty"`
3430 // Configuration for the LDAP user database
3431 Ldap []*SystemConfiguration_LdapServerConfig `json:"ldap,omitempty"`
3432 // Configuration for user authentication
3433 Security SystemConfiguration_SecurityConfig `json:"security,omitempty"`
3434 //License key for this installation
3435 LicenseKey string `json:"license_key,omitempty"`
3436 // Configuration for the Keystone user database
3437 Keystone SystemConfiguration_KeystoneConfig `json:"keystone,omitempty"`
3438 Registry SystemConfiguration_RegistryConfig `json:"registry,omitempty"`
3439 // Obsolete, use tuned profiles
3440 ObsoleteEnableLowLatencyMode bool `json:"OBSOLETE_enable_low_latency_mode,omitempty"`
3441 S3Proxy SystemConfiguration_S3ProxyConfig `json:"s3_proxy,omitempty"`
3442 QnsConfig SystemConfiguration_QuobyteNameServiceConfig `json:"qns_config,omitempty"`
3443 HealthManagerConfig SystemConfiguration_HealthManagerConfig `json:"health_manager_config,omitempty"`
3444 DeviceManagerConfig SystemConfiguration_DeviceManagerConfig `json:"device_manager_config,omitempty"`
3445 PolicyEngineConfig SystemConfiguration_PolicyEngineConfig `json:"policy_engine_config,omitempty"`
3446 ClientConfiguration SystemConfiguration_ClientConfiguration `json:"client_configuration,omitempty"`
3447 DnsServerConfig SystemConfiguration_DnsServerConfig `json:"dns_server_config,omitempty"`
3448 ClusterConfiguration SystemConfiguration_ClusterConfiguration `json:"cluster_configuration,omitempty"`
3449 }
3450
3451 type SystemConfiguration_AutomaticReleaseRolloutPolicy struct {
3452 Enable bool `json:"enable,omitempty"`
3453 RestrictToMaintenanceWindow bool `json:"restrict_to_maintenance_window,omitempty"`
3454 }
3455
3456 type SystemConfiguration_CatchupPolicy struct {
3457 Enable bool `json:"enable,omitempty"`
3458 }
3459
3460 type SystemConfiguration_CleanupPolicy struct {
3461 Enable bool `json:"enable,omitempty"`
3462 // min time between a successful cleanup and the scheduling of a new task
3463 IntervalS int64 `json:"interval_s,omitempty"`
3464 // if true, cleanup tasks will only be started during maintenance window
3465 RestrictToMaintenanceWindow bool `json:"restrict_to_maintenance_window,omitempty"`
3466 // max parallel cleanup tasks scheduled per service
3467 LimitMaxTasksPerService int32 `json:"limit_max_tasks_per_service,omitempty"`
3468 // global max parallel cleanup tasks scheduled by health manager
3469 LimitMaxTasks int32 `json:"limit_max_tasks,omitempty"`
3470 }
3471
3472 type SystemConfiguration_ClientConfiguration struct {
3473 EnableMinidumpUploads bool `json:"enable_minidump_uploads,omitempty"`
3474 }
3475
3476 type SystemConfiguration_ClusterConfiguration struct {
3477 ClusterName string `json:"cluster_name,omitempty"`
3478 }
3479
3480 type SystemConfiguration_DeviceManagerConfig struct {
3481 // Initial state of newly created devices. I.e. after a MakeDevice, the new devices start OFFLINE / ONLINE.
3482 SetCreatedDataDevicesOnline bool `json:"set_created_data_devices_online,omitempty"`
3483 SetCreatedMetadataDevicesOnline bool `json:"set_created_metadata_devices_online,omitempty"`
3484 FsckBeforeMount SystemConfiguration_DeviceManagerConfig_AutoFilesSystemCheckOnDeviceMount `json:"fsck_before_mount,omitempty"`
3485 }
3486
3487 type SystemConfiguration_DeviceManagerConfig_AutoFilesSystemCheckOnDeviceMount string
3488
3489 const (
3490 SystemConfiguration_DeviceManagerConfig_AutoFilesSystemCheckOnDeviceMount_ALWAYS SystemConfiguration_DeviceManagerConfig_AutoFilesSystemCheckOnDeviceMount = "ALWAYS"
3491 SystemConfiguration_DeviceManagerConfig_AutoFilesSystemCheckOnDeviceMount_DISABLE SystemConfiguration_DeviceManagerConfig_AutoFilesSystemCheckOnDeviceMount = "DISABLE"
3492 SystemConfiguration_DeviceManagerConfig_AutoFilesSystemCheckOnDeviceMount_PER_DEVICE SystemConfiguration_DeviceManagerConfig_AutoFilesSystemCheckOnDeviceMount = "PER_DEVICE"
3493 )
3494
3495 type SystemConfiguration_DnsServerConfig struct {
3496 Enable bool `json:"enable,omitempty"`
3497 }
3498
3499 type SystemConfiguration_EnforcePlacementPolicy struct {
3500 Enable bool `json:"enable,omitempty"`
3501 RestrictToMaintenanceWindow bool `json:"restrict_to_maintenance_window,omitempty"`
3502 IntervalS int64 `json:"interval_s,omitempty"`
3503 }
3504
3505 type SystemConfiguration_EraseSnapshotPolicy struct {
3506 Enable bool `json:"enable,omitempty"`
3507 RestrictToMaintenanceWindow bool `json:"restrict_to_maintenance_window,omitempty"`
3508 }
3509
3510 type SystemConfiguration_EraseVolumePolicy struct {
3511 RestrictToMaintenanceWindow bool `json:"restrict_to_maintenance_window,omitempty"`
3512 }
3513
3514 type SystemConfiguration_FstrimPolicy struct {
3515 Enable bool `json:"enable,omitempty"`
3516 // min time between a successful fstrim and the scheduling of a new task
3517 IntervalS int64 `json:"interval_s,omitempty"`
3518 // if true, fstrim tasks will only be started during maintenance window
3519 RestrictToMaintenanceWindow bool `json:"restrict_to_maintenance_window,omitempty"`
3520 // max parallel fstrim tasks scheduled per service
3521 LimitMaxTasksPerService int32 `json:"limit_max_tasks_per_service,omitempty"`
3522 // global max parallel fstrim tasks scheduled by health manager
3523 LimitMaxTasks int32 `json:"limit_max_tasks,omitempty"`
3524 }
3525
3526 type SystemConfiguration_HandleDefectiveDevicesPolicy struct {
3527 // disables the execution of the rule
3528 Enable bool `json:"enable,omitempty"`
3529 // action to be taken on defective devices. Default is to set device to REGENERATE
3530 Action SystemConfiguration_HandleDefectiveDevicesPolicy_Action `json:"action,omitempty"`
3531 // don't start more regenerate tasks if limit_max_tasks regenerate tasks are already running
3532 LimitMaxTasks int32 `json:"limit_max_tasks,omitempty"`
3533 }
3534
3535 type SystemConfiguration_HandleDefectiveDevicesPolicy_Action string
3536
3537 const (
3538 SystemConfiguration_HandleDefectiveDevicesPolicy_Action_NO_ACTION SystemConfiguration_HandleDefectiveDevicesPolicy_Action = "NO_ACTION"
3539 SystemConfiguration_HandleDefectiveDevicesPolicy_Action_REGENERATE_DEVICE SystemConfiguration_HandleDefectiveDevicesPolicy_Action = "REGENERATE_DEVICE"
3540 SystemConfiguration_HandleDefectiveDevicesPolicy_Action_TAKE_OFFLINE SystemConfiguration_HandleDefectiveDevicesPolicy_Action = "TAKE_OFFLINE"
3541 )
3542
3543 type SystemConfiguration_HealthManagerConfig struct {
3544 Enable bool `json:"enable,omitempty"`
3545 // Some policies are restricted to run during a maintenance window. Define this window here.
3546 MaintenanceWindow []*RestrictTime `json:"maintenance_window,omitempty"`
3547 RebalancePolicy SystemConfiguration_RebalancePolicy `json:"rebalance_policy,omitempty"`
3548 CatchupPolicy SystemConfiguration_CatchupPolicy `json:"catchup_policy,omitempty"`
3549 FstrimPolicy SystemConfiguration_FstrimPolicy `json:"fstrim_policy,omitempty"`
3550 CleanupPolicy SystemConfiguration_CleanupPolicy `json:"cleanup_policy,omitempty"`
3551 HandleDefectiveDevicesPolicy SystemConfiguration_HandleDefectiveDevicesPolicy `json:"handle_defective_devices_policy,omitempty"`
3552 UpdateStatesOfDrainedDevicesPolicy SystemConfiguration_UpdateStatesOfDrainedDevicesPolicy `json:"update_states_of_drained_devices_policy,omitempty"`
3553 ScrubPolicy SystemConfiguration_ScrubPolicy `json:"scrub_policy,omitempty"`
3554 RegenerateUnavailableDevicesPolicy SystemConfiguration_RegenerateUnavailableDevicesPolicy `json:"regenerate_unavailable_devices_policy,omitempty"`
3555 EnforcePlacementPolicy SystemConfiguration_EnforcePlacementPolicy `json:"enforce_placement_policy,omitempty"`
3556 EraseSnapshotPolicy SystemConfiguration_EraseSnapshotPolicy `json:"erase_snapshot_policy,omitempty"`
3557 EraseVolumePolicy SystemConfiguration_EraseVolumePolicy `json:"erase_volume_policy,omitempty"`
3558 ResetAccountingPolicy SystemConfiguration_ResetAccountingPolicy `json:"reset_accounting_policy,omitempty"`
3559 AutomaticReleaseRolloutPolicy SystemConfiguration_AutomaticReleaseRolloutPolicy `json:"automatic_release_rollout_policy,omitempty"`
3560 TieringPolicy SystemConfiguration_TieringPolicy `json:"tiering_policy,omitempty"`
3561 }
3562
3563 type SystemConfiguration_KeystoneConfig struct {
3564 //Name of the Keystone server
3565 Hostname string `json:"hostname,omitempty"`
3566 //Admin port of the Keystone identity API (default is 35357)
3567 Port int32 `json:"port,omitempty"`
3568 // ID of a Keystone admin user
3569 AdminUserId string `json:"admin_user_id,omitempty"`
3570 // Password for the Keystone user
3571 AdminPassword string `json:"admin_password,omitempty"`
3572 //ID of the Keystone project used for Quobyte
3573 QuobyteProjectId string `json:"quobyte_project_id,omitempty"`
3574 // Mapping S3 accounts to Openstack tenant projects rather than domains
3575 AlternativeMapping bool `json:"alternative_mapping,omitempty"`
3576 // To disable the backend
3577 Disabled bool `json:"disabled,omitempty"`
3578 }
3579
3580 type SystemConfiguration_LdapServerConfig struct {
3581 //The LDAP server URL
3582 Url string `json:"url,omitempty"`
3583 //The LDAP base DN
3584 BaseDn string `json:"base_dn,omitempty"`
3585 //The LDAP bind user credentials DN
3586 BindUserDn string `json:"bind_user_dn,omitempty"`
3587 // The LDAP bind user credentials secret
3588 BindUserSecret string `json:"bind_user_secret,omitempty"`
3589 // Source from where the user role should be obtained
3590 UserAttributesSource SystemConfiguration_LdapServerConfig_DataSource `json:"user_attributes_source,omitempty"`
3591 // Mapping of ldap groups to user attributes (if role_source==LDAP_GROUP_MEMBERSHIP)
3592 GroupsToAttributesMapping []*GroupsToAttributesMapping `json:"groups_to_attributes_mapping,omitempty"`
3593 //Relative distinguished names (RDN) for groups used for the LDAP_GROUP_MEMBERSHIP search.
3594 GroupRdn []string `json:"group_rdn,omitempty"`
3595 //Attribute name of user RDN
3596 UserRdnAttributeName string `json:"user_rdn_attribute_name,omitempty"`
3597 // Enables/disables "referral-follow" feature for LDAP client (in case of multiple LDAP-servers should be enabled)
3598 ReferralFollow bool `json:"referral_follow,omitempty"`
3599 // A unique id of this ldap backend
3600 Id string `json:"id,omitempty"`
3601 // A given name of this ldap backend
3602 Name string `json:"name,omitempty"`
3603 // To disable the backend
3604 Disabled bool `json:"disabled,omitempty"`
3605 }
3606
3607 type SystemConfiguration_LdapServerConfig_DataSource string
3608
3609 const (
3610 SystemConfiguration_LdapServerConfig_DataSource_LDAP_ATTRIBUTE SystemConfiguration_LdapServerConfig_DataSource = "LDAP_ATTRIBUTE"
3611 SystemConfiguration_LdapServerConfig_DataSource_LDAP_GROUP_MEMBERSHIP SystemConfiguration_LdapServerConfig_DataSource = "LDAP_GROUP_MEMBERSHIP"
3612 SystemConfiguration_LdapServerConfig_DataSource_LOCAL_DATABASE SystemConfiguration_LdapServerConfig_DataSource = "LOCAL_DATABASE"
3613 )
3614
3615 type SystemConfiguration_NetworkConfig struct {
3616 //White-listed networks for service-service communication
3617 EnabledServiceNetworks []string `json:"enabled_service_networks,omitempty"`
3618 //White-listed networks for client-service communication (if empty, the service network is used)
3619 EnabledClientNetworks []string `json:"enabled_client_networks,omitempty"`
3620 // Pairs within these networks will encrypt their communication
3621 EncryptedNetworkPairs []*SystemConfiguration_NetworkConfig_NetworkList `json:"encrypted_network_pairs,omitempty"`
3622 }
3623
3624 type SystemConfiguration_NetworkConfig_NetworkList struct {
3625 Network []string `json:"network,omitempty"`
3626 }
3627
3628 type SystemConfiguration_PolicyEngineConfig struct {
3629 Enable bool `json:"enable,omitempty"`
3630 }
3631
3632 type SystemConfiguration_QuobyteNameServiceConfig struct {
3633 Id string `json:"id,omitempty"`
3634 Secret string `json:"secret,omitempty"`
3635 }
3636
3637 type SystemConfiguration_RebalancePolicy struct {
3638 // disables the execution of the rule
3639 Enable bool `json:"enable,omitempty"`
3640 // parameter for dynamic threshold of "device too full" detection. The emptiest and the fullest device are determined and if (fullest% - emptiest% > keep_usage_within_band_fraction * 100), a rebalance is started for the fullest devices until all device fills are in the rebalance_band again.
3641 KeepUsageWithinBandFraction float32 `json:"keep_usage_within_band_fraction,omitempty"`
3642 // rebalance tasks for data devices are started with one source device and multiple targets. limit_max_tasks sets the limits the number of source devices rebalancing in parallel
3643 LimitMaxRebalanceDataDeviceTasks int32 `json:"limit_max_rebalance_data_device_tasks,omitempty"`
3644 // if true, rebalance tasks will only be started during maintenance window
3645 RestrictToMaintenanceWindow bool `json:"restrict_to_maintenance_window,omitempty"`
3646 // minimal time between a successful rebalance task and a retry
3647 RetrySuccessfulPeriodS int64 `json:"retry_successful_period_s,omitempty"`
3648 // minimal time between an unsuccessful rebalance task and a retry
3649 RetryFailedPeriodS int64 `json:"retry_failed_period_s,omitempty"`
3650 // rebalance tasks will max move X bytes of the device's content to enable shorter turn-around times.
3651 MaxBytesToMove int64 `json:"max_bytes_to_move,omitempty"`
3652 }
3653
3654 type SystemConfiguration_RegenerateUnavailableDevicesPolicy struct {
3655 Enable bool `json:"enable,omitempty"`
3656 // Grace period after the device was detected to be unavailable until a remove device task is started.
3657 DeviceUnavailableGracePeriodS int64 `json:"device_unavailable_grace_period_s,omitempty"`
3658 RestrictToMaintenanceWindow bool `json:"restrict_to_maintenance_window,omitempty"`
3659 // don't start more regenerate tasks if limit_max_tasks regenerate tasks are already running
3660 LimitMaxTasks int32 `json:"limit_max_tasks,omitempty"`
3661 }
3662
3663 type SystemConfiguration_RegistryConfig struct {
3664 // Desired number of replicas for the registry
3665 ReplicationFactor int32 `json:"replication_factor,omitempty"`
3666 }
3667
3668 type SystemConfiguration_ResetAccountingPolicy struct {
3669 Enable bool `json:"enable,omitempty"`
3670 RestrictToMaintenanceWindow bool `json:"restrict_to_maintenance_window,omitempty"`
3671 SetVolumesOfflineDuringReset bool `json:"set_volumes_offline_during_reset,omitempty"`
3672 }
3673
3674 type SystemConfiguration_S3ProxyConfig struct {
3675 Ldap SystemConfiguration_LdapServerConfig `json:"ldap,omitempty"`
3676 Keystone SystemConfiguration_KeystoneConfig `json:"keystone,omitempty"`
3677 AuthenticationType SystemConfiguration_S3ProxyConfig_AuthenticationType `json:"authentication_type,omitempty"`
3678 HttpPort int32 `json:"http_port,omitempty"`
3679 HttpsPort int32 `json:"https_port,omitempty"`
3680 RedirectToHttps bool `json:"redirect_to_https,omitempty"`
3681 Hostname []string `json:"hostname,omitempty"`
3682 // Enables the S3 browser UI when set, accessible as subdomain of one of the configured hosts, i.e. http[s]://<browser_bucket_name>.<hostname>/index.html
3683 BrowserBucketName string `json:"browser_bucket_name,omitempty"`
3684 // Create a new volume for each create bucket initiated via the S3 Service API, if set true.
3685 CreateVolumePerBucket bool `json:"create_volume_per_bucket,omitempty"`
3686 }
3687
3688 type SystemConfiguration_S3ProxyConfig_AuthenticationType string
3689
3690 const (
3691 SystemConfiguration_S3ProxyConfig_AuthenticationType_KEYSTONE SystemConfiguration_S3ProxyConfig_AuthenticationType = "KEYSTONE"
3692 SystemConfiguration_S3ProxyConfig_AuthenticationType_LDAP SystemConfiguration_S3ProxyConfig_AuthenticationType = "LDAP"
3693 SystemConfiguration_S3ProxyConfig_AuthenticationType_PASSWORD_FILE SystemConfiguration_S3ProxyConfig_AuthenticationType = "PASSWORD_FILE"
3694 SystemConfiguration_S3ProxyConfig_AuthenticationType_REGISTRY_USER_DATABASE SystemConfiguration_S3ProxyConfig_AuthenticationType = "REGISTRY_USER_DATABASE"
3695 )
3696
3697 type SystemConfiguration_ScrubPolicy struct {
3698 // disables the execution of the rule
3699 Enable bool `json:"enable,omitempty"`
3700 // min time between the last successful scrub of a volume and the scheduling of a new task
3701 IntervalS int64 `json:"interval_s,omitempty"`
3702 // if true, scrub tasks will only be started during maintenance mode
3703 RestrictToMaintenanceWindow bool `json:"restrict_to_maintenance_window,omitempty"`
3704 // limit how many scrub subtasks will be run in parallel.
3705 LimitMaxTasks int32 `json:"limit_max_tasks,omitempty"`
3706 }
3707
3708 type SystemConfiguration_SecurityConfig struct {
3709 ObsoleteUserDatabase string `json:"OBSOLETE_user_database,omitempty"`
3710 // Global lifetime restriction (sec) for access keys. If not set or 0 - no global restriction
3711 MaxAccessKeyLifetimeS int64 `json:"max_access_key_lifetime_s,omitempty"`
3712 }
3713
3714 type SystemConfiguration_SmtpServerConfig struct {
3715 Host string `json:"host,omitempty"`
3716 Port int32 `json:"port,omitempty"`
3717 Username string `json:"username,omitempty"`
3718 Password string `json:"password,omitempty"`
3719 UseTls bool `json:"use_tls,omitempty"`
3720 DefaultSender string `json:"default_sender,omitempty"`
3721 }
3722
3723 type SystemConfiguration_TieringPolicy struct {
3724 Enable bool `json:"enable,omitempty"`
3725 RestrictToMaintenanceWindow bool `json:"restrict_to_maintenance_window,omitempty"`
3726 IntervalS int64 `json:"interval_s,omitempty"`
3727 }
3728
3729 type SystemConfiguration_UpdateStatesOfDrainedDevicesPolicy struct {
3730 Enable bool `json:"enable,omitempty"`
3731 }
3732
3733 type SystemStatistics struct {
3734 // Number of tasks in the system. Number of FINISHED tasks might only contain recently completed tasks
3735 TaskCounts []*SystemStatistics_TaskCount `json:"task_counts,omitempty"`
3736 //Number of registered devices
3737 RegisteredDeviceCount int32 `json:"registered_device_count,omitempty"`
3738 //Number of devices currently not registered with a service
3739 UnassociatedDeviceCount int32 `json:"unassociated_device_count,omitempty"`
3740 //Number of devices that are {ONLINE,OFFLINE,DRAIN} but are not available (service down or unassociated)
3741 UnavailableDeviceCount int32 `json:"unavailable_device_count,omitempty"`
3742 //Number of devices that are considered gone for good
3743 DecommissionedDevice int32 `json:"decommissioned_device,omitempty"`
3744 // Number of volumes in the system.
3745 VolumeCount int32 `json:"volume_count,omitempty"`
3746 // Overall physical storage capacity in bytes
3747 TotalPhysicalCapacity int64 `json:"total_physical_capacity,omitempty"`
3748 // Current overall physical usage in bytes
3749 TotalPhysicalUsage int64 `json:"total_physical_usage,omitempty"`
3750 // Overall logical storage capacity in bytes
3751 TotalLogicalCapacity int64 `json:"total_logical_capacity,omitempty"`
3752 // Current overall logical usage in bytes
3753 TotalLogicalUsage int64 `json:"total_logical_usage,omitempty"`
3754 }
3755
3756 type SystemStatistics_TaskCount struct {
3757 TaskState TaskState `json:"task_state,omitempty"`
3758 TaskCount int32 `json:"task_count,omitempty"`
3759 HasErrors bool `json:"has_errors,omitempty"`
3760 }
3761
3762 type TagBasedPlacementPolicy struct {
3763 RequiredTag []string `json:"required_tag,omitempty"`
3764 ForbiddenTag []string `json:"forbidden_tag,omitempty"`
3765 }
3766
3767 type TaskInfo struct {
3768 TaskId string `json:"task_id,omitempty"`
3769 TaskType TaskType `json:"task_type,omitempty"`
3770 State TaskState `json:"state,omitempty"`
3771 // Start date of task (ms since epoch), only set if the task is not SCHEDULED.
3772 BeginTimestampMs int64 `json:"begin_timestamp_ms,omitempty"`
3773 // Completion date of task (ms since epoch), only set if the task is FINISHED, CANCELLED, FAILED.
3774 EndTimestampMs int64 `json:"end_timestamp_ms,omitempty"`
3775 // Human readable error message is only set if state == FAILED.
3776 ErrorMessage string `json:"error_message,omitempty"`
3777 // Contains the 'why' of the running task.
3778 Comment string `json:"comment,omitempty"`
3779 // Scope.
3780 SuperTaskId string `json:"super_task_id,omitempty"`
3781 Scope []*SubjectList `json:"scope,omitempty"`
3782 // Progress indicators.
3783 Progress TaskInfo_Progress `json:"progress,omitempty"`
3784 Performance []*TaskInfo_Performance `json:"performance,omitempty"`
3785 // Listing of errorneous files/volumes (subtasks only).
3786 ErrorDetails []*TaskInfo_ErrorDetails `json:"error_details,omitempty"`
3787 OwnerType TaskInfo_OwnerType `json:"owner_type,omitempty"`
3788 MakeDeviceSettings MakeDeviceSettings `json:"make_device_settings,omitempty"`
3789 CopyFileSettings CopyFilesSettings `json:"copy_file_settings,omitempty"`
3790 // Summary for the origins of pending long running operations.
3791 ExecutionProblem TaskInfo_ExecutionProblem `json:"execution_problem,omitempty"`
3792 }
3793
3794 type TaskInfo_OwnerType string
3795
3796 const (
3797 TaskInfo_OwnerType_HEALTH_MANAGER TaskInfo_OwnerType = "HEALTH_MANAGER"
3798 TaskInfo_OwnerType_USER TaskInfo_OwnerType = "USER"
3799 )
3800
3801 type TaskInfo_ErrorDetails struct {
3802 Description string `json:"description,omitempty"`
3803 Item []string `json:"item,omitempty"`
3804 }
3805
3806 type TaskInfo_ExecutionProblem struct {
3807 // Counter and list of identifiers for devices hindering operations due to their mode i.e. != ONLINE or DRAIN
3808 OperationsForOfflineDevice int32 `json:"operations_for_offline_device,omitempty"`
3809 OfflineDeviceId []int64 `json:"offline_device_id,omitempty"`
3810 // Counter and list of identifiers for devices hindering operations due to their fill
3811 OperationsForFullDevice int32 `json:"operations_for_full_device,omitempty"`
3812 FullDeviceId []int64 `json:"full_device_id,omitempty"`
3813 // Counter and list of identifiers for devices hindering operations due to being defective
3814 OperationsForDefectiveDevice int32 `json:"operations_for_defective_device,omitempty"`
3815 DefectiveDeviceId []int64 `json:"defective_device_id,omitempty"`
3816 // Counter and list of identifiers for devices hindering operations due to being unmounted
3817 OperationsForUnmountedDevice int32 `json:"operations_for_unmounted_device,omitempty"`
3818 UnmountedDeviceId []int64 `json:"unmounted_device_id,omitempty"`
3819 // Counter and list of identifiers for devices hindering operations due to being not registered
3820 OperationsForUnregisteredDevice int32 `json:"operations_for_unregistered_device,omitempty"`
3821 UnregisteredDeviceId []int64 `json:"unregistered_device_id,omitempty"`
3822 // Counter and list of identifiers for devices hindering operations due to their utilization
3823 OperationsForBusyDevice int32 `json:"operations_for_busy_device,omitempty"`
3824 BusyDevice []int64 `json:"busy_device,omitempty"`
3825 // Counter and list of identifiers for volumes hindering operations due to not being operational
3826 OperationsForNoPrimaryVolume int32 `json:"operations_for_no_primary_volume,omitempty"`
3827 NoPrimaryVolumeUuid []string `json:"no_primary_volume_uuid,omitempty"`
3828 // Counter and list of identifiers for volumes hindering operations due to being deleted
3829 OperationsForDeletedVolume int32 `json:"operations_for_deleted_volume,omitempty"`
3830 DeletedVolumeUuid []string `json:"deleted_volume_uuid,omitempty"`
3831 // Counter and list of identifiers for services hindering operations due to being unavailable
3832 OperationsForUnavailableService int32 `json:"operations_for_unavailable_service,omitempty"`
3833 UnavailableServiceUuid []string `json:"unavailable_service_uuid,omitempty"`
3834 // Hit-count of long running operations summarized by RPC target.
3835 OperationCountPerVolumeUuid []*TaskInfo_ExecutionProblem_CounterByRpcTarget `json:"operation_count_per_volume_uuid,omitempty"`
3836 OperationCountPerDeviceId []*TaskInfo_ExecutionProblem_CounterByRpcTarget `json:"operation_count_per_device_id,omitempty"`
3837 OperationCountPerServiceUuid []*TaskInfo_ExecutionProblem_CounterByRpcTarget `json:"operation_count_per_service_uuid,omitempty"`
3838 }
3839
3840 type TaskInfo_ExecutionProblem_CounterByRpcTarget struct {
3841 // volume, device or service
3842 Identifier string `json:"identifier,omitempty"`
3843 Count int32 `json:"count,omitempty"`
3844 }
3845
3846 type TaskInfo_Performance struct {
3847 Type TaskInfo_Performance_Type `json:"type,omitempty"`
3848 PerSecond float32 `json:"per_second,omitempty"`
3849 Processed int64 `json:"processed,omitempty"`
3850 Error int64 `json:"error,omitempty"`
3851 Total int64 `json:"total,omitempty"`
3852 }
3853
3854 type TaskInfo_Performance_Type string
3855
3856 const (
3857 TaskInfo_Performance_Type_BYTE TaskInfo_Performance_Type = "BYTE"
3858 TaskInfo_Performance_Type_FILE TaskInfo_Performance_Type = "FILE"
3859 TaskInfo_Performance_Type_REGISTRY TaskInfo_Performance_Type = "REGISTRY"
3860 TaskInfo_Performance_Type_VOLUME TaskInfo_Performance_Type = "VOLUME"
3861 )
3862
3863 type TaskInfo_Progress struct {
3864 // success_fraction, failure_fraction e [0;1[ success_fraction + failure_fraction <= 1
3865 SuccessFraction float32 `json:"success_fraction,omitempty"`
3866 FailureFraction float32 `json:"failure_fraction,omitempty"`
3867 TimeElapsedS int64 `json:"time_elapsed_s,omitempty"`
3868 // Long.MAX_VALUE if not started yet.
3869 EtaS int64 `json:"eta_s,omitempty"`
3870 OperationsInFlightCount int32 `json:"operations_in_flight_count,omitempty"`
3871 LongRunningOperation []*TaskInfo_Progress_LongRunningOperation `json:"long_running_operation,omitempty"`
3872 CurrentLongRunningOperationsCount int32 `json:"current_long_running_operations_count,omitempty"`
3873 TotalLongRunningOperationsCount int64 `json:"total_long_running_operations_count,omitempty"`
3874 HumanReadableSummary string `json:"human_readable_summary,omitempty"`
3875 AreAllSubjectOperationsOk bool `json:"are_all_subject_operations_ok,omitempty"`
3876 ObsoleteStalledBySubject SubjectList `json:"OBSOLETE_stalled_by_subject,omitempty"`
3877 }
3878
3879 type TaskInfo_Progress_LongRunningOperation struct {
3880 // Identifier of the operation, e.g. ADD_REPLICA.
3881 OperationId string `json:"operation_id,omitempty"`
3882 // The subject in question, e.g. a certain file.
3883 Subject string `json:"subject,omitempty"`
3884 // The operation's RPC target(s), e.g. volume or device UUID(s).
3885 RpcTarget []string `json:"rpc_target,omitempty"`
3886 // Additional "free text" info about the operation.
3887 Details string `json:"details,omitempty"`
3888 // Timestamp in [ms] when the operation started.
3889 StartTimestampMs int64 `json:"start_timestamp_ms,omitempty"`
3890 }
3891
3892 type TenantDomainConfiguration struct {
3893 //UUID of the tenant domain
3894 TenantId string `json:"tenant_id,omitempty"`
3895 //Name of the tenant domain
3896 Name string `json:"name,omitempty"`
3897 //List of one or more IP networks belonging to the domain. Notation: <address>/<netmask length>
3898 RestrictToNetwork []string `json:"restrict_to_network,omitempty"`
3899 // List of one or more volumes accessible in the domain
3900 VolumeAccess []*TenantDomainConfiguration_VolumeAccess `json:"volume_access,omitempty"`
3901 }
3902
3903 type TenantDomainConfiguration_VolumeAccess struct {
3904 // UUID of the volume to grant access to (e.g "c858ffe2-4fa1-4c78-adbf-54c211734883")
3905 VolumeUuid string `json:"volume_uuid,omitempty"`
3906 //IP network to limit accessibility to. Notation: <address>/<netmask length>
3907 RestrictToNetwork string `json:"restrict_to_network,omitempty"`
3908 // True if only read-access is allowed
3909 ReadOnly bool `json:"read_only,omitempty"`
3910 }
3911
3912 type TenantScope struct {
3913 Uuid string `json:"uuid,omitempty"`
3914 NameRegex string `json:"name_regex,omitempty"`
3915 LabelPattern LabelPattern `json:"label_pattern,omitempty"`
3916 }
3917
3918 type UnformattedDevice struct {
3919 ServiceUuid string `json:"service_uuid,omitempty"`
3920 // e.g. /dev/sda
3921 DiskName string `json:"disk_name,omitempty"`
3922 // e.g. sdd, hdd or smr
3923 Type DeviceHardwareType `json:"type,omitempty"`
3924 Model string `json:"model,omitempty"`
3925 Serial string `json:"serial,omitempty"`
3926 Hostname string `json:"hostname,omitempty"`
3927 SizeInBytes int64 `json:"size_in_bytes,omitempty"`
3928 HandleId string `json:"handle_id,omitempty"`
3929 }
3930
3931 type UnlockMasterKeystoreSlotRequest struct {
3932 MasterKeystoreSlotPassword string `json:"master_keystore_slot_password,omitempty"`
3933 retryPolicy
3934 }
3935
3936 type UnlockMasterKeystoreSlotResponse struct {
3937 }
3938
3939 type UnpublishBucketVolumeRequest struct {
3940 // The S3 exclusive bucket volume to unpublish.
3941 VolumeUuid string `json:"volume_uuid,omitempty"`
3942 ObsoleteBucketName string `json:"OBSOLETE_bucket_name,omitempty"`
3943 ObsoleteBucketOwner string `json:"OBSOLETE_bucket_owner,omitempty"`
3944 retryPolicy
3945 }
3946
3947 type UnpublishBucketVolumeResponse struct {
3948 }
3949
3950 type UpdateDeviceRequest struct {
3951 // Device to update
3952 DeviceId int64 `json:"device_id,omitempty"`
3953 // Set the device status, if set.
3954 SetDeviceStatus Device_Status `json:"set_device_status,omitempty"`
3955 // List of device tags to use, if update_device_tags is set.
3956 DeviceTags []string `json:"device_tags,omitempty"`
3957 UpdateDeviceTags bool `json:"update_device_tags,omitempty"`
3958 // Set draining mode.
3959 Draining bool `json:"draining,omitempty"`
3960 // Type to add or remove depending whether remove_device_type is set or not.
3961 DeviceType DeviceContent_ContentType `json:"device_type,omitempty"`
3962 // True if device shall be removed
3963 RemoveDeviceType bool `json:"remove_device_type,omitempty"`
3964 // For auditing (MGMTApi)
3965 Comment string `json:"comment,omitempty"`
3966 // Set the device LED, if set.
3967 SetLedStatus Device_LEDStatus `json:"set_led_status,omitempty"`
3968 SetDeviceHealth Device_DeviceHealth `json:"set_device_health,omitempty"`
3969 SetMountState Device_MountState `json:"set_mount_state,omitempty"`
3970 SetFilesystemCheckBeforeMount Device_FileSystemCheckBeforeMount `json:"set_filesystem_check_before_mount,omitempty"`
3971 retryPolicy
3972 }
3973
3974 type UpdateDeviceResponse struct {
3975 }
3976
3977 type UpdatePolicyRulesRequest struct {
3978 // Disallows default. Default policy Rules can't be created.
3979 PolicyRule []*PolicyRule `json:"policy_rule,omitempty"`
3980 retryPolicy
3981 }
3982
3983 type UpdatePolicyRulesResponse struct {
3984 }
3985
3986 type UpdateUserRequest struct {
3987 UserName string `json:"user_name,omitempty"`
3988 Password string `json:"password,omitempty"`
3989 Email string `json:"email,omitempty"`
3990 AdminOfTenantId []string `json:"admin_of_tenant_id,omitempty"`
3991 Role UserRole `json:"role,omitempty"`
3992 DeleteRoles bool `json:"delete_roles,omitempty"`
3993 MemberOfTenantId []string `json:"member_of_tenant_id,omitempty"`
3994 MemberOfGroup []string `json:"member_of_group,omitempty"`
3995 retryPolicy
3996 }
3997
3998 type UpdateUserResponse struct {
3999 UserConfiguration UserConfiguration `json:"user_configuration,omitempty"`
4000 }
4001
4002 type UpdateVolumeRequest struct {
4003 //UUID of the volume to change.
4004 VolumeUuid string `json:"volume_uuid,omitempty"`
4005 // New name for the volume.
4006 Name string `json:"name,omitempty"`
4007 // UUID of the device where a replica should be added
4008 AddReplicaDeviceId int64 `json:"add_replica_device_id,omitempty"`
4009 // UUID of the device from where a replica should be removed
4010 RemoveReplicaDeviceId int64 `json:"remove_replica_device_id,omitempty"`
4011 // ID of the preferred primary replica device.
4012 PreferredPrimaryReplicaDeviceId int64 `json:"preferred_primary_replica_device_id,omitempty"`
4013 // Whether any set preferred primary replica device should be removed.
4014 RemovePreferredPrimaryReplicaDevice bool `json:"remove_preferred_primary_replica_device,omitempty"`
4015 // Name of the configuration to be used for the volume
4016 SetConfigurationName string `json:"set_configuration_name,omitempty"`
4017 // Only for mirrored volume:
4018 RemoteRegistryTarget []string `json:"remote_registry_target,omitempty"`
4019 // Use publishVolume() instead.
4020 ObsoleteBucketName string `json:"OBSOLETE_bucket_name,omitempty"`
4021 ObsoleteBucketOwner string `json:"OBSOLETE_bucket_owner,omitempty"`
4022 ObsoleteBucketDomain string `json:"OBSOLETE_bucket_domain,omitempty"`
4023 retryPolicy
4024 }
4025
4026 type UpdateVolumeResponse struct {
4027 }
4028
4029 type UserAndGroupMappingSecurityPolicy struct {
4030 MappingPolicy UserAndGroupMappingSecurityPolicy_MappingPolicy `json:"mapping_policy,omitempty"`
4031 }
4032
4033 type UserAndGroupMappingSecurityPolicy_MappingPolicy string
4034
4035 const (
4036 UserAndGroupMappingSecurityPolicy_MappingPolicy_DENY_UNKNOWN UserAndGroupMappingSecurityPolicy_MappingPolicy = "DENY_UNKNOWN"
4037 UserAndGroupMappingSecurityPolicy_MappingPolicy_USE_NUMERIC_ID_FOR_UNKNOWN UserAndGroupMappingSecurityPolicy_MappingPolicy = "USE_NUMERIC_ID_FOR_UNKNOWN"
4038 )
4039
4040 type UserConfiguration struct {
4041 //ID (name) of the user
4042 Id string `json:"id,omitempty"`
4043 // Hash method for password encryption (e.g."SALTED_SHA512")
4044 HashMethod HashMethod `json:"hash_method,omitempty"`
4045 //Hash of the user password
4046 PasswordHash string `json:"password_hash,omitempty"`
4047 //Salt value used for encryption
4048 Salt string `json:"salt,omitempty"`
4049 //Email address od the user
4050 Email string `json:"email,omitempty"`
4051 //Role of the user
4052 Role []*UserRole `json:"role,omitempty"`
4053 AdminOfTenantId []string `json:"admin_of_tenant_id,omitempty"`
4054 LastLoginTimestampMs int64 `json:"last_login_timestamp_ms,omitempty"`
4055 // Access key credentials
4056 AccessKeyCredentials []*AccessKeyCredentials `json:"access_key_credentials,omitempty"`
4057 // Groups user is member of
4058 Group []string `json:"group,omitempty"`
4059 UserSource UserSource `json:"user_source,omitempty"`
4060 MemberOfTenantId []string `json:"member_of_tenant_id,omitempty"`
4061 }
4062
4063 type UserCredentials struct {
4064 //Client-system user name
4065 Username string `json:"username,omitempty"`
4066 //List of one or more client-system group names
4067 Groups []string `json:"groups,omitempty"`
4068 //The tenant domain of the given user. Defaults to an empty string for the default domain
4069 TenantDomain string `json:"tenant_domain,omitempty"`
4070 //Active user role
4071 UserRole UserRole `json:"user_role,omitempty"`
4072 }
4073
4074 type UserSource struct {
4075 DirectoryType UserSource_DirectoryType `json:"directory_type,omitempty"`
4076 DirectoryId string `json:"directory_id,omitempty"`
4077 // Last update of fields from directory service
4078 LastUpdateTimestampMillis int64 `json:"last_update_timestamp_millis,omitempty"`
4079 }
4080
4081 type UserSource_DirectoryType string
4082
4083 const (
4084 UserSource_DirectoryType_INTERNAL_DATABASE UserSource_DirectoryType = "INTERNAL_DATABASE"
4085 UserSource_DirectoryType_KEYSTONE UserSource_DirectoryType = "KEYSTONE"
4086 UserSource_DirectoryType_LDAP UserSource_DirectoryType = "LDAP"
4087 )
4088
4089 type VerifyLicenseRequest struct {
4090 Key string `json:"key,omitempty"`
4091 retryPolicy
4092 }
4093
4094 type VerifyLicenseResponse struct {
4095 ObsoleteValid bool `json:"OBSOLETE_valid,omitempty"`
4096 VerificationResult VerifyLicenseResponse_VerificationResult `json:"verification_result,omitempty"`
4097 }
4098
4099 type VerifyLicenseResponse_VerificationResult string
4100
4101 const (
4102 VerifyLicenseResponse_VerificationResult_EXPIRED VerifyLicenseResponse_VerificationResult = "EXPIRED"
4103 VerifyLicenseResponse_VerificationResult_INVALID VerifyLicenseResponse_VerificationResult = "INVALID"
4104 VerifyLicenseResponse_VerificationResult_OK VerifyLicenseResponse_VerificationResult = "OK"
4105 VerifyLicenseResponse_VerificationResult_SUPERSEDED VerifyLicenseResponse_VerificationResult = "SUPERSEDED"
4106 )
4107
4108 type Volume struct {
4109 VolumeUuid string `json:"volume_uuid,omitempty"`
4110 Name string `json:"name,omitempty"`
4111 ReplicaDeviceIds []int64 `json:"replica_device_ids,omitempty"`
4112 // Not set if no replica device is preferred.
4113 PreferredPrimaryReplicaDeviceId int64 `json:"preferred_primary_replica_device_id,omitempty"`
4114 ScheduledForDeletion bool `json:"scheduled_for_deletion,omitempty"`
4115 QuotaDiskSpaceBytes int64 `json:"quota_disk_space_bytes,omitempty"`
4116 UsedDiskSpaceBytes int64 `json:"used_disk_space_bytes,omitempty"`
4117 FileCount int64 `json:"file_count,omitempty"`
4118 DirectoryCount int64 `json:"directory_count,omitempty"`
4119 // Usage statistics.
4120 ObsoleteVolumeMetrics VolumeMetrics `json:"OBSOLETE_volume_metrics,omitempty"`
4121 ConfigurationName string `json:"configuration_name,omitempty"`
4122 TenantDomain string `json:"tenant_domain,omitempty"`
4123 // Set of devices that contain files of this volume.
4124 DeviceSpread []int64 `json:"device_spread,omitempty"`
4125 // Timestamp of last successful scrub.
4126 LastSuccessfulScrubMs int64 `json:"last_successful_scrub_ms,omitempty"`
4127 PrimaryDeviceId int64 `json:"primary_device_id,omitempty"`
4128 UsedLogicalSpaceBytes int64 `json:"used_logical_space_bytes,omitempty"`
4129 BucketNames []string `json:"bucket_names,omitempty"`
4130 Isexclusivevolumebucket bool `json:"isExclusiveVolumeBucket,omitempty"`
4131 // states if the bucket is default within tenant
4132 TenantDefault bool `json:"tenant_default,omitempty"`
4133 // Optional source for async replication. If set, all metadata and data of the volume will be retrieved from the volume on the Quobyte installation associated with this source.
4134 AsyncReplicationSource AsyncReplicationSource `json:"async_replication_source,omitempty"`
4135 AsyncReplicationProgress AsyncReplicationProgress `json:"async_replication_progress,omitempty"`
4136 LastAccessTimestampS int64 `json:"last_access_timestamp_s,omitempty"`
4137 VolumeEncryptionContext VolumeEncryptionContext `json:"volume_encryption_context,omitempty"`
4138 }
4139
4140 type VolumeConfiguration struct {
4141 //Name of the configuration
4142 ConfigurationName string `json:"configuration_name,omitempty"`
4143 // Inheritance: use the named configuration and overwrite it with anything set in this config (e.g."BASE")
4144 BaseConfiguration string `json:"base_configuration,omitempty"`
4145 // Configuration for the related metadata
4146 VolumeMetadataConfiguration VolumeMetadataConfiguration `json:"volume_metadata_configuration,omitempty"`
4147 // Textual representation of the basic configuration
4148 DefaultConfig ConfigurationStatement `json:"default_config,omitempty"`
4149 // Optional list of one or more refinements of the basic configuration
4150 Refinement []*ConfigurationRefinement `json:"refinement,omitempty"`
4151 SnapshotConfiguration VolumeSnapshotConfiguration `json:"snapshot_configuration,omitempty"`
4152 MetadataCacheConfiguration FileMetadataCacheConfiguration `json:"metadata_cache_configuration,omitempty"`
4153 // Definition of security critical behaviour
4154 SecurityConfiguration VolumeSecurityConfiguration `json:"security_configuration,omitempty"`
4155 PrefetchConfiguration VolumePrefetchConfiguration `json:"prefetch_configuration,omitempty"`
4156 FileRetentionPolicy FileRetentionPolicy `json:"file_retention_policy,omitempty"`
4157 }
4158
4159 type VolumeEncryptionContext struct {
4160 KeyOwner VolumeEncryptionContext_VolumeKeyOwner `json:"key_owner,omitempty"`
4161 FileEncryptionMethod VolumeEncryptionContext_FileEncryptionMethod `json:"file_encryption_method,omitempty"`
4162 KeyDerivationMethod VolumeEncryptionContext_KeyDerivationMethod `json:"key_derivation_method,omitempty"`
4163 }
4164
4165 type VolumeEncryptionContext_FileEncryptionMethod string
4166
4167 const (
4168 VolumeEncryptionContext_FileEncryptionMethod_AES_XTS_128 VolumeEncryptionContext_FileEncryptionMethod = "AES_XTS_128"
4169 VolumeEncryptionContext_FileEncryptionMethod_AES_XTS_256 VolumeEncryptionContext_FileEncryptionMethod = "AES_XTS_256"
4170 )
4171
4172 type VolumeEncryptionContext_KeyDerivationMethod string
4173
4174 const (
4175 VolumeEncryptionContext_KeyDerivationMethod_HMAC_SHA256 VolumeEncryptionContext_KeyDerivationMethod = "HMAC_SHA256"
4176 VolumeEncryptionContext_KeyDerivationMethod_HMAC_SHA512 VolumeEncryptionContext_KeyDerivationMethod = "HMAC_SHA512"
4177 )
4178
4179 type VolumeEncryptionContext_VolumeKeyOwner string
4180
4181 const (
4182 VolumeEncryptionContext_VolumeKeyOwner_SYSTEM VolumeEncryptionContext_VolumeKeyOwner = "SYSTEM"
4183 VolumeEncryptionContext_VolumeKeyOwner_USER VolumeEncryptionContext_VolumeKeyOwner = "USER"
4184 )
4185
4186 type VolumeEncryptionPolicy struct {
4187 Profile VolumeEncryptionPolicy_Profile `json:"profile,omitempty"`
4188 }
4189
4190 type VolumeEncryptionPolicy_Profile string
4191
4192 const (
4193 VolumeEncryptionPolicy_Profile_NONE VolumeEncryptionPolicy_Profile = "NONE"
4194 VolumeEncryptionPolicy_Profile_SYSTEM_AES_128 VolumeEncryptionPolicy_Profile = "SYSTEM_AES_128"
4195 VolumeEncryptionPolicy_Profile_SYSTEM_AES_256 VolumeEncryptionPolicy_Profile = "SYSTEM_AES_256"
4196 )
4197
4198 type VolumeMappingInfo struct {
4199 VolumeUuid string `json:"volume_uuid,omitempty"`
4200 VolumeName string `json:"volume_name,omitempty"`
4201 TenantId string `json:"tenant_id,omitempty"`
4202 ConfigurationName string `json:"configuration_name,omitempty"`
4203 }
4204
4205 type VolumeMetadataConfiguration struct {
4206 // The placement constraints for metadata replicas
4207 PlacementSettings PlacementSettings `json:"placement_settings,omitempty"`
4208 //The number of volume metadata replicas. Recommended: 3
4209 ReplicationFactor int32 `json:"replication_factor,omitempty"`
4210 }
4211
4212 type VolumeMetrics struct {
4213 UpdateOperations int64 `json:"update_operations,omitempty"`
4214 UpdateOperationsRate float32 `json:"update_operations_rate,omitempty"`
4215 LookupOperations int64 `json:"lookup_operations,omitempty"`
4216 LookupOperationsRate float32 `json:"lookup_operations_rate,omitempty"`
4217 }
4218
4219 type VolumePrefetchConfiguration struct {
4220 // Regular expression that matches on the filenames that should trigger file prefetching.
4221 FileNameRegex string `json:"file_name_regex,omitempty"`
4222 // The index of the submatch within the regular expression that refers to the sequence number.
4223 RegexMatchIndex int32 `json:"regex_match_index,omitempty"`
4224 }
4225
4226 type VolumeScope struct {
4227 Uuid string `json:"uuid,omitempty"`
4228 NameRegex string `json:"name_regex,omitempty"`
4229 LabelPattern LabelPattern `json:"label_pattern,omitempty"`
4230 }
4231
4232 type VolumeSecurityConfiguration struct {
4233 // Policy to handle unknown accounts
4234 UserAndGroupMappingPolicy VolumeSecurityConfiguration_MappingPolicy `json:"user_and_group_mapping_policy,omitempty"`
4235 // Additional groups that have superuser privileges on volume
4236 AdditionalPrivilegedGroups []string `json:"additional_privileged_groups,omitempty"`
4237 // Allow setting SUID and SGID without superuser privileges
4238 UnprivilegedUserCanSetSuid bool `json:"unprivileged_user_can_set_suid,omitempty"`
4239 // Allow chown without superuser privileges
4240 UnprivilegedUserCanChown bool `json:"unprivileged_user_can_chown,omitempty"`
4241 // Allow chgroup to foreign group without superuser privileges
4242 UnprivilegedUserCanChgrp bool `json:"unprivileged_user_can_chgrp,omitempty"`
4243 // Mode for files created by Windows clients (octal, default 0600)
4244 WindowsCreateMode int32 `json:"windows_create_mode,omitempty"`
4245 // Mode for directories created by Windows clients (octal, default 0700)
4246 WindowsDirectoryMode int32 `json:"windows_directory_mode,omitempty"`
4247 // Policy to select owning group for files created by Windows clients
4248 WindowsGroupSelection VolumeSecurityConfiguration_GroupSelectionPolicy `json:"windows_group_selection,omitempty"`
4249 // Used group if windows_group_selection=DEFAULT_GROUP is set
4250 WindowsDefaultGroup string `json:"windows_default_group,omitempty"`
4251 // Override mode for new files (octal), windows_create_mode ineffective when set
4252 OverrideCreateMode int32 `json:"override_create_mode,omitempty"`
4253 // Override mode for new directories (octal), windows_directory_mode ineffective when set
4254 OverrideDirectoryMode int32 `json:"override_directory_mode,omitempty"`
4255 }
4256
4257 type VolumeSecurityConfiguration_GroupSelectionPolicy string
4258
4259 const (
4260 VolumeSecurityConfiguration_GroupSelectionPolicy_DEFAULT_GROUP VolumeSecurityConfiguration_GroupSelectionPolicy = "DEFAULT_GROUP"
4261 VolumeSecurityConfiguration_GroupSelectionPolicy_PARENT_DIRECTORY VolumeSecurityConfiguration_GroupSelectionPolicy = "PARENT_DIRECTORY"
4262 VolumeSecurityConfiguration_GroupSelectionPolicy_USERNAME VolumeSecurityConfiguration_GroupSelectionPolicy = "USERNAME"
4263 )
4264
4265 type VolumeSecurityConfiguration_MappingPolicy string
4266
4267 const (
4268 VolumeSecurityConfiguration_MappingPolicy_DENY_UNKNOWN VolumeSecurityConfiguration_MappingPolicy = "DENY_UNKNOWN"
4269 VolumeSecurityConfiguration_MappingPolicy_USE_NUMERIC_ID_FOR_UNKNOWN VolumeSecurityConfiguration_MappingPolicy = "USE_NUMERIC_ID_FOR_UNKNOWN"
4270 )
4271
4272 type VolumeSnapshot struct {
4273 // Volume uuid
4274 VolumeUuid string `json:"volume_uuid,omitempty"`
4275 // Snapshot version
4276 Version int64 `json:"version,omitempty"`
4277 // Snapshot name
4278 Name string `json:"name,omitempty"`
4279 // Comment
4280 Comment string `json:"comment,omitempty"`
4281 // Create time
4282 Timestamp int64 `json:"timestamp,omitempty"`
4283 // Pinned snapshot (will not be deleted by cleanup)
4284 Pinned bool `json:"pinned,omitempty"`
4285 }
4286
4287 type VolumeSnapshotConfiguration struct {
4288 // Time span in seconds between two automatic snapshots.
4289 SnapshotIntervalS int32 `json:"snapshot_interval_s,omitempty"`
4290 // Maximum lifetime of an automatically created snapshot in seconds.
4291 SnapshotLifetimeS int32 `json:"snapshot_lifetime_s,omitempty"`
4292 }
4293
4294 type VolumeSnapshotFrequencyPolicy struct {
4295 IntervalS int32 `json:"interval_s,omitempty"`
4296 }
4297
4298 type VolumeSnapshotRetentionPolicy struct {
4299 LifetimeS int32 `json:"lifetime_s,omitempty"`
4300 }
4301
4302 type WindowsSpecificSecurityPolicy struct {
4303 CreateMode int32 `json:"create_mode,omitempty"`
4304 DirectoryMode int32 `json:"directory_mode,omitempty"`
4305 GroupSelection WindowsSpecificSecurityPolicy_GroupSelectionPolicy `json:"group_selection,omitempty"`
4306 DefaultGroup string `json:"default_group,omitempty"`
4307 }
4308
4309 type WindowsSpecificSecurityPolicy_GroupSelectionPolicy string
4310
4311 const (
4312 WindowsSpecificSecurityPolicy_GroupSelectionPolicy_DEFAULT_GROUP WindowsSpecificSecurityPolicy_GroupSelectionPolicy = "DEFAULT_GROUP"
4313 WindowsSpecificSecurityPolicy_GroupSelectionPolicy_PARENT_DIRECTORY WindowsSpecificSecurityPolicy_GroupSelectionPolicy = "PARENT_DIRECTORY"
4314 WindowsSpecificSecurityPolicy_GroupSelectionPolicy_USERNAME WindowsSpecificSecurityPolicy_GroupSelectionPolicy = "USERNAME"
4315 )
4316
4317 type XAttr struct {
4318 Name string `json:"name,omitempty"`
4319 Value string `json:"value,omitempty"`
4320 }
4321
4322 func (client *QuobyteClient) AcknowledgeAlert(request *AcknowledgeAlertRequest) (result *AcknowledgeAlertResponse, err error) {
4323 var response AcknowledgeAlertResponse
4324 if err = client.sendRequest("acknowledgeAlert", request, &response); err != nil {
4325 return nil, err
4326 }
4327 return &response, nil
4328 }
4329
4330 func (client *QuobyteClient) AddCa(request *AddCaRequest) (result *AddCaResponse, err error) {
4331 var response AddCaResponse
4332 if err = client.sendRequest("addCa", request, &response); err != nil {
4333 return nil, err
4334 }
4335 return &response, nil
4336 }
4337
4338 func (client *QuobyteClient) AddCertificate(request *AddCertificateRequest) (result *AddCertificateResponse, err error) {
4339 var response AddCertificateResponse
4340 if err = client.sendRequest("addCertificate", request, &response); err != nil {
4341 return nil, err
4342 }
4343 return &response, nil
4344 }
4345
4346 func (client *QuobyteClient) AddCsr(request *AddCsrRequest) (result *AddCsrResponse, err error) {
4347 var response AddCsrResponse
4348 if err = client.sendRequest("addCsr", request, &response); err != nil {
4349 return nil, err
4350 }
4351 return &response, nil
4352 }
4353
4354 func (client *QuobyteClient) AddRegistryReplica(request *AddRegistryReplicaRequest) (result *AddRegistryReplicaResponse, err error) {
4355 var response AddRegistryReplicaResponse
4356 if err = client.sendRequest("addRegistryReplica", request, &response); err != nil {
4357 return nil, err
4358 }
4359 return &response, nil
4360 }
4361
4362 func (client *QuobyteClient) CancelNetworkTest(request *CancelNetworkTestRequest) (result *CancelNetworkTestResponse, err error) {
4363 var response CancelNetworkTestResponse
4364 if err = client.sendRequest("cancelNetworkTest", request, &response); err != nil {
4365 return nil, err
4366 }
4367 return &response, nil
4368 }
4369
4370 func (client *QuobyteClient) CancelSupportDump(request *CancelSupportDumpRequest) (result *CancelSupportDumpResponse, err error) {
4371 var response CancelSupportDumpResponse
4372 if err = client.sendRequest("cancelSupportDump", request, &response); err != nil {
4373 return nil, err
4374 }
4375 return &response, nil
4376 }
4377
4378 func (client *QuobyteClient) CancelTask(request *CancelTaskRequest) (result *CancelTaskResponse, err error) {
4379 var response CancelTaskResponse
4380 if err = client.sendRequest("cancelTask", request, &response); err != nil {
4381 return nil, err
4382 }
4383 return &response, nil
4384 }
4385
4386 func (client *QuobyteClient) CancelVolumeErasure(request *CancelVolumeErasureRequest) (result *CancelVolumeErasureResponse, err error) {
4387 var response CancelVolumeErasureResponse
4388 if err = client.sendRequest("cancelVolumeErasure", request, &response); err != nil {
4389 return nil, err
4390 }
4391 return &response, nil
4392 }
4393
4394 func (client *QuobyteClient) ChangePolicyRulePriority(request *ChangePolicyRulePriorityRequest) (result *ChangePolicyRulePriorityResponse, err error) {
4395 var response ChangePolicyRulePriorityResponse
4396 if err = client.sendRequest("changePolicyRulePriority", request, &response); err != nil {
4397 return nil, err
4398 }
4399 return &response, nil
4400 }
4401
4402 func (client *QuobyteClient) ConfigureRule(request *ConfigureRuleRequest) (result *ConfigureRuleResponse, err error) {
4403 var response ConfigureRuleResponse
4404 if err = client.sendRequest("configureRule", request, &response); err != nil {
4405 return nil, err
4406 }
4407 return &response, nil
4408 }
4409
4410 func (client *QuobyteClient) CreateAccessKeyCredentials(request *CreateAccessKeyCredentialsRequest) (result *CreateAccessKeyCredentialsResponse, err error) {
4411 var response CreateAccessKeyCredentialsResponse
4412 if err = client.sendRequest("createAccessKeyCredentials", request, &response); err != nil {
4413 return nil, err
4414 }
4415 return &response, nil
4416 }
4417
4418 func (client *QuobyteClient) CreateCopyFilesTask(request *CreateCopyFilesTaskRequest) (result *CreateTaskResponse, err error) {
4419 var response CreateTaskResponse
4420 if err = client.sendRequest("createCopyFilesTask", request, &response); err != nil {
4421 return nil, err
4422 }
4423 return &response, nil
4424 }
4425
4426 func (client *QuobyteClient) CreateMasterKeystoreSlot(request *CreateMasterKeystoreSlotRequest) (result *CreateMasterKeystoreSlotResponse, err error) {
4427 var response CreateMasterKeystoreSlotResponse
4428 if err = client.sendRequest("createMasterKeystoreSlot", request, &response); err != nil {
4429 return nil, err
4430 }
4431 return &response, nil
4432 }
4433
4434 func (client *QuobyteClient) CreateMirroredVolume(request *CreateMirroredVolumeRequest) (result *CreateMirroredVolumeResponse, err error) {
4435 var response CreateMirroredVolumeResponse
4436 if err = client.sendRequest("createMirroredVolume", request, &response); err != nil {
4437 return nil, err
4438 }
4439 return &response, nil
4440 }
4441
4442 func (client *QuobyteClient) CreateNewUserKeystoreSlot(request *CreateNewUserKeystoreSlotRequest) (result *CreateNewUserKeystoreSlotResponse, err error) {
4443 var response CreateNewUserKeystoreSlotResponse
4444 if err = client.sendRequest("createNewUserKeystoreSlot", request, &response); err != nil {
4445 return nil, err
4446 }
4447 return &response, nil
4448 }
4449
4450 func (client *QuobyteClient) CreateNotificationRule(request *CreateNotificationRuleRequest) (result *CreateNotificationRuleResponse, err error) {
4451 var response CreateNotificationRuleResponse
4452 if err = client.sendRequest("createNotificationRule", request, &response); err != nil {
4453 return nil, err
4454 }
4455 return &response, nil
4456 }
4457
4458 func (client *QuobyteClient) CreatePolicyRule(request *CreatePolicyRuleRequest) (result *CreatePolicyRuleResponse, err error) {
4459 var response CreatePolicyRuleResponse
4460 if err = client.sendRequest("createPolicyRule", request, &response); err != nil {
4461 return nil, err
4462 }
4463 return &response, nil
4464 }
4465
4466 func (client *QuobyteClient) CreatePolicyRuleSet(request *CreatePolicyRuleSetRequest) (result *CreatePolicyRuleSetResponse, err error) {
4467 var response CreatePolicyRuleSetResponse
4468 if err = client.sendRequest("createPolicyRuleSet", request, &response); err != nil {
4469 return nil, err
4470 }
4471 return &response, nil
4472 }
4473
4474 func (client *QuobyteClient) CreateSnapshot(request *CreateSnapshotRequest) (result *CreateSnapshotResponse, err error) {
4475 var response CreateSnapshotResponse
4476 if err = client.sendRequest("createSnapshot", request, &response); err != nil {
4477 return nil, err
4478 }
4479 return &response, nil
4480 }
4481
4482 func (client *QuobyteClient) CreateTask(request *CreateTaskRequest) (result *CreateTaskResponse, err error) {
4483 var response CreateTaskResponse
4484 if err = client.sendRequest("createTask", request, &response); err != nil {
4485 return nil, err
4486 }
4487 return &response, nil
4488 }
4489
4490 func (client *QuobyteClient) CreateUser(request *CreateUserRequest) (result *CreateUserResponse, err error) {
4491 var response CreateUserResponse
4492 if err = client.sendRequest("createUser", request, &response); err != nil {
4493 return nil, err
4494 }
4495 return &response, nil
4496 }
4497
4498 func (client *QuobyteClient) CreateVolume(request *CreateVolumeRequest) (result *CreateVolumeResponse, err error) {
4499 var response CreateVolumeResponse
4500 if err = client.sendRequest("createVolume", request, &response); err != nil {
4501 return nil, err
4502 }
4503 return &response, nil
4504 }
4505
4506 func (client *QuobyteClient) DecideCsr(request *DecideCsrRequest) (result *DecideCsrResponse, err error) {
4507 var response DecideCsrResponse
4508 if err = client.sendRequest("decideCsr", request, &response); err != nil {
4509 return nil, err
4510 }
4511 return &response, nil
4512 }
4513
4514 func (client *QuobyteClient) DeleteAccessKeyCredentials(request *DeleteAccessKeyCredentialsRequest) (result *DeleteAccessKeyCredentialsResponse, err error) {
4515 var response DeleteAccessKeyCredentialsResponse
4516 if err = client.sendRequest("deleteAccessKeyCredentials", request, &response); err != nil {
4517 return nil, err
4518 }
4519 return &response, nil
4520 }
4521
4522 func (client *QuobyteClient) DeleteCa(request *DeleteCaRequest) (result *DeleteCaResponse, err error) {
4523 var response DeleteCaResponse
4524 if err = client.sendRequest("deleteCa", request, &response); err != nil {
4525 return nil, err
4526 }
4527 return &response, nil
4528 }
4529
4530 func (client *QuobyteClient) DeleteCertificate(request *DeleteCertificateRequest) (result *DeleteCertificateResponse, err error) {
4531 var response DeleteCertificateResponse
4532 if err = client.sendRequest("deleteCertificate", request, &response); err != nil {
4533 return nil, err
4534 }
4535 return &response, nil
4536 }
4537
4538 func (client *QuobyteClient) DeleteConfiguration(request *DeleteConfigurationRequest) (result *DeleteConfigurationResponse, err error) {
4539 var response DeleteConfigurationResponse
4540 if err = client.sendRequest("deleteConfiguration", request, &response); err != nil {
4541 return nil, err
4542 }
4543 return &response, nil
4544 }
4545
4546 func (client *QuobyteClient) DeleteCsr(request *DeleteCsrRequest) (result *DeleteCsrResponse, err error) {
4547 var response DeleteCsrResponse
4548 if err = client.sendRequest("deleteCsr", request, &response); err != nil {
4549 return nil, err
4550 }
4551 return &response, nil
4552 }
4553
4554 func (client *QuobyteClient) DeleteLabels(request *DeleteLabelsRequest) (result *DeleteLabelsResponse, err error) {
4555 var response DeleteLabelsResponse
4556 if err = client.sendRequest("deleteLabels", request, &response); err != nil {
4557 return nil, err
4558 }
4559 return &response, nil
4560 }
4561
4562 func (client *QuobyteClient) DeleteNotificationRule(request *DeleteNotificationRuleRequest) (result *DeleteNotificationRuleResponse, err error) {
4563 var response DeleteNotificationRuleResponse
4564 if err = client.sendRequest("deleteNotificationRule", request, &response); err != nil {
4565 return nil, err
4566 }
4567 return &response, nil
4568 }
4569
4570 func (client *QuobyteClient) DeletePolicyRules(request *DeletePolicyRulesRequest) (result *DeletePolicyRulesResponse, err error) {
4571 var response DeletePolicyRulesResponse
4572 if err = client.sendRequest("deletePolicyRules", request, &response); err != nil {
4573 return nil, err
4574 }
4575 return &response, nil
4576 }
4577
4578 func (client *QuobyteClient) DeleteSnapshot(request *DeleteSnapshotRequest) (result *DeleteSnapshotResponse, err error) {
4579 var response DeleteSnapshotResponse
4580 if err = client.sendRequest("deleteSnapshot", request, &response); err != nil {
4581 return nil, err
4582 }
4583 return &response, nil
4584 }
4585
4586 func (client *QuobyteClient) DeleteTenant(request *DeleteTenantRequest) (result *DeleteTenantResponse, err error) {
4587 var response DeleteTenantResponse
4588 if err = client.sendRequest("deleteTenant", request, &response); err != nil {
4589 return nil, err
4590 }
4591 return &response, nil
4592 }
4593
4594 func (client *QuobyteClient) DeleteUser(request *DeleteUserRequest) (result *DeleteUserResponse, err error) {
4595 var response DeleteUserResponse
4596 if err = client.sendRequest("deleteUser", request, &response); err != nil {
4597 return nil, err
4598 }
4599 return &response, nil
4600 }
4601
4602 func (client *QuobyteClient) DeleteVolume(request *DeleteVolumeRequest) (result *DeleteVolumeResponse, err error) {
4603 var response DeleteVolumeResponse
4604 if err = client.sendRequest("deleteVolume", request, &response); err != nil {
4605 return nil, err
4606 }
4607 return &response, nil
4608 }
4609
4610 func (client *QuobyteClient) DeregisterService(request *DeregisterServiceRequest) (result *DeregisterServiceResponse, err error) {
4611 var response DeregisterServiceResponse
4612 if err = client.sendRequest("deregisterService", request, &response); err != nil {
4613 return nil, err
4614 }
4615 return &response, nil
4616 }
4617
4618 func (client *QuobyteClient) DisconnectMirroredVolume(request *DisconnectMirroredVolumeRequest) (result *DisconnectMirroredVolumeResponse, err error) {
4619 var response DisconnectMirroredVolumeResponse
4620 if err = client.sendRequest("disconnectMirroredVolume", request, &response); err != nil {
4621 return nil, err
4622 }
4623 return &response, nil
4624 }
4625
4626 func (client *QuobyteClient) DumpEffectivePolicyRules(request *DumpEffectivePolicyRulesRequest) (result *DumpEffectivePolicyRulesResponse, err error) {
4627 var response DumpEffectivePolicyRulesResponse
4628 if err = client.sendRequest("dumpEffectivePolicyRules", request, &response); err != nil {
4629 return nil, err
4630 }
4631 return &response, nil
4632 }
4633
4634 func (client *QuobyteClient) DumpPolicyPresets(request *DumpPolicyPresetsRequest) (result *DumpPolicyPresetsResponse, err error) {
4635 var response DumpPolicyPresetsResponse
4636 if err = client.sendRequest("dumpPolicyPresets", request, &response); err != nil {
4637 return nil, err
4638 }
4639 return &response, nil
4640 }
4641
4642 func (client *QuobyteClient) EraseSnapshot(request *EraseSnapshotRequest) (result *EraseSnapshotResponse, err error) {
4643 var response EraseSnapshotResponse
4644 if err = client.sendRequest("eraseSnapshot", request, &response); err != nil {
4645 return nil, err
4646 }
4647 return &response, nil
4648 }
4649
4650 func (client *QuobyteClient) EraseVolume(request *EraseVolumeRequest) (result *EraseVolumeResponse, err error) {
4651 var response EraseVolumeResponse
4652 if err = client.sendRequest("eraseVolume", request, &response); err != nil {
4653 return nil, err
4654 }
4655 return &response, nil
4656 }
4657
4658 func (client *QuobyteClient) ExportCertificate(request *ExportCertificateRequest) (result *ExportCertificateResponse, err error) {
4659 var response ExportCertificateResponse
4660 if err = client.sendRequest("exportCertificate", request, &response); err != nil {
4661 return nil, err
4662 }
4663 return &response, nil
4664 }
4665
4666 func (client *QuobyteClient) ExportConfiguration(request *ExportConfigurationRequest) (result *ExportConfigurationResponse, err error) {
4667 var response ExportConfigurationResponse
4668 if err = client.sendRequest("exportConfiguration", request, &response); err != nil {
4669 return nil, err
4670 }
4671 return &response, nil
4672 }
4673
4674 func (client *QuobyteClient) ExportPolicyRules(request *ExportPolicyRulesRequest) (result *ExportPolicyRulesResponse, err error) {
4675 var response ExportPolicyRulesResponse
4676 if err = client.sendRequest("exportPolicyRules", request, &response); err != nil {
4677 return nil, err
4678 }
4679 return &response, nil
4680 }
4681
4682 func (client *QuobyteClient) ExportVolume(request *ExportVolumeRequest) (result *ExportVolumeResponse, err error) {
4683 var response ExportVolumeResponse
4684 if err = client.sendRequest("exportVolume", request, &response); err != nil {
4685 return nil, err
4686 }
4687 return &response, nil
4688 }
4689
4690 func (client *QuobyteClient) FilterPolicyRules(request *FilterPolicyRulesRequest) (result *FilterPolicyRulesResponse, err error) {
4691 var response FilterPolicyRulesResponse
4692 if err = client.sendRequest("filterPolicyRules", request, &response); err != nil {
4693 return nil, err
4694 }
4695 return &response, nil
4696 }
4697
4698 func (client *QuobyteClient) GenerateAsyncSupportDump(request *GenerateAsyncSupportDumpRequest) (result *GenerateAsyncSupportDumpResponse, err error) {
4699 var response GenerateAsyncSupportDumpResponse
4700 if err = client.sendRequest("generateAsyncSupportDump", request, &response); err != nil {
4701 return nil, err
4702 }
4703 return &response, nil
4704 }
4705
4706 func (client *QuobyteClient) GetAccounting(request *GetAccountingRequest) (result *GetAccountingResponse, err error) {
4707 var response GetAccountingResponse
4708 if err = client.sendRequest("getAccounting", request, &response); err != nil {
4709 return nil, err
4710 }
4711 return &response, nil
4712 }
4713
4714 func (client *QuobyteClient) GetAddKeySlotData(request *GetAddKeySlotDataRequest) (result *GetAddKeySlotDataResponse, err error) {
4715 var response GetAddKeySlotDataResponse
4716 if err = client.sendRequest("getAddKeySlotData", request, &response); err != nil {
4717 return nil, err
4718 }
4719 return &response, nil
4720 }
4721
4722 func (client *QuobyteClient) GetAnalyzeReports(request *GetAnalyzeReportsRequest) (result *GetAnalyzeReportsResponse, err error) {
4723 var response GetAnalyzeReportsResponse
4724 if err = client.sendRequest("getAnalyzeReports", request, &response); err != nil {
4725 return nil, err
4726 }
4727 return &response, nil
4728 }
4729
4730 func (client *QuobyteClient) GetAuditLog(request *GetAuditLogRequest) (result *GetAuditLogResponse, err error) {
4731 var response GetAuditLogResponse
4732 if err = client.sendRequest("getAuditLog", request, &response); err != nil {
4733 return nil, err
4734 }
4735 return &response, nil
4736 }
4737
4738 func (client *QuobyteClient) GetCertificateSubject(request *GetCertificateSubjectRequest) (result *GetCertificateSubjectResponse, err error) {
4739 var response GetCertificateSubjectResponse
4740 if err = client.sendRequest("getCertificateSubject", request, &response); err != nil {
4741 return nil, err
4742 }
4743 return &response, nil
4744 }
4745
4746 func (client *QuobyteClient) GetClientList(request *GetClientListRequest) (result *GetClientListResponse, err error) {
4747 var response GetClientListResponse
4748 if err = client.sendRequest("getClientList", request, &response); err != nil {
4749 return nil, err
4750 }
4751 return &response, nil
4752 }
4753
4754 func (client *QuobyteClient) GetConfiguration(request *GetConfigurationRequest) (result *GetConfigurationResponse, err error) {
4755 var response GetConfigurationResponse
4756 if err = client.sendRequest("getConfiguration", request, &response); err != nil {
4757 return nil, err
4758 }
4759 return &response, nil
4760 }
4761
4762 func (client *QuobyteClient) GetDefaultKeyStoreSlotParams(request *GetDefaultKeyStoreSlotParamsRequest) (result *GetDefaultKeyStoreSlotParamsResponse, err error) {
4763 var response GetDefaultKeyStoreSlotParamsResponse
4764 if err = client.sendRequest("getDefaultKeyStoreSlotParams", request, &response); err != nil {
4765 return nil, err
4766 }
4767 return &response, nil
4768 }
4769
4770 func (client *QuobyteClient) GetDeviceIds(request *GetDeviceIdsRequest) (result *GetDeviceIdsResponse, err error) {
4771 var response GetDeviceIdsResponse
4772 if err = client.sendRequest("getDeviceIds", request, &response); err != nil {
4773 return nil, err
4774 }
4775 return &response, nil
4776 }
4777
4778 func (client *QuobyteClient) GetDeviceList(request *GetDeviceListRequest) (result *GetDeviceListResponse, err error) {
4779 var response GetDeviceListResponse
4780 if err = client.sendRequest("getDeviceList", request, &response); err != nil {
4781 return nil, err
4782 }
4783 return &response, nil
4784 }
4785
4786 func (client *QuobyteClient) GetDeviceNetworkEndpoints(request *GetDeviceNetworkEndpointsRequest) (result *GetDeviceNetworkEndpointsResponse, err error) {
4787 var response GetDeviceNetworkEndpointsResponse
4788 if err = client.sendRequest("getDeviceNetworkEndpoints", request, &response); err != nil {
4789 return nil, err
4790 }
4791 return &response, nil
4792 }
4793
4794 func (client *QuobyteClient) GetDeviceTags(request *GetDeviceTagsRequest) (result *GetDeviceTagsResponse, err error) {
4795 var response GetDeviceTagsResponse
4796 if err = client.sendRequest("getDeviceTags", request, &response); err != nil {
4797 return nil, err
4798 }
4799 return &response, nil
4800 }
4801
4802 func (client *QuobyteClient) GetEffectiveVolumeConfiguration(request *GetEffectiveVolumeConfigurationRequest) (result *GetEffectiveVolumeConfigurationResponse, err error) {
4803 var response GetEffectiveVolumeConfigurationResponse
4804 if err = client.sendRequest("getEffectiveVolumeConfiguration", request, &response); err != nil {
4805 return nil, err
4806 }
4807 return &response, nil
4808 }
4809
4810 func (client *QuobyteClient) GetEncryptStatus(request *GetEncryptStatusRequest) (result *GetEncryptStatusResponse, err error) {
4811 var response GetEncryptStatusResponse
4812 if err = client.sendRequest("getEncryptStatus", request, &response); err != nil {
4813 return nil, err
4814 }
4815 return &response, nil
4816 }
4817
4818 func (client *QuobyteClient) GetEncryptedVolumeKey(request *GetEncryptedVolumeKeyRequest) (result *GetEncryptedVolumeKeyResponse, err error) {
4819 var response GetEncryptedVolumeKeyResponse
4820 if err = client.sendRequest("getEncryptedVolumeKey", request, &response); err != nil {
4821 return nil, err
4822 }
4823 return &response, nil
4824 }
4825
4826 func (client *QuobyteClient) GetFileMetadataDump(request *GetFileMetadataDumpRequest) (result *GetFileMetadataDumpResponse, err error) {
4827 var response GetFileMetadataDumpResponse
4828 if err = client.sendRequest("getFileMetadataDump", request, &response); err != nil {
4829 return nil, err
4830 }
4831 return &response, nil
4832 }
4833
4834 func (client *QuobyteClient) GetFiringRules(request *GetFiringRulesRequest) (result *GetFiringRulesResponse, err error) {
4835 var response GetFiringRulesResponse
4836 if err = client.sendRequest("getFiringRules", request, &response); err != nil {
4837 return nil, err
4838 }
4839 return &response, nil
4840 }
4841
4842 func (client *QuobyteClient) GetHealthManagerStatus(request *GetHealthManagerStatusRequest) (result *GetHealthManagerStatusResponse, err error) {
4843 var response GetHealthManagerStatusResponse
4844 if err = client.sendRequest("getHealthManagerStatus", request, &response); err != nil {
4845 return nil, err
4846 }
4847 return &response, nil
4848 }
4849
4850 func (client *QuobyteClient) GetInformation(request *GetInformationRequest) (result *GetInformationResponse, err error) {
4851 var response GetInformationResponse
4852 if err = client.sendRequest("getInformation", request, &response); err != nil {
4853 return nil, err
4854 }
4855 return &response, nil
4856 }
4857
4858 func (client *QuobyteClient) GetKeyStoreSlotWithoutHash(request *GetKeyStoreSlotWithoutHashRequest) (result *GetKeyStoreSlotWithoutHashResponse, err error) {
4859 var response GetKeyStoreSlotWithoutHashResponse
4860 if err = client.sendRequest("getKeyStoreSlotWithoutHash", request, &response); err != nil {
4861 return nil, err
4862 }
4863 return &response, nil
4864 }
4865
4866 func (client *QuobyteClient) GetLabels(request *GetLabelsRequest) (result *GetLabelsResponse, err error) {
4867 var response GetLabelsResponse
4868 if err = client.sendRequest("getLabels", request, &response); err != nil {
4869 return nil, err
4870 }
4871 return &response, nil
4872 }
4873
4874 func (client *QuobyteClient) GetLatestEvent(request *GetLatestEventRequest) (result *GetLatestEventResponse, err error) {
4875 var response GetLatestEventResponse
4876 if err = client.sendRequest("getLatestEvent", request, &response); err != nil {
4877 return nil, err
4878 }
4879 return &response, nil
4880 }
4881
4882 func (client *QuobyteClient) GetLicense(request *GetLicenseRequest) (result *GetLicenseResponse, err error) {
4883 var response GetLicenseResponse
4884 if err = client.sendRequest("getLicense", request, &response); err != nil {
4885 return nil, err
4886 }
4887 return &response, nil
4888 }
4889
4890 func (client *QuobyteClient) GetNetworkTestResult(request *GetNetworkTestResultRequest) (result *GetNetworkTestResultResponse, err error) {
4891 var response GetNetworkTestResultResponse
4892 if err = client.sendRequest("getNetworkTestResult", request, &response); err != nil {
4893 return nil, err
4894 }
4895 return &response, nil
4896 }
4897
4898 func (client *QuobyteClient) GetNotificationRules(request *GetNotificationRulesRequest) (result *GetNotificationRulesResponse, err error) {
4899 var response GetNotificationRulesResponse
4900 if err = client.sendRequest("getNotificationRules", request, &response); err != nil {
4901 return nil, err
4902 }
4903 return &response, nil
4904 }
4905
4906 func (client *QuobyteClient) GetPolicyPresets(request *GetPolicyPresetsRequest) (result *GetPolicyPresetsResponse, err error) {
4907 var response GetPolicyPresetsResponse
4908 if err = client.sendRequest("getPolicyPresets", request, &response); err != nil {
4909 return nil, err
4910 }
4911 return &response, nil
4912 }
4913
4914 func (client *QuobyteClient) GetPolicyRuleSets(request *GetPolicyRuleSetsRequest) (result *GetPolicyRuleSetsResponse, err error) {
4915 var response GetPolicyRuleSetsResponse
4916 if err = client.sendRequest("getPolicyRuleSets", request, &response); err != nil {
4917 return nil, err
4918 }
4919 return &response, nil
4920 }
4921
4922 func (client *QuobyteClient) GetPolicyRules(request *GetPolicyRulesRequest) (result *GetPolicyRulesResponse, err error) {
4923 var response GetPolicyRulesResponse
4924 if err = client.sendRequest("getPolicyRules", request, &response); err != nil {
4925 return nil, err
4926 }
4927 return &response, nil
4928 }
4929
4930 func (client *QuobyteClient) GetQuota(request *GetQuotaRequest) (result *GetQuotaResponse, err error) {
4931 var response GetQuotaResponse
4932 if err = client.sendRequest("getQuota", request, &response); err != nil {
4933 return nil, err
4934 }
4935 return &response, nil
4936 }
4937
4938 func (client *QuobyteClient) GetRules(request *GetRulesRequest) (result *GetRulesResponse, err error) {
4939 var response GetRulesResponse
4940 if err = client.sendRequest("getRules", request, &response); err != nil {
4941 return nil, err
4942 }
4943 return &response, nil
4944 }
4945
4946 func (client *QuobyteClient) GetServiceDump(request *GetServiceDumpRequest) (result *GetServiceDumpResponse, err error) {
4947 var response GetServiceDumpResponse
4948 if err = client.sendRequest("getServiceDump", request, &response); err != nil {
4949 return nil, err
4950 }
4951 return &response, nil
4952 }
4953
4954 func (client *QuobyteClient) GetServices(request *GetServicesRequest) (result *GetServicesResponse, err error) {
4955 var response GetServicesResponse
4956 if err = client.sendRequest("getServices", request, &response); err != nil {
4957 return nil, err
4958 }
4959 return &response, nil
4960 }
4961
4962 func (client *QuobyteClient) GetSupportDump(request *GetSupportDumpRequest) (result *GetSupportDumpResponse, err error) {
4963 var response GetSupportDumpResponse
4964 if err = client.sendRequest("getSupportDump", request, &response); err != nil {
4965 return nil, err
4966 }
4967 return &response, nil
4968 }
4969
4970 func (client *QuobyteClient) GetSupportDumpStatus(request *GetSupportDumpStatusRequest) (result *GetSupportDumpStatusResponse, err error) {
4971 var response GetSupportDumpStatusResponse
4972 if err = client.sendRequest("getSupportDumpStatus", request, &response); err != nil {
4973 return nil, err
4974 }
4975 return &response, nil
4976 }
4977
4978 func (client *QuobyteClient) GetSystemStatistics(request *GetSystemStatisticsRequest) (result *GetSystemStatisticsResponse, err error) {
4979 var response GetSystemStatisticsResponse
4980 if err = client.sendRequest("getSystemStatistics", request, &response); err != nil {
4981 return nil, err
4982 }
4983 return &response, nil
4984 }
4985
4986 func (client *QuobyteClient) GetTaskList(request *GetTaskListRequest) (result *GetTaskListResponse, err error) {
4987 var response GetTaskListResponse
4988 if err = client.sendRequest("getTaskList", request, &response); err != nil {
4989 return nil, err
4990 }
4991 return &response, nil
4992 }
4993
4994 func (client *QuobyteClient) GetTenant(request *GetTenantRequest) (result *GetTenantResponse, err error) {
4995 var response GetTenantResponse
4996 if err = client.sendRequest("getTenant", request, &response); err != nil {
4997 return nil, err
4998 }
4999 return &response, nil
5000 }
5001
5002 func (client *QuobyteClient) GetUnformattedDevices(request *GetUnformattedDevicesRequest) (result *GetUnformattedDevicesResponse, err error) {
5003 var response GetUnformattedDevicesResponse
5004 if err = client.sendRequest("getUnformattedDevices", request, &response); err != nil {
5005 return nil, err
5006 }
5007 return &response, nil
5008 }
5009
5010 func (client *QuobyteClient) GetUsers(request *GetUsersRequest) (result *GetUsersResponse, err error) {
5011 var response GetUsersResponse
5012 if err = client.sendRequest("getUsers", request, &response); err != nil {
5013 return nil, err
5014 }
5015 return &response, nil
5016 }
5017
5018 func (client *QuobyteClient) GetVolumeList(request *GetVolumeListRequest) (result *GetVolumeListResponse, err error) {
5019 var response GetVolumeListResponse
5020 if err = client.sendRequest("getVolumeList", request, &response); err != nil {
5021 return nil, err
5022 }
5023 return &response, nil
5024 }
5025
5026 func (client *QuobyteClient) ImportAccessKeys(request *ImportAccessKeysRequest) (result *ImportAccessKeysResponse, err error) {
5027 var response ImportAccessKeysResponse
5028 if err = client.sendRequest("importAccessKeys", request, &response); err != nil {
5029 return nil, err
5030 }
5031 return &response, nil
5032 }
5033
5034 func (client *QuobyteClient) ImportConfiguration(request *ImportConfigurationRequest) (result *ImportConfigurationResponse, err error) {
5035 var response ImportConfigurationResponse
5036 if err = client.sendRequest("importConfiguration", request, &response); err != nil {
5037 return nil, err
5038 }
5039 return &response, nil
5040 }
5041
5042 func (client *QuobyteClient) ImportPolicyRules(request *ImportPolicyRulesRequest) (result *ImportPolicyRulesResponse, err error) {
5043 var response ImportPolicyRulesResponse
5044 if err = client.sendRequest("importPolicyRules", request, &response); err != nil {
5045 return nil, err
5046 }
5047 return &response, nil
5048 }
5049
5050 func (client *QuobyteClient) ListCa(request *ListCaRequest) (result *ListCaResponse, err error) {
5051 var response ListCaResponse
5052 if err = client.sendRequest("listCa", request, &response); err != nil {
5053 return nil, err
5054 }
5055 return &response, nil
5056 }
5057
5058 func (client *QuobyteClient) ListCertificates(request *ListCertificatesRequest) (result *ListCertificatesResponse, err error) {
5059 var response ListCertificatesResponse
5060 if err = client.sendRequest("listCertificates", request, &response); err != nil {
5061 return nil, err
5062 }
5063 return &response, nil
5064 }
5065
5066 func (client *QuobyteClient) ListCsr(request *ListCsrRequest) (result *ListCsrResponse, err error) {
5067 var response ListCsrResponse
5068 if err = client.sendRequest("listCsr", request, &response); err != nil {
5069 return nil, err
5070 }
5071 return &response, nil
5072 }
5073
5074 func (client *QuobyteClient) ListRegistryReplicas(request *ListRegistryReplicasRequest) (result *ListRegistryReplicasResponse, err error) {
5075 var response ListRegistryReplicasResponse
5076 if err = client.sendRequest("listRegistryReplicas", request, &response); err != nil {
5077 return nil, err
5078 }
5079 return &response, nil
5080 }
5081
5082 func (client *QuobyteClient) ListSnapshots(request *ListSnapshotsRequest) (result *ListSnapshotsResponse, err error) {
5083 var response ListSnapshotsResponse
5084 if err = client.sendRequest("listSnapshots", request, &response); err != nil {
5085 return nil, err
5086 }
5087 return &response, nil
5088 }
5089
5090 func (client *QuobyteClient) MakeDevice(request *MakeDeviceRequest) (result *MakeDeviceResponse, err error) {
5091 var response MakeDeviceResponse
5092 if err = client.sendRequest("makeDevice", request, &response); err != nil {
5093 return nil, err
5094 }
5095 return &response, nil
5096 }
5097
5098 func (client *QuobyteClient) PublishBucketVolume(request *PublishBucketVolumeRequest) (result *PublishBucketVolumeResponse, err error) {
5099 var response PublishBucketVolumeResponse
5100 if err = client.sendRequest("publishBucketVolume", request, &response); err != nil {
5101 return nil, err
5102 }
5103 return &response, nil
5104 }
5105
5106 func (client *QuobyteClient) RegenerateDatabase(request *RegenerateDatabaseRequest) (result *RegenerateDatabaseResponse, err error) {
5107 var response RegenerateDatabaseResponse
5108 if err = client.sendRequest("regenerateDatabase", request, &response); err != nil {
5109 return nil, err
5110 }
5111 return &response, nil
5112 }
5113
5114 func (client *QuobyteClient) RemoveKeystoreSlot(request *RemoveKeystoreSlotRequest) (result *RemoveKeystoreSlotResponse, err error) {
5115 var response RemoveKeystoreSlotResponse
5116 if err = client.sendRequest("removeKeystoreSlot", request, &response); err != nil {
5117 return nil, err
5118 }
5119 return &response, nil
5120 }
5121
5122 func (client *QuobyteClient) RemoveRegistryReplica(request *RemoveRegistryReplicaRequest) (result *RemoveRegistryReplicaResponse, err error) {
5123 var response RemoveRegistryReplicaResponse
5124 if err = client.sendRequest("removeRegistryReplica", request, &response); err != nil {
5125 return nil, err
5126 }
5127 return &response, nil
5128 }
5129
5130 func (client *QuobyteClient) ResolveGlobalFileId(request *ResolveGlobalFileIdRequest) (result *ResolveGlobalFileIdResponse, err error) {
5131 var response ResolveGlobalFileIdResponse
5132 if err = client.sendRequest("resolveGlobalFileId", request, &response); err != nil {
5133 return nil, err
5134 }
5135 return &response, nil
5136 }
5137
5138 func (client *QuobyteClient) ResolvePolicyRuleName(request *ResolvePolicyRuleNameRequest) (result *ResolvePolicyRuleNameResponse, err error) {
5139 var response ResolvePolicyRuleNameResponse
5140 if err = client.sendRequest("resolvePolicyRuleName", request, &response); err != nil {
5141 return nil, err
5142 }
5143 return &response, nil
5144 }
5145
5146 func (client *QuobyteClient) ResolveTenantName(request *ResolveTenantNameRequest) (result *ResolveTenantNameResponse, err error) {
5147 var response ResolveTenantNameResponse
5148 if err = client.sendRequest("resolveTenantName", request, &response); err != nil {
5149 return nil, err
5150 }
5151 return &response, nil
5152 }
5153
5154 func (client *QuobyteClient) ResolveVolumeName(request *ResolveVolumeNameRequest) (result *ResolveVolumeNameResponse, err error) {
5155 var response ResolveVolumeNameResponse
5156 if err = client.sendRequest("resolveVolumeName", request, &response); err != nil {
5157 return nil, err
5158 }
5159 return &response, nil
5160 }
5161
5162 func (client *QuobyteClient) ResumeTask(request *ResumeTaskRequest) (result *ResumeTaskResponse, err error) {
5163 var response ResumeTaskResponse
5164 if err = client.sendRequest("resumeTask", request, &response); err != nil {
5165 return nil, err
5166 }
5167 return &response, nil
5168 }
5169
5170 func (client *QuobyteClient) RetryTask(request *RetryTaskRequest) (result *RetryTaskResponse, err error) {
5171 var response RetryTaskResponse
5172 if err = client.sendRequest("retryTask", request, &response); err != nil {
5173 return nil, err
5174 }
5175 return &response, nil
5176 }
5177
5178 func (client *QuobyteClient) RevokeCertificate(request *RevokeCertificateRequest) (result *RevokeCertificateResponse, err error) {
5179 var response RevokeCertificateResponse
5180 if err = client.sendRequest("revokeCertificate", request, &response); err != nil {
5181 return nil, err
5182 }
5183 return &response, nil
5184 }
5185
5186 func (client *QuobyteClient) SetCertificateOwner(request *SetCertificateOwnerRequest) (result *SetCertificateOwnerResponse, err error) {
5187 var response SetCertificateOwnerResponse
5188 if err = client.sendRequest("setCertificateOwner", request, &response); err != nil {
5189 return nil, err
5190 }
5191 return &response, nil
5192 }
5193
5194 func (client *QuobyteClient) SetCertificateSubject(request *SetCertificateSubjectRequest) (result *SetCertificateSubjectResponse, err error) {
5195 var response SetCertificateSubjectResponse
5196 if err = client.sendRequest("setCertificateSubject", request, &response); err != nil {
5197 return nil, err
5198 }
5199 return &response, nil
5200 }
5201
5202 func (client *QuobyteClient) SetConfiguration(request *SetConfigurationRequest) (result *SetConfigurationResponse, err error) {
5203 var response SetConfigurationResponse
5204 if err = client.sendRequest("setConfiguration", request, &response); err != nil {
5205 return nil, err
5206 }
5207 return &response, nil
5208 }
5209
5210 func (client *QuobyteClient) SetEncryptedVolumeKey(request *SetEncryptedVolumeKeyRequest) (result *SetEncryptedVolumeKeyResponse, err error) {
5211 var response SetEncryptedVolumeKeyResponse
5212 if err = client.sendRequest("setEncryptedVolumeKey", request, &response); err != nil {
5213 return nil, err
5214 }
5215 return &response, nil
5216 }
5217
5218 func (client *QuobyteClient) SetLabels(request *SetLabelsRequest) (result *SetLabelsResponse, err error) {
5219 var response SetLabelsResponse
5220 if err = client.sendRequest("setLabels", request, &response); err != nil {
5221 return nil, err
5222 }
5223 return &response, nil
5224 }
5225
5226 func (client *QuobyteClient) SetNotificationRule(request *SetNotificationRuleRequest) (result *SetNotificationRuleResponse, err error) {
5227 var response SetNotificationRuleResponse
5228 if err = client.sendRequest("setNotificationRule", request, &response); err != nil {
5229 return nil, err
5230 }
5231 return &response, nil
5232 }
5233
5234 func (client *QuobyteClient) SetQuota(request *SetQuotaRequest) (result *SetQuotaResponse, err error) {
5235 var response SetQuotaResponse
5236 if err = client.sendRequest("setQuota", request, &response); err != nil {
5237 return nil, err
5238 }
5239 return &response, nil
5240 }
5241
5242 func (client *QuobyteClient) SetTenant(request *SetTenantRequest) (result *SetTenantResponse, err error) {
5243 var response SetTenantResponse
5244 if err = client.sendRequest("setTenant", request, &response); err != nil {
5245 return nil, err
5246 }
5247 return &response, nil
5248 }
5249
5250 func (client *QuobyteClient) SilenceAlert(request *SilenceAlertRequest) (result *SilenceAlertResponse, err error) {
5251 var response SilenceAlertResponse
5252 if err = client.sendRequest("silenceAlert", request, &response); err != nil {
5253 return nil, err
5254 }
5255 return &response, nil
5256 }
5257
5258 func (client *QuobyteClient) StartNetworkTest(request *StartNetworkTestRequest) (result *StartNetworkTestResponse, err error) {
5259 var response StartNetworkTestResponse
5260 if err = client.sendRequest("startNetworkTest", request, &response); err != nil {
5261 return nil, err
5262 }
5263 return &response, nil
5264 }
5265
5266 func (client *QuobyteClient) UnlockMasterKeystoreSlot(request *UnlockMasterKeystoreSlotRequest) (result *UnlockMasterKeystoreSlotResponse, err error) {
5267 var response UnlockMasterKeystoreSlotResponse
5268 if err = client.sendRequest("unlockMasterKeystoreSlot", request, &response); err != nil {
5269 return nil, err
5270 }
5271 return &response, nil
5272 }
5273
5274 func (client *QuobyteClient) UnpublishBucketVolume(request *UnpublishBucketVolumeRequest) (result *UnpublishBucketVolumeResponse, err error) {
5275 var response UnpublishBucketVolumeResponse
5276 if err = client.sendRequest("unpublishBucketVolume", request, &response); err != nil {
5277 return nil, err
5278 }
5279 return &response, nil
5280 }
5281
5282 func (client *QuobyteClient) UpdateDevice(request *UpdateDeviceRequest) (result *UpdateDeviceResponse, err error) {
5283 var response UpdateDeviceResponse
5284 if err = client.sendRequest("updateDevice", request, &response); err != nil {
5285 return nil, err
5286 }
5287 return &response, nil
5288 }
5289
5290 func (client *QuobyteClient) UpdatePolicyRules(request *UpdatePolicyRulesRequest) (result *UpdatePolicyRulesResponse, err error) {
5291 var response UpdatePolicyRulesResponse
5292 if err = client.sendRequest("updatePolicyRules", request, &response); err != nil {
5293 return nil, err
5294 }
5295 return &response, nil
5296 }
5297
5298 func (client *QuobyteClient) UpdateUser(request *UpdateUserRequest) (result *UpdateUserResponse, err error) {
5299 var response UpdateUserResponse
5300 if err = client.sendRequest("updateUser", request, &response); err != nil {
5301 return nil, err
5302 }
5303 return &response, nil
5304 }
5305
5306 func (client *QuobyteClient) UpdateVolume(request *UpdateVolumeRequest) (result *UpdateVolumeResponse, err error) {
5307 var response UpdateVolumeResponse
5308 if err = client.sendRequest("updateVolume", request, &response); err != nil {
5309 return nil, err
5310 }
5311 return &response, nil
5312 }
5313
5314 func (client *QuobyteClient) VerifyLicense(request *VerifyLicenseRequest) (result *VerifyLicenseResponse, err error) {
5315 var response VerifyLicenseResponse
5316 if err = client.sendRequest("verifyLicense", request, &response); err != nil {
5317 return nil, err
5318 }
5319 return &response, nil
5320 }
+0
-79
quobyte.go less more
0 // Package quobyte represents a golang API for the Quobyte Storage System
1 package quobyte
2
3 import "net/http"
4
5 type QuobyteClient struct {
6 client *http.Client
7 url string
8 username string
9 password string
10 }
11
12 // NewQuobyteClient creates a new Quobyte API client
13 func NewQuobyteClient(url string, username string, password string) *QuobyteClient {
14 return &QuobyteClient{
15 client: &http.Client{},
16 url: url,
17 username: username,
18 password: password,
19 }
20 }
21
22 // CreateVolume creates a new Quobyte volume. Its root directory will be owned by given user and group
23 func (client QuobyteClient) CreateVolume(request *CreateVolumeRequest) (string, error) {
24 var response volumeUUID
25 if err := client.sendRequest("createVolume", request, &response); err != nil {
26 return "", err
27 }
28
29 return response.VolumeUUID, nil
30 }
31
32 // ResolveVolumeNameToUUID resolves a volume name to a UUID
33 func (client *QuobyteClient) ResolveVolumeNameToUUID(volumeName, tenant string) (string, error) {
34 request := &resolveVolumeNameRequest{
35 VolumeName: volumeName,
36 TenantDomain: tenant,
37 }
38 var response volumeUUID
39 if err := client.sendRequest("resolveVolumeName", request, &response); err != nil {
40 return "", err
41 }
42
43 return response.VolumeUUID, nil
44 }
45
46 // DeleteVolume deletes a Quobyte volume
47 func (client *QuobyteClient) DeleteVolume(UUID string) error {
48 return client.sendRequest(
49 "deleteVolume",
50 &volumeUUID{
51 VolumeUUID: UUID,
52 },
53 nil)
54 }
55
56 // DeleteVolumeByName deletes a volume by a given name
57 func (client *QuobyteClient) DeleteVolumeByName(volumeName, tenant string) error {
58 uuid, err := client.ResolveVolumeNameToUUID(volumeName, tenant)
59 if err != nil {
60 return err
61 }
62
63 return client.DeleteVolume(uuid)
64 }
65
66 // GetClientList returns a list of all active clients
67 func (client *QuobyteClient) GetClientList(tenant string) (GetClientListResponse, error) {
68 request := &getClientListRequest{
69 TenantDomain: tenant,
70 }
71
72 var response GetClientListResponse
73 if err := client.sendRequest("getClientListRequest", request, &response); err != nil {
74 return response, err
75 }
76
77 return response, nil
78 }
+0
-108
rpc_client.go less more
0 package quobyte
1
2 import (
3 "bytes"
4 "encoding/json"
5 "errors"
6 "io"
7 "math/rand"
8 "net/http"
9 "strconv"
10 )
11
12 const (
13 emptyResponse string = "Empty result and no error occured"
14 )
15
16 type request struct {
17 ID string `json:"id"`
18 Version string `json:"jsonrpc"`
19 Method string `json:"method"`
20 Params interface{} `json:"params"`
21 }
22
23 type response struct {
24 ID string `json:"id"`
25 Version string `json:"jsonrpc"`
26 Result *json.RawMessage `json:"result"`
27 Error *json.RawMessage `json:"error"`
28 }
29
30 type rpcError struct {
31 Code int64 `json:"code"`
32 Message string `json:"message"`
33 }
34
35 func (err *rpcError) decodeErrorCode() string {
36 switch err.Code {
37 case -32600:
38 return "ERROR_CODE_INVALID_REQUEST"
39 case -32603:
40 return "ERROR_CODE_JSON_ENCODING_FAILED"
41 case -32601:
42 return "ERROR_CODE_METHOD_NOT_FOUND"
43 case -32700:
44 return "ERROR_CODE_PARSE_ERROR"
45 }
46
47 return ""
48 }
49
50 func encodeRequest(method string, params interface{}) ([]byte, error) {
51 return json.Marshal(&request{
52 // Generate random ID and convert it to a string
53 ID: strconv.FormatInt(rand.Int63(), 10),
54 Version: "2.0",
55 Method: method,
56 Params: params,
57 })
58 }
59
60 func decodeResponse(ioReader io.Reader, reply interface{}) error {
61 var resp response
62 if err := json.NewDecoder(ioReader).Decode(&resp); err != nil {
63 return err
64 }
65
66 if resp.Error != nil {
67 var rpcErr rpcError
68 if err := json.Unmarshal(*resp.Error, &rpcErr); err != nil {
69 return err
70 }
71
72 if rpcErr.Message != "" {
73 return errors.New(rpcErr.Message)
74 }
75
76 respError := rpcErr.decodeErrorCode()
77 if respError != "" {
78 return errors.New(respError)
79 }
80 }
81
82 if resp.Result != nil && reply != nil {
83 return json.Unmarshal(*resp.Result, reply)
84 }
85
86 return errors.New(emptyResponse)
87 }
88
89 func (client QuobyteClient) sendRequest(method string, request interface{}, response interface{}) error {
90 message, err := encodeRequest(method, request)
91 if err != nil {
92 return err
93 }
94 req, err := http.NewRequest("POST", client.url, bytes.NewBuffer(message))
95 if err != nil {
96 return err
97 }
98 req.Header.Set("Content-Type", "application/json")
99 req.SetBasicAuth(client.username, client.password)
100 resp, err := client.client.Do(req)
101 if err != nil {
102 return err
103 }
104 defer resp.Body.Close()
105
106 return decodeResponse(resp.Body, &response)
107 }
+0
-177
rpc_client_test.go less more
0 package quobyte
1
2 import (
3 "bytes"
4 "encoding/json"
5 "reflect"
6 "testing"
7 )
8
9 func TestSuccesfullEncodeRequest(t *testing.T) {
10 req := &CreateVolumeRequest{
11 RootUserID: "root",
12 RootGroupID: "root",
13 Name: "test",
14 }
15
16 //Generate Params here
17 var param map[string]interface{}
18 byt, _ := json.Marshal(req)
19 _ = json.Unmarshal(byt, &param)
20
21 expectedRPCRequest := &request{
22 ID: "0",
23 Method: "createVolume",
24 Version: "2.0",
25 Params: param,
26 }
27
28 res, _ := encodeRequest("createVolume", req)
29
30 var reqResult request
31 json.Unmarshal(res, &reqResult)
32
33 if expectedRPCRequest.Version != reqResult.Version {
34 t.Logf("Expected Version: %s got %s\n", expectedRPCRequest.Version, reqResult.Version)
35 t.Fail()
36 }
37
38 if expectedRPCRequest.Method != reqResult.Method {
39 t.Logf("Expected Method: %s got %s\n", expectedRPCRequest.Method, reqResult.Method)
40 t.Fail()
41 }
42
43 if !reflect.DeepEqual(expectedRPCRequest.Params, reqResult.Params) {
44 t.Logf("Expected Params: %v got %v\n", expectedRPCRequest.Params, reqResult.Params)
45 t.Fail()
46 }
47 }
48
49 func TestSuccesfullDecodeResponse(t *testing.T) {
50 var byt json.RawMessage
51 byt, _ = json.Marshal(map[string]interface{}{"volume_uuid": "1234"})
52
53 expectedResult := &response{
54 ID: "0",
55 Version: "2.0",
56 Result: &byt,
57 }
58
59 res, _ := json.Marshal(expectedResult)
60
61 var resp volumeUUID
62 err := decodeResponse(bytes.NewReader(res), &resp)
63 if err != nil {
64 t.Log(err)
65 t.Fail()
66 }
67
68 if "1234" != resp.VolumeUUID {
69 t.Logf("Expected Volume UUID: %v got %v\n", "1234", resp.VolumeUUID)
70 t.Fail()
71 }
72 }
73
74 func TestSuccesfullDecodeResponseWithErrorMessage(t *testing.T) {
75 errorMessage := "ERROR_CODE_INVALID_REQUEST"
76 var byt json.RawMessage
77 byt, _ = json.Marshal(&rpcError{
78 Code: -32600,
79 Message: "ERROR_CODE_INVALID_REQUEST",
80 })
81
82 expectedResult := &response{
83 ID: "0",
84 Version: "2.0",
85 Error: &byt,
86 }
87
88 res, _ := json.Marshal(expectedResult)
89
90 var resp volumeUUID
91 err := decodeResponse(bytes.NewReader(res), &resp)
92 if err == nil {
93 t.Log("No error occured")
94 t.Fail()
95 }
96
97 if errorMessage != err.Error() {
98 t.Logf("Expected: %s got %s\n", errorMessage, err.Error())
99 t.Fail()
100 }
101 }
102
103 func TestSuccesfullDecodeResponseWithErrorCode(t *testing.T) {
104 errorMessage := "ERROR_CODE_INVALID_REQUEST"
105 var byt json.RawMessage
106 byt, _ = json.Marshal(&rpcError{
107 Code: -32600,
108 })
109
110 expectedResult := &response{
111 ID: "0",
112 Version: "2.0",
113 Error: &byt,
114 }
115
116 res, _ := json.Marshal(expectedResult)
117
118 var resp volumeUUID
119 err := decodeResponse(bytes.NewReader(res), &resp)
120 if err == nil {
121 t.Log("No error occured")
122 t.Fail()
123 }
124
125 if errorMessage != err.Error() {
126 t.Logf("Expected: %s got %s\n", errorMessage, err.Error())
127 t.Fail()
128 }
129 }
130
131 func TestBadDecodeResponse(t *testing.T) {
132 expectedResult := &response{
133 ID: "0",
134 Version: "2.0",
135 }
136
137 res, _ := json.Marshal(expectedResult)
138
139 var resp volumeUUID
140 err := decodeResponse(bytes.NewReader(res), &resp)
141 if err == nil {
142 t.Log("No error occured")
143 t.Fail()
144 }
145
146 if emptyResponse != err.Error() {
147 t.Logf("Expected: %s got %s\n", emptyResponse, err.Error())
148 t.Fail()
149 }
150 }
151
152 type decodeErrorCodeTest struct {
153 code int64
154 expected string
155 }
156
157 func TestDecodeErrorCode(t *testing.T) {
158 tests := []*decodeErrorCodeTest{
159 &decodeErrorCodeTest{code: -32600, expected: "ERROR_CODE_INVALID_REQUEST"},
160 &decodeErrorCodeTest{code: -32603, expected: "ERROR_CODE_JSON_ENCODING_FAILED"},
161 &decodeErrorCodeTest{code: -32601, expected: "ERROR_CODE_METHOD_NOT_FOUND"},
162 &decodeErrorCodeTest{code: -32700, expected: "ERROR_CODE_PARSE_ERROR"},
163 }
164
165 _ = tests
166 for _, decodeTest := range tests {
167 err := &rpcError{
168 Code: decodeTest.code,
169 }
170
171 if decodeTest.expected != err.decodeErrorCode() {
172 t.Logf("Expected: %s got %s\n", decodeTest.expected, err.decodeErrorCode())
173 t.Fail()
174 }
175 }
176 }
+0
-34
types.go less more
0 package quobyte
1
2 // CreateVolumeRequest represents a CreateVolumeRequest
3 type CreateVolumeRequest struct {
4 Name string `json:"name,omitempty"`
5 RootUserID string `json:"root_user_id,omitempty"`
6 RootGroupID string `json:"root_group_id,omitempty"`
7 ReplicaDeviceIDS []uint64 `json:"replica_device_ids,string,omitempty"`
8 ConfigurationName string `json:"configuration_name,omitempty"`
9 AccessMode uint32 `json:"access_mode,string,omitempty"`
10 TenantID string `json:"tenant_id,omitempty"`
11 }
12
13 type resolveVolumeNameRequest struct {
14 VolumeName string `json:"volume_name,omitempty"`
15 TenantDomain string `json:"tenant_domain,omitempty"`
16 }
17
18 type volumeUUID struct {
19 VolumeUUID string `json:"volume_uuid,omitempty"`
20 }
21
22 type getClientListRequest struct {
23 TenantDomain string `json:"tenant_domain,omitempty"`
24 }
25
26 type GetClientListResponse struct {
27 Clients []Client `json:"client,omitempty"`
28 }
29
30 type Client struct {
31 MountedUserName string `json:"mount_user_name,omitempty"`
32 MountedVolumeUUID string `json:"mounted_volume_uuid,omitempty"`
33 }