aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/yandex-cloud-api-protos/yandex/cloud/compute/v1/disk_service.proto
blob: 606336cee95c97889a4ae61106078a9d19a397a7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
syntax = "proto3";

package yandex.cloud.compute.v1;

import "google/api/annotations.proto";
import "google/protobuf/field_mask.proto";
import "yandex/cloud/access/access.proto";
import "yandex/cloud/api/operation.proto";
import "yandex/cloud/compute/v1/disk.proto";
import "yandex/cloud/compute/v1/snapshot_schedule.proto";
import "yandex/cloud/operation/operation.proto";
import "yandex/cloud/validation.proto";

option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/compute/v1;compute";
option java_package = "yandex.cloud.api.compute.v1";

// A set of methods for managing Disk resources.
service DiskService {
  // Returns the specified Disk resource.
  //
  // To get the list of available Disk resources, make a [List] request.
  rpc Get (GetDiskRequest) returns (Disk) {
    option (google.api.http) = { get: "/compute/v1/disks/{disk_id}" };
  }

  // Retrieves the list of Disk resources in the specified folder.
  rpc List (ListDisksRequest) returns (ListDisksResponse) {
    option (google.api.http) = { get: "/compute/v1/disks" };
  }

  // Creates a disk in the specified folder.
  //
  // You can create an empty disk or restore it from a snapshot or an image.
  // Method starts an asynchronous operation that can be cancelled while it is in progress.
  rpc Create (CreateDiskRequest) returns (operation.Operation) {
    option (google.api.http) = { post: "/compute/v1/disks" body: "*" };
    option (yandex.cloud.api.operation) = {
      metadata: "CreateDiskMetadata"
      response: "Disk"
    };
  }

  // Updates the specified disk.
  rpc Update (UpdateDiskRequest) returns (operation.Operation) {
    option (google.api.http) = { patch: "/compute/v1/disks/{disk_id}" body: "*" };
    option (yandex.cloud.api.operation) = {
      metadata: "UpdateDiskMetadata"
      response: "Disk"
    };
  }

  // Deletes the specified disk.
  //
  // Deleting a disk removes its data permanently and is irreversible. However, deleting a disk does not delete
  // any snapshots or images previously made from the disk. You must delete snapshots and images separately.
  //
  // It is not possible to delete a disk that is attached to an instance.
  rpc Delete (DeleteDiskRequest) returns (operation.Operation) {
    option (google.api.http) = { delete: "/compute/v1/disks/{disk_id}" };
    option (yandex.cloud.api.operation) = {
      metadata: "DeleteDiskMetadata"
      response: "google.protobuf.Empty"
    };
  }

  // Lists operations for the specified disk.
  rpc ListOperations (ListDiskOperationsRequest) returns (ListDiskOperationsResponse) {
    option (google.api.http) = { get: "/compute/v1/disks/{disk_id}/operations" };
  }

  // Moves the specified disk to another folder of the same cloud.
  rpc Move (MoveDiskRequest) returns (operation.Operation) {
    option (google.api.http) = { post: "/compute/v1/disks/{disk_id}:move" body: "*" };
    option (yandex.cloud.api.operation) = {
      metadata: "MoveDiskMetadata"
      response: "Disk"
    };
  }

  // Moves the specified disk to another availability zone
  //
  // Disk must be detached from instances. To move attached
  // disk use [InstanceService.Relocate] request.
  rpc Relocate(RelocateDiskRequest) returns (operation.Operation) {
    option (google.api.http) = { post: "/compute/v1/disks/{disk_id}:relocate" body: "*" };
    option (yandex.cloud.api.operation) = {
      metadata: "RelocateDiskMetadata"
      response: "Disk"
    };
  }

  // Retrieves the list of snapshot schedules the specified disk is attached to.
  rpc ListSnapshotSchedules (ListDiskSnapshotSchedulesRequest) returns (ListDiskSnapshotSchedulesResponse);

  // access

  // Lists access bindings for the disk.
  rpc ListAccessBindings (access.ListAccessBindingsRequest) returns (access.ListAccessBindingsResponse) {
    option (google.api.http) = { get: "/compute/v1/disks/{resource_id}:listAccessBindings" };
  }

  // Sets access bindings for the disk.
  rpc SetAccessBindings (access.SetAccessBindingsRequest) returns (operation.Operation) {
    option (google.api.http) = { post: "/compute/v1/disks/{resource_id}:setAccessBindings" body: "*" };
    option (yandex.cloud.api.operation) = {
      metadata: "access.SetAccessBindingsMetadata"
      response: "access.AccessBindingsOperationResult"
    };
  }

  // Updates access bindings for the disk.
  rpc UpdateAccessBindings (access.UpdateAccessBindingsRequest) returns (operation.Operation) {
    option (google.api.http) = { post: "/compute/v1/disks/{resource_id}:updateAccessBindings" body: "*" };
    option (yandex.cloud.api.operation) = {
      metadata: "access.UpdateAccessBindingsMetadata"
      response: "access.AccessBindingsOperationResult"
    };
  }
}

message GetDiskRequest {
  // ID of the Disk resource to return.
  // To get the disk ID use a [DiskService.List] request.
  string disk_id = 1 [(required) = true, (length) = "<=50"];
}

message ListDisksRequest {
  // ID of the folder to list disks in.
  // To get the folder ID use a [yandex.cloud.resourcemanager.v1.FolderService.List] request.
  string folder_id = 1 [(required) = true, (length) = "<=50"];

  // The maximum number of results per page to return. If the number of available
  // results is larger than [page_size],
  // the service returns a [ListDisksResponse.next_page_token]
  // that can be used to get the next page of results in subsequent list requests.
  int64 page_size = 2 [(value) = "<=1000"];

  // Page token. To get the next page of results, set [page_token] to the
  // [ListDisksResponse.next_page_token] returned by a previous list request.
  string page_token = 3 [(length) = "<=100"];

  // A filter expression that filters resources listed in the response.
  // The expression consists of one or more conditions united by `AND` operator: `<condition1> [AND <condition2> [<...> AND <conditionN>]]`.
  //
  // Each condition has the form `<field> <operator> <value>`, where:
  // 1. `<field>` is the field name. Currently you can use filtering only on the limited number of fields.
  // 2. `<operator>` is a logical operator, one of `=`, `!=`, `IN`, `NOT IN`.
  // 3. `<value>` represents a value.
  // String values should be written in double (`"`) or single (`'`) quotes. C-style escape sequences are supported (`\"` turns to `"`, `\'` to `'`, `\\` to backslash).
  string filter = 4 [(length) = "<=1000"];

  // By which column the listing should be ordered and in which direction,
  // format is "createdAt desc". "id asc" if omitted.
  // The default sorting order is ascending
  string order_by = 5 [(length) = "<=100"];
}

message ListDisksResponse {
  // List of Disk resources.
  repeated Disk disks = 1;

  // This token allows you to get the next page of results for list requests. If the number of results
  // is larger than [ListDisksRequest.page_size], use
  // the [next_page_token] as the value
  // for the [ListDisksRequest.page_token] query parameter
  // in the next list request. Each subsequent list request will have its own
  // [next_page_token] to continue paging through the results.
  string next_page_token = 2;
}

message CreateDiskRequest {
  // ID of the folder to create a disk in.
  // To get the folder ID use a [yandex.cloud.resourcemanager.v1.FolderService.List] request.
  string folder_id = 1 [(required) = true, (length) = "<=50"];

  // Name of the disk.
  string name = 2 [(pattern) = "|[a-z]([-a-z0-9]{0,61}[a-z0-9])?"];

  // Description of the disk.
  string description = 3 [(length) = "<=256"];

  // Resource labels as `key:value` pairs.
  map<string, string> labels = 4 [(yandex.cloud.size) = "<=64", (length) = "<=63", (pattern) = "[-_./\\@0-9a-z]*", (map_key).length = "1-63", (map_key).pattern = "[a-z][-_./\\@0-9a-z]*"];

  // ID of the disk type.
  // To get a list of available disk types use the [yandex.cloud.compute.v1.DiskTypeService.List] request.
  string type_id = 5 [(length) = "<=50"];

  // ID of the availability zone where the disk resides.
  // To get a list of available zones use the [yandex.cloud.compute.v1.ZoneService.List] request.
  string zone_id = 6 [(required) = true, (length) = "<=50"];

  // Size of the disk, specified in bytes.
  // If the disk was created from a image, this value should be more than the
  // [yandex.cloud.compute.v1.Image.min_disk_size] value.
  int64 size = 7 [(required) = true, (value) = "4194304-28587302322176"];

  oneof source {
    // ID of the image to create the disk from.
    string image_id = 8 [(length) = "<=50"];

    // ID of the snapshot to restore the disk from.
    string snapshot_id = 9 [(length) = "<=50"];
  }

  // Block size used for disk, specified in bytes. The default is 4096.
  int64 block_size = 10;

  // Placement policy configuration.
  DiskPlacementPolicy disk_placement_policy = 11;

  // List of IDs of the snapshot schedules to attach the disk to.
  repeated string snapshot_schedule_ids = 12;
}

message CreateDiskMetadata {
  // ID of the disk that is being created.
  string disk_id = 1;
}

message UpdateDiskRequest {
  // ID of the Disk resource to update.
  // To get the disk ID use a [DiskService.List] request.
  string disk_id = 1 [(required) = true, (length) = "<=50"];

  // Field mask that specifies which fields of the Disk resource are going to be updated.
  google.protobuf.FieldMask update_mask = 2;

  // Name of the disk.
  string name = 3 [(pattern) = "|[a-z]([-a-z0-9]{0,61}[a-z0-9])?"];

  // Description of the disk.
  string description = 4 [(length) = "<=256"];

  // Resource labels as `key:value` pairs.
  //
  // Existing set of `labels` is completely replaced by the provided set.
  map<string, string> labels = 5 [(yandex.cloud.size) = "<=64", (length) = "<=63", (pattern) = "[-_./\\@0-9a-z]*", (map_key).length = "1-63", (map_key).pattern = "[a-z][-_./\\@0-9a-z]*"];

  // Size of the disk, specified in bytes.
  int64 size = 6 [(value) = "4194304-4398046511104"];

  // Placement policy configuration.
  DiskPlacementPolicy disk_placement_policy = 7;
}

message UpdateDiskMetadata {
  // ID of the Disk resource that is being updated.
  string disk_id = 1;
}

message DeleteDiskRequest {
  // ID of the disk to delete.
  // To get the disk ID use a [DiskService.List] request.
  string disk_id = 1 [(required) = true, (length) = "<=50"];
}

message DeleteDiskMetadata {
  // ID of the disk that is being deleted.
  string disk_id = 1;
}

message ListDiskOperationsRequest {
  // ID of the Disk resource to list operations for.
  string disk_id = 1 [(required) = true, (length) = "<=50"];

  // The maximum number of results per page to return. If the number of available
  // results is larger than [page_size], the service returns a [ListDiskOperationsResponse.next_page_token]
  // that can be used to get the next page of results in subsequent list requests.
  int64 page_size = 2 [(value) = "<=1000"];

  // Page token. To get the next page of results, set [page_token] to the
  // [ListDiskOperationsResponse.next_page_token] returned by a previous list request.
  string page_token = 3 [(length) = "<=100"];
}

message ListDiskOperationsResponse {
  // List of operations for the specified disk.
  repeated operation.Operation operations = 1;

  // This token allows you to get the next page of results for list requests. If the number of results
  // is larger than [ListDiskOperationsRequest.page_size], use the [next_page_token] as the value
  // for the [ListDiskOperationsRequest.page_token] query parameter in the next list request.
  // Each subsequent list request will have its own [next_page_token] to continue paging through the results.
  string next_page_token = 2;
}

message MoveDiskRequest {
  // ID of the disk to move.
  //
  // To get the disk ID, make a [DiskService.List] request.
  string disk_id = 1 [(required) = true, (length) = "<=50"];

  // ID of the folder to move the disk to.
  //
  // To get the folder ID, make a [yandex.cloud.resourcemanager.v1.FolderService.List] request.
  string destination_folder_id = 2 [(required) = true, (length) = "<=50"];
}

message MoveDiskMetadata {
  // ID of the disk that is being moved.
  string disk_id = 1;

  // ID of the folder that the disk is being moved from.
  string source_folder_id = 2;

  // ID of the folder that the disk is being moved to.
  string destination_folder_id = 3;
}

message RelocateDiskRequest {
  // ID of the disk to move.
  //
  // To get the disk ID, make a [DiskService.List] request.
  string disk_id = 1 [(required) = true, (length) = "<=50"];

  // ID of the availability zone to move the disk to.
  //
  // To get the zone ID, make a [ZoneService.List] request.
  string destination_zone_id = 2 [(required) = true, (length) = "<=50"];

  // Placement policy configuration in target zone. Must be specified if disk has placement policy.
  DiskPlacementPolicy disk_placement_policy = 3;
}

message RelocateDiskMetadata {
  // ID of the disk that is being moved.
  string disk_id = 1;

  // ID of the availability zone that the disk is being moved from.
  string source_zone_id = 2;

  // ID of the availability zone that the disk is being moved to.
  string destination_zone_id = 3;
}

message ListDiskSnapshotSchedulesRequest {
  // ID of the disk to list snapshot schedules for.
  string disk_id = 1;

  // The maximum number of results per page to return. If the number of available
  // results is larger than `page_size`, the service returns a [ListDiskSnapshotSchedulesResponse.next_page_token]
  // that can be used to get the next page of results in subsequent list requests.
  //
  // Default value: 100.
  int64 page_size = 2;

  // Page token. To get the next page of results, set `page_token` to the
  // [ListDiskSnapshotSchedulesResponse.next_page_token] returned by a previous list request.
  string page_token = 3;
}

message ListDiskSnapshotSchedulesResponse {
  // List of snapshot schedules the specified disk is attached to.
  repeated SnapshotSchedule snapshot_schedules = 1;

  // Token for getting the next page of the list. If the number of results is greater than
  // the specified [ListDiskSnapshotSchedulesRequest.page_size], use `next_page_token` as the value
  // for the [ListDiskSnapshotSchedulesRequest.page_token] parameter in the next list request.
  //
  // Each subsequent page will have its own `next_page_token` to continue paging through the results.
  string next_page_token = 2;
}