1// Copyright 2022 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.cloud.vmmigration.v1;
18
19import "google/api/annotations.proto";
20import "google/api/client.proto";
21import "google/api/field_behavior.proto";
22import "google/api/resource.proto";
23import "google/longrunning/operations.proto";
24import "google/protobuf/duration.proto";
25import "google/protobuf/field_mask.proto";
26import "google/protobuf/timestamp.proto";
27import "google/rpc/error_details.proto";
28import "google/rpc/status.proto";
29
30option csharp_namespace = "Google.Cloud.VMMigration.V1";
31option go_package = "cloud.google.com/go/vmmigration/apiv1/vmmigrationpb;vmmigrationpb";
32option java_multiple_files = true;
33option java_outer_classname = "VmMigrationProto";
34option java_package = "com.google.cloud.vmmigration.v1";
35option php_namespace = "Google\\Cloud\\VMMigration\\V1";
36option ruby_package = "Google::Cloud::VMMigration::V1";
37
38// VM Migration Service
39service VmMigration {
40  option (google.api.default_host) = "vmmigration.googleapis.com";
41  option (google.api.oauth_scopes) =
42      "https://www.googleapis.com/auth/cloud-platform";
43
44  // Lists Sources in a given project and location.
45  rpc ListSources(ListSourcesRequest) returns (ListSourcesResponse) {
46    option (google.api.http) = {
47      get: "/v1/{parent=projects/*/locations/*}/sources"
48    };
49    option (google.api.method_signature) = "parent";
50  }
51
52  // Gets details of a single Source.
53  rpc GetSource(GetSourceRequest) returns (Source) {
54    option (google.api.http) = {
55      get: "/v1/{name=projects/*/locations/*/sources/*}"
56    };
57    option (google.api.method_signature) = "name";
58  }
59
60  // Creates a new Source in a given project and location.
61  rpc CreateSource(CreateSourceRequest) returns (google.longrunning.Operation) {
62    option (google.api.http) = {
63      post: "/v1/{parent=projects/*/locations/*}/sources"
64      body: "source"
65    };
66    option (google.api.method_signature) = "parent,source,source_id";
67    option (google.longrunning.operation_info) = {
68      response_type: "Source"
69      metadata_type: "OperationMetadata"
70    };
71  }
72
73  // Updates the parameters of a single Source.
74  rpc UpdateSource(UpdateSourceRequest) returns (google.longrunning.Operation) {
75    option (google.api.http) = {
76      patch: "/v1/{source.name=projects/*/locations/*/sources/*}"
77      body: "source"
78    };
79    option (google.api.method_signature) = "source,update_mask";
80    option (google.longrunning.operation_info) = {
81      response_type: "Source"
82      metadata_type: "OperationMetadata"
83    };
84  }
85
86  // Deletes a single Source.
87  rpc DeleteSource(DeleteSourceRequest) returns (google.longrunning.Operation) {
88    option (google.api.http) = {
89      delete: "/v1/{name=projects/*/locations/*/sources/*}"
90    };
91    option (google.api.method_signature) = "name";
92    option (google.longrunning.operation_info) = {
93      response_type: "google.protobuf.Empty"
94      metadata_type: "OperationMetadata"
95    };
96  }
97
98  // List remote source's inventory of VMs.
99  // The remote source is the onprem vCenter (remote in the sense it's not in
100  // Compute Engine). The inventory describes the list of existing VMs in that
101  // source. Note that this operation lists the VMs on the remote source, as
102  // opposed to listing the MigratingVms resources in the vmmigration service.
103  rpc FetchInventory(FetchInventoryRequest) returns (FetchInventoryResponse) {
104    option (google.api.http) = {
105      get: "/v1/{source=projects/*/locations/*/sources/*}:fetchInventory"
106    };
107    option (google.api.method_signature) = "source";
108  }
109
110  // Lists Utilization Reports of the given Source.
111  rpc ListUtilizationReports(ListUtilizationReportsRequest)
112      returns (ListUtilizationReportsResponse) {
113    option (google.api.http) = {
114      get: "/v1/{parent=projects/*/locations/*/sources/*}/utilizationReports"
115    };
116    option (google.api.method_signature) = "parent";
117  }
118
119  // Gets a single Utilization Report.
120  rpc GetUtilizationReport(GetUtilizationReportRequest)
121      returns (UtilizationReport) {
122    option (google.api.http) = {
123      get: "/v1/{name=projects/*/locations/*/sources/*/utilizationReports/*}"
124    };
125    option (google.api.method_signature) = "name";
126  }
127
128  // Creates a new UtilizationReport.
129  rpc CreateUtilizationReport(CreateUtilizationReportRequest)
130      returns (google.longrunning.Operation) {
131    option (google.api.http) = {
132      post: "/v1/{parent=projects/*/locations/*/sources/*}/utilizationReports"
133      body: "utilization_report"
134    };
135    option (google.api.method_signature) =
136        "parent,utilization_report,utilization_report_id";
137    option (google.longrunning.operation_info) = {
138      response_type: "UtilizationReport"
139      metadata_type: "OperationMetadata"
140    };
141  }
142
143  // Deletes a single Utilization Report.
144  rpc DeleteUtilizationReport(DeleteUtilizationReportRequest)
145      returns (google.longrunning.Operation) {
146    option (google.api.http) = {
147      delete: "/v1/{name=projects/*/locations/*/sources/*/utilizationReports/*}"
148    };
149    option (google.api.method_signature) = "name";
150    option (google.longrunning.operation_info) = {
151      response_type: "google.protobuf.Empty"
152      metadata_type: "OperationMetadata"
153    };
154  }
155
156  // Lists DatacenterConnectors in a given Source.
157  rpc ListDatacenterConnectors(ListDatacenterConnectorsRequest)
158      returns (ListDatacenterConnectorsResponse) {
159    option (google.api.http) = {
160      get: "/v1/{parent=projects/*/locations/*/sources/*}/datacenterConnectors"
161    };
162    option (google.api.method_signature) = "parent";
163  }
164
165  // Gets details of a single DatacenterConnector.
166  rpc GetDatacenterConnector(GetDatacenterConnectorRequest)
167      returns (DatacenterConnector) {
168    option (google.api.http) = {
169      get: "/v1/{name=projects/*/locations/*/sources/*/datacenterConnectors/*}"
170    };
171    option (google.api.method_signature) = "name";
172  }
173
174  // Creates a new DatacenterConnector in a given Source.
175  rpc CreateDatacenterConnector(CreateDatacenterConnectorRequest)
176      returns (google.longrunning.Operation) {
177    option (google.api.http) = {
178      post: "/v1/{parent=projects/*/locations/*/sources/*}/datacenterConnectors"
179      body: "datacenter_connector"
180    };
181    option (google.api.method_signature) =
182        "parent,datacenter_connector,datacenter_connector_id";
183    option (google.longrunning.operation_info) = {
184      response_type: "DatacenterConnector"
185      metadata_type: "OperationMetadata"
186    };
187  }
188
189  // Deletes a single DatacenterConnector.
190  rpc DeleteDatacenterConnector(DeleteDatacenterConnectorRequest)
191      returns (google.longrunning.Operation) {
192    option (google.api.http) = {
193      delete: "/v1/{name=projects/*/locations/*/sources/*/datacenterConnectors/*}"
194    };
195    option (google.api.method_signature) = "name";
196    option (google.longrunning.operation_info) = {
197      response_type: "google.protobuf.Empty"
198      metadata_type: "OperationMetadata"
199    };
200  }
201
202  // Upgrades the appliance relate to this DatacenterConnector to the in-place
203  // updateable version.
204  rpc UpgradeAppliance(UpgradeApplianceRequest)
205      returns (google.longrunning.Operation) {
206    option (google.api.http) = {
207      post: "/v1/{datacenter_connector=projects/*/locations/*/sources/*/datacenterConnectors/*}:upgradeAppliance"
208      body: "*"
209    };
210    option (google.longrunning.operation_info) = {
211      response_type: "UpgradeApplianceResponse"
212      metadata_type: "OperationMetadata"
213    };
214  }
215
216  // Creates a new MigratingVm in a given Source.
217  rpc CreateMigratingVm(CreateMigratingVmRequest)
218      returns (google.longrunning.Operation) {
219    option (google.api.http) = {
220      post: "/v1/{parent=projects/*/locations/*/sources/*}/migratingVms"
221      body: "migrating_vm"
222    };
223    option (google.api.method_signature) =
224        "parent,migrating_vm,migrating_vm_id";
225    option (google.longrunning.operation_info) = {
226      response_type: "MigratingVm"
227      metadata_type: "OperationMetadata"
228    };
229  }
230
231  // Lists MigratingVms in a given Source.
232  rpc ListMigratingVms(ListMigratingVmsRequest)
233      returns (ListMigratingVmsResponse) {
234    option (google.api.http) = {
235      get: "/v1/{parent=projects/*/locations/*/sources/*}/migratingVms"
236    };
237    option (google.api.method_signature) = "parent";
238  }
239
240  // Gets details of a single MigratingVm.
241  rpc GetMigratingVm(GetMigratingVmRequest) returns (MigratingVm) {
242    option (google.api.http) = {
243      get: "/v1/{name=projects/*/locations/*/sources/*/migratingVms/*}"
244    };
245    option (google.api.method_signature) = "name";
246  }
247
248  // Updates the parameters of a single MigratingVm.
249  rpc UpdateMigratingVm(UpdateMigratingVmRequest)
250      returns (google.longrunning.Operation) {
251    option (google.api.http) = {
252      patch: "/v1/{migrating_vm.name=projects/*/locations/*/sources/*/migratingVms/*}"
253      body: "migrating_vm"
254    };
255    option (google.api.method_signature) = "migrating_vm,update_mask";
256    option (google.longrunning.operation_info) = {
257      response_type: "MigratingVm"
258      metadata_type: "OperationMetadata"
259    };
260  }
261
262  // Deletes a single MigratingVm.
263  rpc DeleteMigratingVm(DeleteMigratingVmRequest)
264      returns (google.longrunning.Operation) {
265    option (google.api.http) = {
266      delete: "/v1/{name=projects/*/locations/*/sources/*/migratingVms/*}"
267    };
268    option (google.api.method_signature) = "name";
269    option (google.longrunning.operation_info) = {
270      response_type: "google.protobuf.Empty"
271      metadata_type: "OperationMetadata"
272    };
273  }
274
275  // Starts migration for a VM. Starts the process of uploading
276  // data and creating snapshots, in replication cycles scheduled by the policy.
277  rpc StartMigration(StartMigrationRequest)
278      returns (google.longrunning.Operation) {
279    option (google.api.http) = {
280      post: "/v1/{migrating_vm=projects/*/locations/*/sources/*/migratingVms/*}:startMigration"
281      body: "*"
282    };
283    option (google.api.method_signature) = "migrating_vm";
284    option (google.longrunning.operation_info) = {
285      response_type: "StartMigrationResponse"
286      metadata_type: "OperationMetadata"
287    };
288  }
289
290  // Resumes a migration for a VM. When called on a paused migration, will start
291  // the process of uploading data and creating snapshots; when called on a
292  // completed cut-over migration, will update the migration to active state and
293  // start the process of uploading data and creating snapshots.
294  rpc ResumeMigration(ResumeMigrationRequest)
295      returns (google.longrunning.Operation) {
296    option (google.api.http) = {
297      post: "/v1/{migrating_vm=projects/*/locations/*/sources/*/migratingVms/*}:resumeMigration"
298      body: "*"
299    };
300    option (google.longrunning.operation_info) = {
301      response_type: "ResumeMigrationResponse"
302      metadata_type: "OperationMetadata"
303    };
304  }
305
306  // Pauses a migration for a VM. If cycle tasks are running they will be
307  // cancelled, preserving source task data. Further replication cycles will not
308  // be triggered while the VM is paused.
309  rpc PauseMigration(PauseMigrationRequest)
310      returns (google.longrunning.Operation) {
311    option (google.api.http) = {
312      post: "/v1/{migrating_vm=projects/*/locations/*/sources/*/migratingVms/*}:pauseMigration"
313      body: "*"
314    };
315    option (google.longrunning.operation_info) = {
316      response_type: "PauseMigrationResponse"
317      metadata_type: "OperationMetadata"
318    };
319  }
320
321  // Marks a migration as completed, deleting migration resources that are no
322  // longer being used. Only applicable after cutover is done.
323  rpc FinalizeMigration(FinalizeMigrationRequest)
324      returns (google.longrunning.Operation) {
325    option (google.api.http) = {
326      post: "/v1/{migrating_vm=projects/*/locations/*/sources/*/migratingVms/*}:finalizeMigration"
327      body: "*"
328    };
329    option (google.api.method_signature) = "migrating_vm";
330    option (google.longrunning.operation_info) = {
331      response_type: "FinalizeMigrationResponse"
332      metadata_type: "OperationMetadata"
333    };
334  }
335
336  // Initiates a Clone of a specific migrating VM.
337  rpc CreateCloneJob(CreateCloneJobRequest)
338      returns (google.longrunning.Operation) {
339    option (google.api.http) = {
340      post: "/v1/{parent=projects/*/locations/*/sources/*/migratingVms/*}/cloneJobs"
341      body: "clone_job"
342    };
343    option (google.api.method_signature) = "parent,clone_job,clone_job_id";
344    option (google.longrunning.operation_info) = {
345      response_type: "CloneJob"
346      metadata_type: "OperationMetadata"
347    };
348  }
349
350  // Initiates the cancellation of a running clone job.
351  rpc CancelCloneJob(CancelCloneJobRequest)
352      returns (google.longrunning.Operation) {
353    option (google.api.http) = {
354      post: "/v1/{name=projects/*/locations/*/sources/*/migratingVms/*/cloneJobs/*}:cancel"
355      body: "*"
356    };
357    option (google.api.method_signature) = "name";
358    option (google.longrunning.operation_info) = {
359      response_type: "CancelCloneJobResponse"
360      metadata_type: "OperationMetadata"
361    };
362  }
363
364  // Lists CloneJobs of a given migrating VM.
365  rpc ListCloneJobs(ListCloneJobsRequest) returns (ListCloneJobsResponse) {
366    option (google.api.http) = {
367      get: "/v1/{parent=projects/*/locations/*/sources/*/migratingVms/*}/cloneJobs"
368    };
369    option (google.api.method_signature) = "parent";
370  }
371
372  // Gets details of a single CloneJob.
373  rpc GetCloneJob(GetCloneJobRequest) returns (CloneJob) {
374    option (google.api.http) = {
375      get: "/v1/{name=projects/*/locations/*/sources/*/migratingVms/*/cloneJobs/*}"
376    };
377    option (google.api.method_signature) = "name";
378  }
379
380  // Initiates a Cutover of a specific migrating VM.
381  // The returned LRO is completed when the cutover job resource is created
382  // and the job is initiated.
383  rpc CreateCutoverJob(CreateCutoverJobRequest)
384      returns (google.longrunning.Operation) {
385    option (google.api.http) = {
386      post: "/v1/{parent=projects/*/locations/*/sources/*/migratingVms/*}/cutoverJobs"
387      body: "cutover_job"
388    };
389    option (google.api.method_signature) = "parent,cutover_job,cutover_job_id";
390    option (google.longrunning.operation_info) = {
391      response_type: "CutoverJob"
392      metadata_type: "OperationMetadata"
393    };
394  }
395
396  // Initiates the cancellation of a running cutover job.
397  rpc CancelCutoverJob(CancelCutoverJobRequest)
398      returns (google.longrunning.Operation) {
399    option (google.api.http) = {
400      post: "/v1/{name=projects/*/locations/*/sources/*/migratingVms/*/cutoverJobs/*}:cancel"
401      body: "*"
402    };
403    option (google.api.method_signature) = "name";
404    option (google.longrunning.operation_info) = {
405      response_type: "CancelCutoverJobResponse"
406      metadata_type: "OperationMetadata"
407    };
408  }
409
410  // Lists CutoverJobs of a given migrating VM.
411  rpc ListCutoverJobs(ListCutoverJobsRequest)
412      returns (ListCutoverJobsResponse) {
413    option (google.api.http) = {
414      get: "/v1/{parent=projects/*/locations/*/sources/*/migratingVms/*}/cutoverJobs"
415    };
416    option (google.api.method_signature) = "parent";
417  }
418
419  // Gets details of a single CutoverJob.
420  rpc GetCutoverJob(GetCutoverJobRequest) returns (CutoverJob) {
421    option (google.api.http) = {
422      get: "/v1/{name=projects/*/locations/*/sources/*/migratingVms/*/cutoverJobs/*}"
423    };
424    option (google.api.method_signature) = "name";
425  }
426
427  // Lists Groups in a given project and location.
428  rpc ListGroups(ListGroupsRequest) returns (ListGroupsResponse) {
429    option (google.api.http) = {
430      get: "/v1/{parent=projects/*/locations/*}/groups"
431    };
432    option (google.api.method_signature) = "parent";
433  }
434
435  // Gets details of a single Group.
436  rpc GetGroup(GetGroupRequest) returns (Group) {
437    option (google.api.http) = {
438      get: "/v1/{name=projects/*/locations/*/groups/*}"
439    };
440    option (google.api.method_signature) = "name";
441  }
442
443  // Creates a new Group in a given project and location.
444  rpc CreateGroup(CreateGroupRequest) returns (google.longrunning.Operation) {
445    option (google.api.http) = {
446      post: "/v1/{parent=projects/*/locations/*}/groups"
447      body: "group"
448    };
449    option (google.api.method_signature) = "parent,group,group_id";
450    option (google.longrunning.operation_info) = {
451      response_type: "Group"
452      metadata_type: "OperationMetadata"
453    };
454  }
455
456  // Updates the parameters of a single Group.
457  rpc UpdateGroup(UpdateGroupRequest) returns (google.longrunning.Operation) {
458    option (google.api.http) = {
459      patch: "/v1/{group.name=projects/*/locations/*/groups/*}"
460      body: "group"
461    };
462    option (google.api.method_signature) = "group,update_mask";
463    option (google.longrunning.operation_info) = {
464      response_type: "Group"
465      metadata_type: "OperationMetadata"
466    };
467  }
468
469  // Deletes a single Group.
470  rpc DeleteGroup(DeleteGroupRequest) returns (google.longrunning.Operation) {
471    option (google.api.http) = {
472      delete: "/v1/{name=projects/*/locations/*/groups/*}"
473    };
474    option (google.api.method_signature) = "name";
475    option (google.longrunning.operation_info) = {
476      response_type: "google.protobuf.Empty"
477      metadata_type: "OperationMetadata"
478    };
479  }
480
481  // Adds a MigratingVm to a Group.
482  rpc AddGroupMigration(AddGroupMigrationRequest)
483      returns (google.longrunning.Operation) {
484    option (google.api.http) = {
485      post: "/v1/{group=projects/*/locations/*/groups/*}:addGroupMigration"
486      body: "*"
487    };
488    option (google.api.method_signature) = "group";
489    option (google.longrunning.operation_info) = {
490      response_type: "AddGroupMigrationResponse"
491      metadata_type: "OperationMetadata"
492    };
493  }
494
495  // Removes a MigratingVm from a Group.
496  rpc RemoveGroupMigration(RemoveGroupMigrationRequest)
497      returns (google.longrunning.Operation) {
498    option (google.api.http) = {
499      post: "/v1/{group=projects/*/locations/*/groups/*}:removeGroupMigration"
500      body: "*"
501    };
502    option (google.api.method_signature) = "group";
503    option (google.longrunning.operation_info) = {
504      response_type: "RemoveGroupMigrationResponse"
505      metadata_type: "OperationMetadata"
506    };
507  }
508
509  // Lists TargetProjects in a given project.
510  //
511  // NOTE: TargetProject is a global resource; hence the only supported value
512  // for location is `global`.
513  rpc ListTargetProjects(ListTargetProjectsRequest)
514      returns (ListTargetProjectsResponse) {
515    option (google.api.http) = {
516      get: "/v1/{parent=projects/*/locations/*}/targetProjects"
517    };
518    option (google.api.method_signature) = "parent";
519  }
520
521  // Gets details of a single TargetProject.
522  //
523  // NOTE: TargetProject is a global resource; hence the only supported value
524  // for location is `global`.
525  rpc GetTargetProject(GetTargetProjectRequest) returns (TargetProject) {
526    option (google.api.http) = {
527      get: "/v1/{name=projects/*/locations/*/targetProjects/*}"
528    };
529    option (google.api.method_signature) = "name";
530  }
531
532  // Creates a new TargetProject in a given project.
533  //
534  // NOTE: TargetProject is a global resource; hence the only supported value
535  // for location is `global`.
536  rpc CreateTargetProject(CreateTargetProjectRequest)
537      returns (google.longrunning.Operation) {
538    option (google.api.http) = {
539      post: "/v1/{parent=projects/*/locations/*}/targetProjects"
540      body: "target_project"
541    };
542    option (google.api.method_signature) =
543        "parent,target_project,target_project_id";
544    option (google.longrunning.operation_info) = {
545      response_type: "TargetProject"
546      metadata_type: "OperationMetadata"
547    };
548  }
549
550  // Updates the parameters of a single TargetProject.
551  //
552  // NOTE: TargetProject is a global resource; hence the only supported value
553  // for location is `global`.
554  rpc UpdateTargetProject(UpdateTargetProjectRequest)
555      returns (google.longrunning.Operation) {
556    option (google.api.http) = {
557      patch: "/v1/{target_project.name=projects/*/locations/*/targetProjects/*}"
558      body: "target_project"
559    };
560    option (google.api.method_signature) = "target_project,update_mask";
561    option (google.longrunning.operation_info) = {
562      response_type: "TargetProject"
563      metadata_type: "OperationMetadata"
564    };
565  }
566
567  // Deletes a single TargetProject.
568  //
569  // NOTE: TargetProject is a global resource; hence the only supported value
570  // for location is `global`.
571  rpc DeleteTargetProject(DeleteTargetProjectRequest)
572      returns (google.longrunning.Operation) {
573    option (google.api.http) = {
574      delete: "/v1/{name=projects/*/locations/*/targetProjects/*}"
575    };
576    option (google.api.method_signature) = "name";
577    option (google.longrunning.operation_info) = {
578      response_type: "google.protobuf.Empty"
579      metadata_type: "OperationMetadata"
580    };
581  }
582
583  // Lists ReplicationCycles in a given MigratingVM.
584  rpc ListReplicationCycles(ListReplicationCyclesRequest)
585      returns (ListReplicationCyclesResponse) {
586    option (google.api.http) = {
587      get: "/v1/{parent=projects/*/locations/*/sources/*/migratingVms/*}/replicationCycles"
588    };
589    option (google.api.method_signature) = "parent";
590  }
591
592  // Gets details of a single ReplicationCycle.
593  rpc GetReplicationCycle(GetReplicationCycleRequest)
594      returns (ReplicationCycle) {
595    option (google.api.http) = {
596      get: "/v1/{name=projects/*/locations/*/sources/*/migratingVms/*/replicationCycles/*}"
597    };
598    option (google.api.method_signature) = "name";
599  }
600}
601
602// Controls the level of details of a Utilization Report.
603enum UtilizationReportView {
604  // The default / unset value.
605  // The API will default to FULL on single report request and BASIC for
606  // multiple reports request.
607  UTILIZATION_REPORT_VIEW_UNSPECIFIED = 0;
608
609  // Get the report metadata, without the list of VMs and their utilization
610  // info.
611  BASIC = 1;
612
613  // Include everything.
614  FULL = 2;
615}
616
617// Controls the level of details of a Migrating VM.
618enum MigratingVmView {
619  // View is unspecified. The API will fallback to the default value.
620  MIGRATING_VM_VIEW_UNSPECIFIED = 0;
621
622  // Get the migrating VM basic details.
623  // The basic details do not include the recent clone jobs and recent cutover
624  // jobs lists.
625  MIGRATING_VM_VIEW_BASIC = 1;
626
627  // Include everything.
628  MIGRATING_VM_VIEW_FULL = 2;
629}
630
631// Types of disks supported for Compute Engine VM.
632enum ComputeEngineDiskType {
633  // An unspecified disk type. Will be used as STANDARD.
634  COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED = 0;
635
636  // A Standard disk type.
637  COMPUTE_ENGINE_DISK_TYPE_STANDARD = 1;
638
639  // SSD hard disk type.
640  COMPUTE_ENGINE_DISK_TYPE_SSD = 2;
641
642  // An alternative to SSD persistent disks that balance performance and
643  // cost.
644  COMPUTE_ENGINE_DISK_TYPE_BALANCED = 3;
645}
646
647// Types of licenses used in OS adaptation.
648enum ComputeEngineLicenseType {
649  // The license type is the default for the OS.
650  COMPUTE_ENGINE_LICENSE_TYPE_DEFAULT = 0;
651
652  // The license type is Pay As You Go license type.
653  COMPUTE_ENGINE_LICENSE_TYPE_PAYG = 1;
654
655  // The license type is Bring Your Own License type.
656  COMPUTE_ENGINE_LICENSE_TYPE_BYOL = 2;
657}
658
659// Possible values for vm boot option.
660enum ComputeEngineBootOption {
661  // The boot option is unknown.
662  COMPUTE_ENGINE_BOOT_OPTION_UNSPECIFIED = 0;
663
664  // The boot option is EFI.
665  COMPUTE_ENGINE_BOOT_OPTION_EFI = 1;
666
667  // The boot option is BIOS.
668  COMPUTE_ENGINE_BOOT_OPTION_BIOS = 2;
669}
670
671// ReplicationCycle contains information about the current replication cycle
672// status.
673message ReplicationCycle {
674  option (google.api.resource) = {
675    type: "vmmigration.googleapis.com/ReplicationCycle"
676    pattern: "projects/{project}/locations/{location}/sources/{source}/migratingVms/{migrating_vm}/replicationCycles/{replication_cycle}"
677  };
678
679  // Possible states of a replication cycle.
680  enum State {
681    // The state is unknown. This is used for API compatibility only and is not
682    // used by the system.
683    STATE_UNSPECIFIED = 0;
684
685    // The replication cycle is running.
686    RUNNING = 1;
687
688    // The replication cycle is paused.
689    PAUSED = 2;
690
691    // The replication cycle finished with errors.
692    FAILED = 3;
693
694    // The replication cycle finished successfully.
695    SUCCEEDED = 4;
696  }
697
698  // The identifier of the ReplicationCycle.
699  string name = 13;
700
701  // The cycle's ordinal number.
702  int32 cycle_number = 10;
703
704  // The time the replication cycle has started.
705  google.protobuf.Timestamp start_time = 1;
706
707  // The time the replication cycle has ended.
708  google.protobuf.Timestamp end_time = 6;
709
710  // The accumulated duration the replication cycle was paused.
711  google.protobuf.Duration total_pause_duration = 7;
712
713  // The current progress in percentage of this cycle.
714  // Was replaced by 'steps' field, which breaks down the cycle progression more
715  // accurately.
716  int32 progress_percent = 5 [deprecated = true];
717
718  // The cycle's steps list representing its progress.
719  repeated CycleStep steps = 9;
720
721  // State of the ReplicationCycle.
722  State state = 11;
723
724  // Provides details on the state of the cycle in case of an error.
725  google.rpc.Status error = 12;
726}
727
728// CycleStep holds information about a step progress.
729message CycleStep {
730  oneof step {
731    // Initializing replication step.
732    InitializingReplicationStep initializing_replication = 3;
733
734    // Replicating step.
735    ReplicatingStep replicating = 4;
736
737    // Post processing step.
738    PostProcessingStep post_processing = 5;
739  }
740
741  // The time the cycle step has started.
742  google.protobuf.Timestamp start_time = 1;
743
744  // The time the cycle step has ended.
745  google.protobuf.Timestamp end_time = 2;
746}
747
748// InitializingReplicationStep contains specific step details.
749message InitializingReplicationStep {}
750
751// ReplicatingStep contains specific step details.
752message ReplicatingStep {
753  // Total bytes to be handled in the step.
754  int64 total_bytes = 1;
755
756  // Replicated bytes in the step.
757  int64 replicated_bytes = 2;
758
759  // The source disks replication rate for the last 2 minutes in bytes per
760  // second.
761  int64 last_two_minutes_average_bytes_per_second = 3;
762
763  // The source disks replication rate for the last 30 minutes in bytes per
764  // second.
765  int64 last_thirty_minutes_average_bytes_per_second = 4;
766}
767
768// PostProcessingStep contains specific step details.
769message PostProcessingStep {}
770
771// ReplicationSync contain information about the last replica sync to the cloud.
772message ReplicationSync {
773  // The most updated snapshot created time in the source that finished
774  // replication.
775  google.protobuf.Timestamp last_sync_time = 1;
776}
777
778// MigratingVm describes the VM that will be migrated from a Source environment
779// and its replication state.
780message MigratingVm {
781  option (google.api.resource) = {
782    type: "vmmigration.googleapis.com/MigratingVm"
783    pattern: "projects/{project}/locations/{location}/sources/{source}/migratingVms/{migrating_vm}"
784  };
785
786  // The possible values of the state/health of source VM.
787  enum State {
788    // The state was not sampled by the health checks yet.
789    STATE_UNSPECIFIED = 0;
790
791    // The VM in the source is being verified.
792    PENDING = 1;
793
794    // The source VM was verified, and it's ready to start replication.
795    READY = 2;
796
797    // Migration is going through the first sync cycle.
798    FIRST_SYNC = 3;
799
800    // The replication is active, and it's running or scheduled to run.
801    ACTIVE = 4;
802
803    // The source VM is being turned off, and a final replication is currently
804    // running.
805    CUTTING_OVER = 7;
806
807    // The source VM was stopped and replicated. The replication is currently
808    // paused.
809    CUTOVER = 8;
810
811    // A cutover job is active and replication cycle is running the final sync.
812    FINAL_SYNC = 9;
813
814    // The replication was paused by the user and no cycles are scheduled to
815    // run.
816    PAUSED = 10;
817
818    // The migrating VM is being finalized and migration resources are being
819    // removed.
820    FINALIZING = 11;
821
822    // The replication process is done. The migrating VM is finalized and no
823    // longer consumes billable resources.
824    FINALIZED = 12;
825
826    // The replication process encountered an unrecoverable error and was
827    // aborted.
828    ERROR = 13;
829  }
830
831  // The default configuration of the target VM that will be created in Google
832  // Cloud as a result of the migration.
833  oneof target_vm_defaults {
834    // Details of the target VM in Compute Engine.
835    ComputeEngineTargetDefaults compute_engine_target_defaults = 26;
836  }
837
838  // Details about the source VM.
839  oneof source_vm_details {
840    // Output only. Details of the VM from an AWS source.
841    AwsSourceVmDetails aws_source_vm_details = 29
842        [(google.api.field_behavior) = OUTPUT_ONLY];
843  }
844
845  // Output only. The identifier of the MigratingVm.
846  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
847
848  // The unique ID of the VM in the source.
849  // The VM's name in vSphere can be changed, so this is not the VM's name but
850  // rather its moRef id. This id is of the form vm-<num>.
851  string source_vm_id = 2;
852
853  // The display name attached to the MigratingVm by the user.
854  string display_name = 18;
855
856  // The description attached to the migrating VM by the user.
857  string description = 3;
858
859  // The replication schedule policy.
860  SchedulePolicy policy = 8;
861
862  // Output only. The time the migrating VM was created (this refers to this
863  // resource and not to the time it was installed in the source).
864  google.protobuf.Timestamp create_time = 9
865      [(google.api.field_behavior) = OUTPUT_ONLY];
866
867  // Output only. The last time the migrating VM resource was updated.
868  google.protobuf.Timestamp update_time = 10
869      [(google.api.field_behavior) = OUTPUT_ONLY];
870
871  // Output only. The most updated snapshot created time in the source that
872  // finished replication.
873  ReplicationSync last_sync = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
874
875  // Output only. State of the MigratingVm.
876  State state = 23 [(google.api.field_behavior) = OUTPUT_ONLY];
877
878  // Output only. The last time the migrating VM state was updated.
879  google.protobuf.Timestamp state_time = 22
880      [(google.api.field_behavior) = OUTPUT_ONLY];
881
882  // Output only. The percentage progress of the current running replication
883  // cycle.
884  ReplicationCycle current_sync_info = 13
885      [(google.api.field_behavior) = OUTPUT_ONLY];
886
887  // Output only. The group this migrating vm is included in, if any. The group
888  // is represented by the full path of the appropriate
889  // [Group][google.cloud.vmmigration.v1.Group] resource.
890  string group = 15 [
891    (google.api.field_behavior) = OUTPUT_ONLY,
892    (google.api.resource_reference) = {
893      child_type: "vmmigration.googleapis.com/Group"
894    }
895  ];
896
897  // The labels of the migrating VM.
898  map<string, string> labels = 16;
899
900  // Output only. The recent [clone jobs][google.cloud.vmmigration.v1.CloneJob]
901  // performed on the migrating VM. This field holds the vm's last completed
902  // clone job and the vm's running clone job, if one exists.
903  // Note: To have this field populated you need to explicitly request it via
904  // the "view" parameter of the Get/List request.
905  repeated CloneJob recent_clone_jobs = 17
906      [(google.api.field_behavior) = OUTPUT_ONLY];
907
908  // Output only. Provides details on the state of the Migrating VM in case of
909  // an error in replication.
910  google.rpc.Status error = 19 [(google.api.field_behavior) = OUTPUT_ONLY];
911
912  // Output only. The recent cutover jobs performed on the migrating VM.
913  // This field holds the vm's last completed cutover job and the vm's
914  // running cutover job, if one exists.
915  // Note: To have this field populated you need to explicitly request it via
916  // the "view" parameter of the Get/List request.
917  repeated CutoverJob recent_cutover_jobs = 20
918      [(google.api.field_behavior) = OUTPUT_ONLY];
919}
920
921// CloneJob describes the process of creating a clone of a
922// [MigratingVM][google.cloud.vmmigration.v1.MigratingVm] to the
923// requested target based on the latest successful uploaded snapshots.
924// While the migration cycles of a MigratingVm take place, it is possible to
925// verify the uploaded VM can be started in the cloud, by creating a clone. The
926// clone can be created without any downtime, and it is created using the latest
927// snapshots which are already in the cloud. The cloneJob is only responsible
928// for its work, not its products, which means once it is finished, it will
929// never touch the instance it created. It will only delete it in case of the
930// CloneJob being cancelled or upon failure to clone.
931message CloneJob {
932  option (google.api.resource) = {
933    type: "vmmigration.googleapis.com/CloneJob"
934    pattern: "projects/{project}/locations/{location}/sources/{source}/migratingVms/{migrating_vm}/cloneJobs/{clone_job}"
935  };
936
937  // Possible states of the clone job.
938  enum State {
939    // The state is unknown. This is used for API compatibility only and is not
940    // used by the system.
941    STATE_UNSPECIFIED = 0;
942
943    // The clone job has not yet started.
944    PENDING = 1;
945
946    // The clone job is active and running.
947    ACTIVE = 2;
948
949    // The clone job finished with errors.
950    FAILED = 3;
951
952    // The clone job finished successfully.
953    SUCCEEDED = 4;
954
955    // The clone job was cancelled.
956    CANCELLED = 5;
957
958    // The clone job is being cancelled.
959    CANCELLING = 6;
960
961    // OS adaptation is running as part of the clone job to generate license.
962    ADAPTING_OS = 7;
963  }
964
965  // Details of the VM to create as the target of this clone job.
966  oneof target_vm_details {
967    // Output only. Details of the target VM in Compute Engine.
968    ComputeEngineTargetDetails compute_engine_target_details = 20
969        [(google.api.field_behavior) = OUTPUT_ONLY];
970  }
971
972  // Output only. The time the clone job was created (as an API call, not when
973  // it was actually created in the target).
974  google.protobuf.Timestamp create_time = 1
975      [(google.api.field_behavior) = OUTPUT_ONLY];
976
977  // Output only. The time the clone job was ended.
978  google.protobuf.Timestamp end_time = 22
979      [(google.api.field_behavior) = OUTPUT_ONLY];
980
981  // Output only. The name of the clone.
982  string name = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
983
984  // Output only. State of the clone job.
985  State state = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
986
987  // Output only. The time the state was last updated.
988  google.protobuf.Timestamp state_time = 14
989      [(google.api.field_behavior) = OUTPUT_ONLY];
990
991  // Output only. Provides details for the errors that led to the Clone Job's
992  // state.
993  google.rpc.Status error = 17 [(google.api.field_behavior) = OUTPUT_ONLY];
994
995  // Output only. The clone steps list representing its progress.
996  repeated CloneStep steps = 23 [(google.api.field_behavior) = OUTPUT_ONLY];
997}
998
999// CloneStep holds information about the clone step progress.
1000message CloneStep {
1001  oneof step {
1002    // Adapting OS step.
1003    AdaptingOSStep adapting_os = 3;
1004
1005    // Preparing VM disks step.
1006    PreparingVMDisksStep preparing_vm_disks = 4;
1007
1008    // Instantiating migrated VM step.
1009    InstantiatingMigratedVMStep instantiating_migrated_vm = 5;
1010  }
1011
1012  // The time the step has started.
1013  google.protobuf.Timestamp start_time = 1;
1014
1015  // The time the step has ended.
1016  google.protobuf.Timestamp end_time = 2;
1017}
1018
1019// AdaptingOSStep contains specific step details.
1020message AdaptingOSStep {}
1021
1022// PreparingVMDisksStep contains specific step details.
1023message PreparingVMDisksStep {}
1024
1025// InstantiatingMigratedVMStep contains specific step details.
1026message InstantiatingMigratedVMStep {}
1027
1028// CutoverJob message describes a cutover of a migrating VM. The CutoverJob is
1029// the operation of shutting down the VM, creating a snapshot and
1030// clonning the VM using the replicated snapshot.
1031message CutoverJob {
1032  option (google.api.resource) = {
1033    type: "vmmigration.googleapis.com/CutoverJob"
1034    pattern: "projects/{project}/locations/{location}/sources/{source}/migratingVms/{migrating_vm}/cutoverJobs/{cutover_job}"
1035  };
1036
1037  // Possible states of the cutover job.
1038  enum State {
1039    // The state is unknown. This is used for API compatibility only and is not
1040    // used by the system.
1041    STATE_UNSPECIFIED = 0;
1042
1043    // The cutover job has not yet started.
1044    PENDING = 1;
1045
1046    // The cutover job finished with errors.
1047    FAILED = 2;
1048
1049    // The cutover job finished successfully.
1050    SUCCEEDED = 3;
1051
1052    // The cutover job was cancelled.
1053    CANCELLED = 4;
1054
1055    // The cutover job is being cancelled.
1056    CANCELLING = 5;
1057
1058    // The cutover job is active and running.
1059    ACTIVE = 6;
1060
1061    // OS adaptation is running as part of the cutover job to generate license.
1062    ADAPTING_OS = 7;
1063  }
1064
1065  // Details of the VM to create as the target of this cutover job.
1066  oneof target_vm_details {
1067    // Output only. Details of the target VM in Compute Engine.
1068    ComputeEngineTargetDetails compute_engine_target_details = 14
1069        [(google.api.field_behavior) = OUTPUT_ONLY];
1070  }
1071
1072  // Output only. The time the cutover job was created (as an API call, not when
1073  // it was actually created in the target).
1074  google.protobuf.Timestamp create_time = 1
1075      [(google.api.field_behavior) = OUTPUT_ONLY];
1076
1077  // Output only. The time the cutover job had finished.
1078  google.protobuf.Timestamp end_time = 16
1079      [(google.api.field_behavior) = OUTPUT_ONLY];
1080
1081  // Output only. The name of the cutover job.
1082  string name = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
1083
1084  // Output only. State of the cutover job.
1085  State state = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
1086
1087  // Output only. The time the state was last updated.
1088  google.protobuf.Timestamp state_time = 6
1089      [(google.api.field_behavior) = OUTPUT_ONLY];
1090
1091  // Output only. The current progress in percentage of the cutover job.
1092  int32 progress_percent = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
1093
1094  // Output only. Provides details for the errors that led to the Cutover Job's
1095  // state.
1096  google.rpc.Status error = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
1097
1098  // Output only. A message providing possible extra details about the current
1099  // state.
1100  string state_message = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
1101
1102  // Output only. The cutover steps list representing its progress.
1103  repeated CutoverStep steps = 17 [(google.api.field_behavior) = OUTPUT_ONLY];
1104}
1105
1106// CutoverStep holds information about the cutover step progress.
1107message CutoverStep {
1108  oneof step {
1109    // A replication cycle prior cutover step.
1110    ReplicationCycle previous_replication_cycle = 3;
1111
1112    // Shutting down VM step.
1113    ShuttingDownSourceVMStep shutting_down_source_vm = 4;
1114
1115    // Final sync step.
1116    ReplicationCycle final_sync = 5;
1117
1118    // Preparing VM disks step.
1119    PreparingVMDisksStep preparing_vm_disks = 6;
1120
1121    // Instantiating migrated VM step.
1122    InstantiatingMigratedVMStep instantiating_migrated_vm = 7;
1123  }
1124
1125  // The time the step has started.
1126  google.protobuf.Timestamp start_time = 1;
1127
1128  // The time the step has ended.
1129  google.protobuf.Timestamp end_time = 2;
1130}
1131
1132// ShuttingDownSourceVMStep contains specific step details.
1133message ShuttingDownSourceVMStep {}
1134
1135// Request message for 'CreateCloneJob' request.
1136message CreateCloneJobRequest {
1137  // Required. The Clone's parent.
1138  string parent = 1 [
1139    (google.api.field_behavior) = REQUIRED,
1140    (google.api.resource_reference) = {
1141      child_type: "vmmigration.googleapis.com/CloneJob"
1142    }
1143  ];
1144
1145  // Required. The clone job identifier.
1146  string clone_job_id = 2 [(google.api.field_behavior) = REQUIRED];
1147
1148  // Required. The clone request body.
1149  CloneJob clone_job = 3 [(google.api.field_behavior) = REQUIRED];
1150
1151  // A request ID to identify requests. Specify a unique request ID
1152  // so that if you must retry your request, the server will know to ignore
1153  // the request if it has already been completed. The server will guarantee
1154  // that for at least 60 minutes since the first request.
1155  //
1156  // For example, consider a situation where you make an initial request and t
1157  // he request times out. If you make the request again with the same request
1158  // ID, the server can check if original operation with the same request ID
1159  // was received, and if so, will ignore the second request. This prevents
1160  // clients from accidentally creating duplicate commitments.
1161  //
1162  // The request ID must be a valid UUID with the exception that zero UUID is
1163  // not supported (00000000-0000-0000-0000-000000000000).
1164  string request_id = 4;
1165}
1166
1167// Request message for 'CancelCloneJob' request.
1168message CancelCloneJobRequest {
1169  // Required. The clone job id
1170  string name = 1 [
1171    (google.api.field_behavior) = REQUIRED,
1172    (google.api.resource_reference) = {
1173      type: "vmmigration.googleapis.com/CloneJob"
1174    }
1175  ];
1176}
1177
1178// Response message for 'CancelCloneJob' request.
1179message CancelCloneJobResponse {}
1180
1181// Request message for 'ListCloneJobsRequest' request.
1182message ListCloneJobsRequest {
1183  // Required. The parent, which owns this collection of source VMs.
1184  string parent = 1 [
1185    (google.api.field_behavior) = REQUIRED,
1186    (google.api.resource_reference) = {
1187      child_type: "vmmigration.googleapis.com/CloneJob"
1188    }
1189  ];
1190
1191  // Optional. The maximum number of clone jobs to return. The service may
1192  // return fewer than this value. If unspecified, at most 500 clone jobs will
1193  // be returned. The maximum value is 1000; values above 1000 will be coerced
1194  // to 1000.
1195  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
1196
1197  // Required. A page token, received from a previous `ListCloneJobs` call.
1198  // Provide this to retrieve the subsequent page.
1199  //
1200  // When paginating, all other parameters provided to `ListCloneJobs` must
1201  // match the call that provided the page token.
1202  string page_token = 3 [(google.api.field_behavior) = REQUIRED];
1203
1204  // Optional. The filter request.
1205  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
1206
1207  // Optional. the order by fields for the result.
1208  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
1209}
1210
1211// Response message for 'ListCloneJobs' request.
1212message ListCloneJobsResponse {
1213  // Output only. The list of clone jobs response.
1214  repeated CloneJob clone_jobs = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1215
1216  // Output only. A token, which can be sent as `page_token` to retrieve the
1217  // next page. If this field is omitted, there are no subsequent pages.
1218  string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
1219
1220  // Output only. Locations that could not be reached.
1221  repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
1222}
1223
1224// Request message for 'GetCloneJob' request.
1225message GetCloneJobRequest {
1226  // Required. The name of the CloneJob.
1227  string name = 1 [
1228    (google.api.field_behavior) = REQUIRED,
1229    (google.api.resource_reference) = {
1230      type: "vmmigration.googleapis.com/CloneJob"
1231    }
1232  ];
1233}
1234
1235// Source message describes a specific vm migration Source resource. It contains
1236// the source environment information.
1237message Source {
1238  option (google.api.resource) = {
1239    type: "vmmigration.googleapis.com/Source"
1240    pattern: "projects/{project}/locations/{location}/sources/{source}"
1241  };
1242
1243  oneof source_details {
1244    // Vmware type source details.
1245    VmwareSourceDetails vmware = 10;
1246
1247    // AWS type source details.
1248    AwsSourceDetails aws = 12;
1249  }
1250
1251  // Output only. The Source name.
1252  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1253
1254  // Output only. The create time timestamp.
1255  google.protobuf.Timestamp create_time = 2
1256      [(google.api.field_behavior) = OUTPUT_ONLY];
1257
1258  // Output only. The update time timestamp.
1259  google.protobuf.Timestamp update_time = 3
1260      [(google.api.field_behavior) = OUTPUT_ONLY];
1261
1262  // The labels of the source.
1263  map<string, string> labels = 4;
1264
1265  // User-provided description of the source.
1266  string description = 6;
1267}
1268
1269// VmwareSourceDetails message describes a specific source details for the
1270// vmware source type.
1271message VmwareSourceDetails {
1272  // The credentials username.
1273  string username = 1;
1274
1275  // Input only. The credentials password. This is write only and can not be
1276  // read in a GET operation.
1277  string password = 2 [(google.api.field_behavior) = INPUT_ONLY];
1278
1279  // The ip address of the vcenter this Source represents.
1280  string vcenter_ip = 3;
1281
1282  // The thumbprint representing the certificate for the vcenter.
1283  string thumbprint = 4;
1284}
1285
1286// AwsSourceDetails message describes a specific source details for the
1287// AWS source type.
1288message AwsSourceDetails {
1289  // Message describing AWS Credentials using access key id and secret.
1290  message AccessKeyCredentials {
1291    // AWS access key ID.
1292    string access_key_id = 1;
1293
1294    // Input only. AWS secret access key.
1295    string secret_access_key = 2 [(google.api.field_behavior) = INPUT_ONLY];
1296  }
1297
1298  // Tag is an AWS tag representation.
1299  message Tag {
1300    // Key of tag.
1301    string key = 1;
1302
1303    // Value of tag.
1304    string value = 2;
1305  }
1306
1307  // The possible values of the state.
1308  enum State {
1309    // The state is unknown. This is used for API compatibility only and is not
1310    // used by the system.
1311    STATE_UNSPECIFIED = 0;
1312
1313    // The state was not sampled by the health checks yet.
1314    PENDING = 1;
1315
1316    // The source is available but might not be usable yet due to invalid
1317    // credentials or another reason.
1318    // The error message will contain further details.
1319    FAILED = 2;
1320
1321    // The source exists and its credentials were verified.
1322    ACTIVE = 3;
1323  }
1324
1325  oneof credentials_type {
1326    // AWS Credentials using access key id and secret.
1327    AccessKeyCredentials access_key_creds = 11;
1328  }
1329
1330  // Immutable. The AWS region that the source VMs will be migrated from.
1331  string aws_region = 3 [(google.api.field_behavior) = IMMUTABLE];
1332
1333  // Output only. State of the source as determined by the health check.
1334  State state = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
1335
1336  // Output only. Provides details on the state of the Source in case of an
1337  // error.
1338  google.rpc.Status error = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
1339
1340  // AWS resource tags to limit the scope of the source inventory.
1341  repeated Tag inventory_tag_list = 10;
1342
1343  // AWS security group names to limit the scope of the source
1344  // inventory.
1345  repeated string inventory_security_group_names = 7;
1346
1347  // User specified tags to add to every M2VM generated resource in AWS.
1348  // These tags will be set in addition to the default tags that are set as part
1349  // of the migration process. The tags must not begin with the reserved prefix
1350  // `m2vm`.
1351  map<string, string> migration_resources_user_tags = 8;
1352
1353  // Output only. The source's public IP. All communication initiated by this
1354  // source will originate from this IP.
1355  string public_ip = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
1356}
1357
1358// DatacenterConnector message describes a connector between the Source and
1359// Google Cloud, which is installed on a vmware datacenter (an OVA vm installed
1360// by the user) to connect the Datacenter to Google Cloud and support vm
1361// migration data transfer.
1362message DatacenterConnector {
1363  option (google.api.resource) = {
1364    type: "vmmigration.googleapis.com/DatacenterConnector"
1365    pattern: "projects/{project}/locations/{location}/sources/{source}/datacenterConnectors/{datacenter_connector}"
1366  };
1367
1368  // The possible values of the state.
1369  enum State {
1370    // The state is unknown. This is used for API compatibility only and is not
1371    // used by the system.
1372    STATE_UNSPECIFIED = 0;
1373
1374    // The state was not sampled by the health checks yet.
1375    PENDING = 1;
1376
1377    // The source was sampled by health checks and is not available.
1378    OFFLINE = 2;
1379
1380    // The source is available but might not be usable yet due to unvalidated
1381    // credentials or another reason. The credentials referred to are the ones
1382    // to the Source. The error message will contain further details.
1383    FAILED = 3;
1384
1385    // The source exists and its credentials were verified.
1386    ACTIVE = 4;
1387  }
1388
1389  // Output only. The time the connector was created (as an API call, not when
1390  // it was actually installed).
1391  google.protobuf.Timestamp create_time = 1
1392      [(google.api.field_behavior) = OUTPUT_ONLY];
1393
1394  // Output only. The last time the connector was updated with an API call.
1395  google.protobuf.Timestamp update_time = 2
1396      [(google.api.field_behavior) = OUTPUT_ONLY];
1397
1398  // Output only. The connector's name.
1399  string name = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
1400
1401  // Immutable. A unique key for this connector. This key is internal to the OVA
1402  // connector and is supplied with its creation during the registration process
1403  // and can not be modified.
1404  string registration_id = 12 [(google.api.field_behavior) = IMMUTABLE];
1405
1406  // The service account to use in the connector when communicating with the
1407  // cloud.
1408  string service_account = 5;
1409
1410  // The version running in the DatacenterConnector. This is supplied by the OVA
1411  // connector during the registration process and can not be modified.
1412  string version = 6;
1413
1414  // Output only. The communication channel between the datacenter connector and
1415  // Google Cloud.
1416  string bucket = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
1417
1418  // Output only. State of the DatacenterConnector, as determined by the health
1419  // checks.
1420  State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
1421
1422  // Output only. The time the state was last set.
1423  google.protobuf.Timestamp state_time = 8
1424      [(google.api.field_behavior) = OUTPUT_ONLY];
1425
1426  // Output only. Provides details on the state of the Datacenter Connector in
1427  // case of an error.
1428  google.rpc.Status error = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
1429
1430  // Output only. Appliance OVA version.
1431  // This is the OVA which is manually installed by the user and contains the
1432  // infrastructure for the automatically updatable components on the appliance.
1433  string appliance_infrastructure_version = 13
1434      [(google.api.field_behavior) = OUTPUT_ONLY];
1435
1436  // Output only. Appliance last installed update bundle version.
1437  // This is the version of the automatically updatable components on the
1438  // appliance.
1439  string appliance_software_version = 14
1440      [(google.api.field_behavior) = OUTPUT_ONLY];
1441
1442  // Output only. The available versions for updating this appliance.
1443  AvailableUpdates available_versions = 15
1444      [(google.api.field_behavior) = OUTPUT_ONLY];
1445
1446  // Output only. The status of the current / last upgradeAppliance operation.
1447  UpgradeStatus upgrade_status = 16 [(google.api.field_behavior) = OUTPUT_ONLY];
1448}
1449
1450// UpgradeStatus contains information about upgradeAppliance operation.
1451message UpgradeStatus {
1452  // The possible values of the state.
1453  enum State {
1454    // The state was not sampled by the health checks yet.
1455    STATE_UNSPECIFIED = 0;
1456
1457    // The upgrade has started.
1458    RUNNING = 1;
1459
1460    // The upgrade failed.
1461    FAILED = 2;
1462
1463    // The upgrade finished successfully.
1464    SUCCEEDED = 3;
1465  }
1466
1467  // The version to upgrade to.
1468  string version = 1;
1469
1470  // The state of the upgradeAppliance operation.
1471  State state = 2;
1472
1473  // Provides details on the state of the upgrade operation in case of an error.
1474  google.rpc.Status error = 3;
1475
1476  // The time the operation was started.
1477  google.protobuf.Timestamp start_time = 4;
1478
1479  // The version from which we upgraded.
1480  string previous_version = 5;
1481}
1482
1483// Holds informatiom about the available versions for upgrade.
1484message AvailableUpdates {
1485  // The newest deployable version of the appliance.
1486  // The current appliance can't be updated into this version, and the owner
1487  // must manually deploy this OVA to a new appliance.
1488  ApplianceVersion new_deployable_appliance = 1;
1489
1490  // The latest version for in place update.
1491  // The current appliance can be updated to this version using the API or m4c
1492  // CLI.
1493  ApplianceVersion in_place_update = 2;
1494}
1495
1496// Describes an appliance version.
1497message ApplianceVersion {
1498  // The appliance version.
1499  string version = 1;
1500
1501  // A link for downloading the version.
1502  string uri = 2;
1503
1504  // Determine whether it's critical to upgrade the appliance to this version.
1505  bool critical = 3;
1506
1507  // Link to a page that contains the version release notes.
1508  string release_notes_uri = 4;
1509}
1510
1511// Request message for 'ListSources' request.
1512message ListSourcesRequest {
1513  // Required. The parent, which owns this collection of sources.
1514  string parent = 1 [
1515    (google.api.field_behavior) = REQUIRED,
1516    (google.api.resource_reference) = {
1517      child_type: "vmmigration.googleapis.com/Source"
1518    }
1519  ];
1520
1521  // Optional. The maximum number of sources to return. The service may return
1522  // fewer than this value. If unspecified, at most 500 sources will be
1523  // returned. The maximum value is 1000; values above 1000 will be coerced to
1524  // 1000.
1525  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
1526
1527  // Required. A page token, received from a previous `ListSources` call.
1528  // Provide this to retrieve the subsequent page.
1529  //
1530  // When paginating, all other parameters provided to `ListSources` must
1531  // match the call that provided the page token.
1532  string page_token = 3 [(google.api.field_behavior) = REQUIRED];
1533
1534  // Optional. The filter request.
1535  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
1536
1537  // Optional. the order by fields for the result.
1538  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
1539}
1540
1541// Response message for 'ListSources' request.
1542message ListSourcesResponse {
1543  // Output only. The list of sources response.
1544  repeated Source sources = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1545
1546  // Output only. A token, which can be sent as `page_token` to retrieve the
1547  // next page. If this field is omitted, there are no subsequent pages.
1548  string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
1549
1550  // Output only. Locations that could not be reached.
1551  repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
1552}
1553
1554// Request message for 'GetSource' request.
1555message GetSourceRequest {
1556  // Required. The Source name.
1557  string name = 1 [
1558    (google.api.field_behavior) = REQUIRED,
1559    (google.api.resource_reference) = {
1560      type: "vmmigration.googleapis.com/Source"
1561    }
1562  ];
1563}
1564
1565// Request message for 'CreateSource' request.
1566message CreateSourceRequest {
1567  // Required. The Source's parent.
1568  string parent = 1 [
1569    (google.api.field_behavior) = REQUIRED,
1570    (google.api.resource_reference) = {
1571      child_type: "vmmigration.googleapis.com/Source"
1572    }
1573  ];
1574
1575  // Required. The source identifier.
1576  string source_id = 2 [(google.api.field_behavior) = REQUIRED];
1577
1578  // Required. The create request body.
1579  Source source = 3 [(google.api.field_behavior) = REQUIRED];
1580
1581  // A request ID to identify requests. Specify a unique request ID
1582  // so that if you must retry your request, the server will know to ignore
1583  // the request if it has already been completed. The server will guarantee
1584  // that for at least 60 minutes since the first request.
1585  //
1586  // For example, consider a situation where you make an initial request and t
1587  // he request times out. If you make the request again with the same request
1588  // ID, the server can check if original operation with the same request ID
1589  // was received, and if so, will ignore the second request. This prevents
1590  // clients from accidentally creating duplicate commitments.
1591  //
1592  // The request ID must be a valid UUID with the exception that zero UUID is
1593  // not supported (00000000-0000-0000-0000-000000000000).
1594  string request_id = 4;
1595}
1596
1597// Update message for 'UpdateSources' request.
1598message UpdateSourceRequest {
1599  // Field mask is used to specify the fields to be overwritten in the
1600  // Source resource by the update.
1601  // The fields specified in the update_mask are relative to the resource, not
1602  // the full request. A field will be overwritten if it is in the mask. If the
1603  // user does not provide a mask then all fields will be overwritten.
1604  google.protobuf.FieldMask update_mask = 1;
1605
1606  // Required. The update request body.
1607  Source source = 2 [(google.api.field_behavior) = REQUIRED];
1608
1609  // A request ID to identify requests. Specify a unique request ID
1610  // so that if you must retry your request, the server will know to ignore
1611  // the request if it has already been completed. The server will guarantee
1612  // that for at least 60 minutes since the first request.
1613  //
1614  // For example, consider a situation where you make an initial request and t
1615  // he request times out. If you make the request again with the same request
1616  // ID, the server can check if original operation with the same request ID
1617  // was received, and if so, will ignore the second request. This prevents
1618  // clients from accidentally creating duplicate commitments.
1619  //
1620  // The request ID must be a valid UUID with the exception that zero UUID is
1621  // not supported (00000000-0000-0000-0000-000000000000).
1622  string request_id = 3;
1623}
1624
1625// Request message for 'DeleteSource' request.
1626message DeleteSourceRequest {
1627  // Required. The Source name.
1628  string name = 1 [
1629    (google.api.field_behavior) = REQUIRED,
1630    (google.api.resource_reference) = {
1631      type: "vmmigration.googleapis.com/Source"
1632    }
1633  ];
1634
1635  // Optional. A request ID to identify requests. Specify a unique request ID
1636  // so that if you must retry your request, the server will know to ignore
1637  // the request if it has already been completed. The server will guarantee
1638  // that for at least 60 minutes after the first request.
1639  //
1640  // For example, consider a situation where you make an initial request and t
1641  // he request times out. If you make the request again with the same request
1642  // ID, the server can check if original operation with the same request ID
1643  // was received, and if so, will ignore the second request. This prevents
1644  // clients from accidentally creating duplicate commitments.
1645  //
1646  // The request ID must be a valid UUID with the exception that zero UUID is
1647  // not supported (00000000-0000-0000-0000-000000000000).
1648  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
1649}
1650
1651// Request message for
1652// [fetchInventory][google.cloud.vmmigration.v1.VmMigration.FetchInventory].
1653message FetchInventoryRequest {
1654  // Required. The name of the Source.
1655  string source = 1 [
1656    (google.api.field_behavior) = REQUIRED,
1657    (google.api.resource_reference) = {
1658      type: "vmmigration.googleapis.com/Source"
1659    }
1660  ];
1661
1662  // If this flag is set to true, the source will be queried instead of using
1663  // cached results. Using this flag will make the call slower.
1664  bool force_refresh = 2;
1665}
1666
1667// VmwareVmDetails describes a VM in vCenter.
1668message VmwareVmDetails {
1669  // Possible values for the power state of the VM.
1670  enum PowerState {
1671    // Power state is not specified.
1672    POWER_STATE_UNSPECIFIED = 0;
1673
1674    // The VM is turned ON.
1675    ON = 1;
1676
1677    // The VM is turned OFF.
1678    OFF = 2;
1679
1680    // The VM is suspended. This is similar to hibernation or sleep mode.
1681    SUSPENDED = 3;
1682  }
1683
1684  // Possible values for vm boot option.
1685  enum BootOption {
1686    // The boot option is unknown.
1687    BOOT_OPTION_UNSPECIFIED = 0;
1688
1689    // The boot option is EFI.
1690    EFI = 1;
1691
1692    // The boot option is BIOS.
1693    BIOS = 2;
1694  }
1695
1696  // The VM's id in the source (note that this is not the MigratingVm's id).
1697  // This is the moref id of the VM.
1698  string vm_id = 1;
1699
1700  // The id of the vCenter's datacenter this VM is contained in.
1701  string datacenter_id = 2;
1702
1703  // The descriptive name of the vCenter's datacenter this VM is contained in.
1704  string datacenter_description = 3;
1705
1706  // The unique identifier of the VM in vCenter.
1707  string uuid = 4;
1708
1709  // The display name of the VM. Note that this is not necessarily unique.
1710  string display_name = 5;
1711
1712  // The power state of the VM at the moment list was taken.
1713  PowerState power_state = 6;
1714
1715  // The number of cpus in the VM.
1716  int32 cpu_count = 7;
1717
1718  // The size of the memory of the VM in MB.
1719  int32 memory_mb = 8;
1720
1721  // The number of disks the VM has.
1722  int32 disk_count = 9;
1723
1724  // The total size of the storage allocated to the VM in MB.
1725  int64 committed_storage_mb = 12;
1726
1727  // The VM's OS. See for example
1728  // https://vdc-repo.vmware.com/vmwb-repository/dcr-public/da47f910-60ac-438b-8b9b-6122f4d14524/16b7274a-bf8b-4b4c-a05e-746f2aa93c8c/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html
1729  // for types of strings this might hold.
1730  string guest_description = 11;
1731
1732  // Output only. The VM Boot Option.
1733  BootOption boot_option = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
1734}
1735
1736// AwsVmDetails describes a VM in AWS.
1737message AwsVmDetails {
1738  // Possible values for the power state of the VM.
1739  enum PowerState {
1740    // Power state is not specified.
1741    POWER_STATE_UNSPECIFIED = 0;
1742
1743    // The VM is turned on.
1744    ON = 1;
1745
1746    // The VM is turned off.
1747    OFF = 2;
1748
1749    // The VM is suspended. This is similar to hibernation or sleep
1750    // mode.
1751    SUSPENDED = 3;
1752
1753    // The VM is starting.
1754    PENDING = 4;
1755  }
1756
1757  // The possible values for the vm boot option.
1758  enum BootOption {
1759    // The boot option is unknown.
1760    BOOT_OPTION_UNSPECIFIED = 0;
1761
1762    // The boot option is UEFI.
1763    EFI = 1;
1764
1765    // The boot option is LEGACY-BIOS.
1766    BIOS = 2;
1767  }
1768
1769  // Possible values for the virtualization types of the VM.
1770  enum VmVirtualizationType {
1771    // The virtualization type is unknown.
1772    VM_VIRTUALIZATION_TYPE_UNSPECIFIED = 0;
1773
1774    // The virtualziation type is HVM.
1775    HVM = 1;
1776
1777    // The virtualziation type is PARAVIRTUAL.
1778    PARAVIRTUAL = 2;
1779  }
1780
1781  // Possible values for the architectures of the VM.
1782  enum VmArchitecture {
1783    // The architecture is unknown.
1784    VM_ARCHITECTURE_UNSPECIFIED = 0;
1785
1786    // The architecture is I386.
1787    I386 = 1;
1788
1789    // The architecture is X86_64.
1790    X86_64 = 2;
1791
1792    // The architecture is ARM64.
1793    ARM64 = 3;
1794
1795    // The architecture is X86_64_MAC.
1796    X86_64_MAC = 4;
1797  }
1798
1799  // The VM ID in AWS.
1800  string vm_id = 1;
1801
1802  // The display name of the VM. Note that this value is not necessarily unique.
1803  string display_name = 2;
1804
1805  // The id of the AWS's source this VM is connected to.
1806  string source_id = 3;
1807
1808  // The descriptive name of the AWS's source this VM is connected to.
1809  string source_description = 4;
1810
1811  // Output only. The power state of the VM at the moment list was taken.
1812  PowerState power_state = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
1813
1814  // The number of cpus the VM has.
1815  int32 cpu_count = 6;
1816
1817  // The memory size of the VM in MB.
1818  int32 memory_mb = 7;
1819
1820  // The number of disks the VM has.
1821  int32 disk_count = 8;
1822
1823  // The total size of the storage allocated to the VM in MB.
1824  int64 committed_storage_mb = 9;
1825
1826  // The VM's OS.
1827  string os_description = 10;
1828
1829  // The VM Boot Option.
1830  BootOption boot_option = 11;
1831
1832  // The instance type of the VM.
1833  string instance_type = 12;
1834
1835  // The VPC ID the VM belongs to.
1836  string vpc_id = 13;
1837
1838  // The security groups the VM belongs to.
1839  repeated AwsSecurityGroup security_groups = 14;
1840
1841  // The tags of the VM.
1842  map<string, string> tags = 15;
1843
1844  // The AWS zone of the VM.
1845  string zone = 16;
1846
1847  // The virtualization type.
1848  VmVirtualizationType virtualization_type = 17;
1849
1850  // The CPU architecture.
1851  VmArchitecture architecture = 18;
1852}
1853
1854// AwsSecurityGroup describes a security group of an AWS VM.
1855message AwsSecurityGroup {
1856  // The AWS security group id.
1857  string id = 1;
1858
1859  // The AWS security group name.
1860  string name = 2;
1861}
1862
1863// VmwareVmsDetails describes VMs in vCenter.
1864message VmwareVmsDetails {
1865  // The details of the vmware VMs.
1866  repeated VmwareVmDetails details = 1;
1867}
1868
1869// AWSVmsDetails describes VMs in AWS.
1870message AwsVmsDetails {
1871  // The details of the AWS VMs.
1872  repeated AwsVmDetails details = 1;
1873}
1874
1875// Response message for
1876// [fetchInventory][google.cloud.vmmigration.v1.VmMigration.FetchInventory].
1877message FetchInventoryResponse {
1878  oneof SourceVms {
1879    // The description of the VMs in a Source of type Vmware.
1880    VmwareVmsDetails vmware_vms = 1;
1881
1882    // The description of the VMs in a Source of type AWS.
1883    AwsVmsDetails aws_vms = 3;
1884  }
1885
1886  // Output only. The timestamp when the source was last queried (if the result
1887  // is from the cache).
1888  google.protobuf.Timestamp update_time = 2
1889      [(google.api.field_behavior) = OUTPUT_ONLY];
1890}
1891
1892// Utilization report details the utilization (CPU, memory, etc.) of selected
1893// source VMs.
1894message UtilizationReport {
1895  option (google.api.resource) = {
1896    type: "vmmigration.googleapis.com/UtilizationReport"
1897    pattern: "projects/{project}/locations/{location}/sources/{source}/utilizationReports/{utilization_report}"
1898  };
1899
1900  // Utilization report state.
1901  enum State {
1902    // The state is unknown. This value is not in use.
1903    STATE_UNSPECIFIED = 0;
1904
1905    // The report is in the making.
1906    CREATING = 1;
1907
1908    // Report creation completed successfully.
1909    SUCCEEDED = 2;
1910
1911    // Report creation failed.
1912    FAILED = 3;
1913  }
1914
1915  // Report time frame options.
1916  enum TimeFrame {
1917    // The time frame was not specified and will default to WEEK.
1918    TIME_FRAME_UNSPECIFIED = 0;
1919
1920    // One week.
1921    WEEK = 1;
1922
1923    // One month.
1924    MONTH = 2;
1925
1926    // One year.
1927    YEAR = 3;
1928  }
1929
1930  // Output only. The report unique name.
1931  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1932
1933  // The report display name, as assigned by the user.
1934  string display_name = 2;
1935
1936  // Output only. Current state of the report.
1937  State state = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
1938
1939  // Output only. The time the state was last set.
1940  google.protobuf.Timestamp state_time = 4
1941      [(google.api.field_behavior) = OUTPUT_ONLY];
1942
1943  // Output only. Provides details on the state of the report in case of an
1944  // error.
1945  google.rpc.Status error = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
1946
1947  // Output only. The time the report was created (this refers to the time of
1948  // the request, not the time the report creation completed).
1949  google.protobuf.Timestamp create_time = 6
1950      [(google.api.field_behavior) = OUTPUT_ONLY];
1951
1952  // Time frame of the report.
1953  TimeFrame time_frame = 7;
1954
1955  // Output only. The point in time when the time frame ends. Notice that the
1956  // time frame is counted backwards. For instance if the "frame_end_time" value
1957  // is 2021/01/20 and the time frame is WEEK then the report covers the week
1958  // between 2021/01/20 and 2021/01/14.
1959  google.protobuf.Timestamp frame_end_time = 8
1960      [(google.api.field_behavior) = OUTPUT_ONLY];
1961
1962  // Output only. Total number of VMs included in the report.
1963  int32 vm_count = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
1964
1965  // List of utilization information per VM.
1966  // When sent as part of the request, the "vm_id" field is used in order to
1967  // specify which VMs to include in the report. In that case all other fields
1968  // are ignored.
1969  repeated VmUtilizationInfo vms = 10;
1970}
1971
1972// Utilization information of a single VM.
1973message VmUtilizationInfo {
1974  oneof VmDetails {
1975    // The description of the VM in a Source of type Vmware.
1976    VmwareVmDetails vmware_vm_details = 1;
1977  }
1978
1979  // The VM's ID in the source.
1980  string vm_id = 3;
1981
1982  // Utilization metrics for this VM.
1983  VmUtilizationMetrics utilization = 2;
1984}
1985
1986// Utilization metrics values for a single VM.
1987message VmUtilizationMetrics {
1988  // Max CPU usage, percent.
1989  int32 cpu_max_percent = 9;
1990
1991  // Average CPU usage, percent.
1992  int32 cpu_average_percent = 10;
1993
1994  // Max memory usage, percent.
1995  int32 memory_max_percent = 11;
1996
1997  // Average memory usage, percent.
1998  int32 memory_average_percent = 12;
1999
2000  // Max disk IO rate, in kilobytes per second.
2001  int64 disk_io_rate_max_kbps = 13;
2002
2003  // Average disk IO rate, in kilobytes per second.
2004  int64 disk_io_rate_average_kbps = 14;
2005
2006  // Max network throughput (combined transmit-rates and receive-rates), in
2007  // kilobytes per second.
2008  int64 network_throughput_max_kbps = 15;
2009
2010  // Average network throughput (combined transmit-rates and receive-rates), in
2011  // kilobytes per second.
2012  int64 network_throughput_average_kbps = 16;
2013}
2014
2015// Request message for 'ListUtilizationReports' request.
2016message ListUtilizationReportsRequest {
2017  // Required. The Utilization Reports parent.
2018  string parent = 1 [
2019    (google.api.field_behavior) = REQUIRED,
2020    (google.api.resource_reference) = {
2021      child_type: "vmmigration.googleapis.com/UtilizationReport"
2022    }
2023  ];
2024
2025  // Optional. The level of details of each report.
2026  // Defaults to BASIC.
2027  UtilizationReportView view = 2 [(google.api.field_behavior) = OPTIONAL];
2028
2029  // Optional. The maximum number of reports to return. The service may return
2030  // fewer than this value. If unspecified, at most 500 reports will be
2031  // returned. The maximum value is 1000; values above 1000 will be coerced to
2032  // 1000.
2033  int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL];
2034
2035  // Required. A page token, received from a previous `ListUtilizationReports`
2036  // call. Provide this to retrieve the subsequent page.
2037  //
2038  // When paginating, all other parameters provided to `ListUtilizationReports`
2039  // must match the call that provided the page token.
2040  string page_token = 4 [(google.api.field_behavior) = REQUIRED];
2041
2042  // Optional. The filter request.
2043  string filter = 5 [(google.api.field_behavior) = OPTIONAL];
2044
2045  // Optional. the order by fields for the result.
2046  string order_by = 6 [(google.api.field_behavior) = OPTIONAL];
2047}
2048
2049// Response message for 'ListUtilizationReports' request.
2050message ListUtilizationReportsResponse {
2051  // Output only. The list of reports.
2052  repeated UtilizationReport utilization_reports = 1
2053      [(google.api.field_behavior) = OUTPUT_ONLY];
2054
2055  // Output only. A token, which can be sent as `page_token` to retrieve the
2056  // next page. If this field is omitted, there are no subsequent pages.
2057  string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
2058
2059  // Output only. Locations that could not be reached.
2060  repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
2061}
2062
2063// Request message for 'GetUtilizationReport' request.
2064message GetUtilizationReportRequest {
2065  // Required. The Utilization Report name.
2066  string name = 1 [
2067    (google.api.field_behavior) = REQUIRED,
2068    (google.api.resource_reference) = {
2069      type: "vmmigration.googleapis.com/UtilizationReport"
2070    }
2071  ];
2072
2073  // Optional. The level of details of the report.
2074  // Defaults to FULL
2075  UtilizationReportView view = 2 [(google.api.field_behavior) = OPTIONAL];
2076}
2077
2078// Request message for 'CreateUtilizationReport' request.
2079message CreateUtilizationReportRequest {
2080  // Required. The Utilization Report's parent.
2081  string parent = 1 [
2082    (google.api.field_behavior) = REQUIRED,
2083    (google.api.resource_reference) = {
2084      child_type: "vmmigration.googleapis.com/UtilizationReport"
2085    }
2086  ];
2087
2088  // Required. The report to create.
2089  UtilizationReport utilization_report = 2
2090      [(google.api.field_behavior) = REQUIRED];
2091
2092  // Required. The ID to use for the report, which will become the final
2093  // component of the reports's resource name.
2094  //
2095  // This value maximum length is 63 characters, and valid characters
2096  // are /[a-z][0-9]-/. It must start with an english letter and must not
2097  // end with a hyphen.
2098  string utilization_report_id = 3 [(google.api.field_behavior) = REQUIRED];
2099
2100  // A request ID to identify requests. Specify a unique request ID
2101  // so that if you must retry your request, the server will know to ignore
2102  // the request if it has already been completed. The server will guarantee
2103  // that for at least 60 minutes since the first request.
2104  //
2105  // For example, consider a situation where you make an initial request and t
2106  // he request times out. If you make the request again with the same request
2107  // ID, the server can check if original operation with the same request ID
2108  // was received, and if so, will ignore the second request. This prevents
2109  // clients from accidentally creating duplicate commitments.
2110  //
2111  // The request ID must be a valid UUID with the exception that zero UUID is
2112  // not supported (00000000-0000-0000-0000-000000000000).
2113  string request_id = 4;
2114}
2115
2116// Request message for 'DeleteUtilizationReport' request.
2117message DeleteUtilizationReportRequest {
2118  // Required. The Utilization Report name.
2119  string name = 1 [
2120    (google.api.field_behavior) = REQUIRED,
2121    (google.api.resource_reference) = {
2122      type: "vmmigration.googleapis.com/UtilizationReport"
2123    }
2124  ];
2125
2126  // Optional. A request ID to identify requests. Specify a unique request ID
2127  // so that if you must retry your request, the server will know to ignore
2128  // the request if it has already been completed. The server will guarantee
2129  // that for at least 60 minutes after the first request.
2130  //
2131  // For example, consider a situation where you make an initial request and t
2132  // he request times out. If you make the request again with the same request
2133  // ID, the server can check if original operation with the same request ID
2134  // was received, and if so, will ignore the second request. This prevents
2135  // clients from accidentally creating duplicate commitments.
2136  //
2137  // The request ID must be a valid UUID with the exception that zero UUID is
2138  // not supported (00000000-0000-0000-0000-000000000000).
2139  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
2140}
2141
2142// Response message for 'ListDatacenterConnectors' request.
2143message ListDatacenterConnectorsResponse {
2144  // Output only. The list of sources response.
2145  repeated DatacenterConnector datacenter_connectors = 1
2146      [(google.api.field_behavior) = OUTPUT_ONLY];
2147
2148  // Output only. A token, which can be sent as `page_token` to retrieve the
2149  // next page. If this field is omitted, there are no subsequent pages.
2150  string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
2151
2152  // Output only. Locations that could not be reached.
2153  repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
2154}
2155
2156// Request message for 'GetDatacenterConnector' request.
2157message GetDatacenterConnectorRequest {
2158  // Required. The name of the DatacenterConnector.
2159  string name = 1 [
2160    (google.api.field_behavior) = REQUIRED,
2161    (google.api.resource_reference) = {
2162      type: "vmmigration.googleapis.com/DatacenterConnector"
2163    }
2164  ];
2165}
2166
2167// Request message for 'CreateDatacenterConnector' request.
2168message CreateDatacenterConnectorRequest {
2169  // Required. The DatacenterConnector's parent.
2170  // Required. The Source in where the new DatacenterConnector will be created.
2171  // For example:
2172  // `projects/my-project/locations/us-central1/sources/my-source`
2173  string parent = 1 [
2174    (google.api.field_behavior) = REQUIRED,
2175    (google.api.resource_reference) = {
2176      child_type: "vmmigration.googleapis.com/DatacenterConnector"
2177    }
2178  ];
2179
2180  // Required. The datacenterConnector identifier.
2181  string datacenter_connector_id = 2 [(google.api.field_behavior) = REQUIRED];
2182
2183  // Required. The create request body.
2184  DatacenterConnector datacenter_connector = 3
2185      [(google.api.field_behavior) = REQUIRED];
2186
2187  // A request ID to identify requests. Specify a unique request ID
2188  // so that if you must retry your request, the server will know to ignore
2189  // the request if it has already been completed. The server will guarantee
2190  // that for at least 60 minutes since the first request.
2191  //
2192  // For example, consider a situation where you make an initial request and t
2193  // he request times out. If you make the request again with the same request
2194  // ID, the server can check if original operation with the same request ID
2195  // was received, and if so, will ignore the second request. This prevents
2196  // clients from accidentally creating duplicate commitments.
2197  //
2198  // The request ID must be a valid UUID with the exception that zero UUID is
2199  // not supported (00000000-0000-0000-0000-000000000000).
2200  string request_id = 4;
2201}
2202
2203// Request message for 'DeleteDatacenterConnector' request.
2204message DeleteDatacenterConnectorRequest {
2205  // Required. The DatacenterConnector name.
2206  string name = 1 [
2207    (google.api.field_behavior) = REQUIRED,
2208    (google.api.resource_reference) = {
2209      type: "vmmigration.googleapis.com/DatacenterConnector"
2210    }
2211  ];
2212
2213  // A request ID to identify requests. Specify a unique request ID
2214  // so that if you must retry your request, the server will know to ignore
2215  // the request if it has already been completed. The server will guarantee
2216  // that for at least 60 minutes after the first request.
2217  //
2218  // For example, consider a situation where you make an initial request and t
2219  // he request times out. If you make the request again with the same request
2220  // ID, the server can check if original operation with the same request ID
2221  // was received, and if so, will ignore the second request. This prevents
2222  // clients from accidentally creating duplicate commitments.
2223  //
2224  // The request ID must be a valid UUID with the exception that zero UUID is
2225  // not supported (00000000-0000-0000-0000-000000000000).
2226  string request_id = 2;
2227}
2228
2229// Request message for 'UpgradeAppliance' request.
2230message UpgradeApplianceRequest {
2231  // Required. The DatacenterConnector name.
2232  string datacenter_connector = 1 [
2233    (google.api.field_behavior) = REQUIRED,
2234    (google.api.resource_reference) = {
2235      type: "vmmigration.googleapis.com/DatacenterConnector"
2236    }
2237  ];
2238
2239  // A request ID to identify requests. Specify a unique request ID
2240  // so that if you must retry your request, the server will know to ignore
2241  // the request if it has already been completed. The server will guarantee
2242  // that for at least 60 minutes after the first request.
2243  //
2244  // For example, consider a situation where you make an initial request and t
2245  // he request times out. If you make the request again with the same request
2246  // ID, the server can check if original operation with the same request ID
2247  // was received, and if so, will ignore the second request. This prevents
2248  // clients from accidentally creating duplicate commitments.
2249  //
2250  // The request ID must be a valid UUID with the exception that zero UUID is
2251  // not supported (00000000-0000-0000-0000-000000000000).
2252  string request_id = 2;
2253}
2254
2255// Response message for 'UpgradeAppliance' request.
2256message UpgradeApplianceResponse {}
2257
2258// Request message for 'ListDatacenterConnectors' request.
2259message ListDatacenterConnectorsRequest {
2260  // Required. The parent, which owns this collection of connectors.
2261  string parent = 1 [
2262    (google.api.field_behavior) = REQUIRED,
2263    (google.api.resource_reference) = {
2264      child_type: "vmmigration.googleapis.com/DatacenterConnector"
2265    }
2266  ];
2267
2268  // Optional. The maximum number of connectors to return. The service may
2269  // return fewer than this value. If unspecified, at most 500 sources will be
2270  // returned. The maximum value is 1000; values above 1000 will be coerced to
2271  // 1000.
2272  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
2273
2274  // Required. A page token, received from a previous `ListDatacenterConnectors`
2275  // call. Provide this to retrieve the subsequent page.
2276  //
2277  // When paginating, all other parameters provided to
2278  // `ListDatacenterConnectors` must match the call that provided the page
2279  // token.
2280  string page_token = 3 [(google.api.field_behavior) = REQUIRED];
2281
2282  // Optional. The filter request.
2283  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
2284
2285  // Optional. the order by fields for the result.
2286  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
2287}
2288
2289// ComputeEngineTargetDefaults is a collection of details for creating a VM in a
2290// target Compute Engine project.
2291message ComputeEngineTargetDefaults {
2292  // The name of the VM to create.
2293  string vm_name = 1;
2294
2295  // The full path of the resource of type TargetProject which represents the
2296  // Compute Engine project in which to create this VM.
2297  string target_project = 2 [(google.api.resource_reference) = {
2298    type: "vmmigration.googleapis.com/TargetProject"
2299  }];
2300
2301  // The zone in which to create the VM.
2302  string zone = 3;
2303
2304  // The machine type series to create the VM with.
2305  string machine_type_series = 4;
2306
2307  // The machine type to create the VM with.
2308  string machine_type = 5;
2309
2310  // A map of network tags to associate with the VM.
2311  repeated string network_tags = 6;
2312
2313  // List of NICs connected to this VM.
2314  repeated NetworkInterface network_interfaces = 7;
2315
2316  // The service account to associate the VM with.
2317  string service_account = 8;
2318
2319  // The disk type to use in the VM.
2320  ComputeEngineDiskType disk_type = 9;
2321
2322  // A map of labels to associate with the VM.
2323  map<string, string> labels = 10;
2324
2325  // The license type to use in OS adaptation.
2326  ComputeEngineLicenseType license_type = 11;
2327
2328  // Output only. The OS license returned from the adaptation module report.
2329  AppliedLicense applied_license = 12
2330      [(google.api.field_behavior) = OUTPUT_ONLY];
2331
2332  // Compute instance scheduling information (if empty default is used).
2333  ComputeScheduling compute_scheduling = 13;
2334
2335  // Defines whether the instance has Secure Boot enabled.
2336  // This can be set to true only if the vm boot option is EFI.
2337  bool secure_boot = 14;
2338
2339  // Output only. The VM Boot Option, as set in the source vm.
2340  ComputeEngineBootOption boot_option = 15
2341      [(google.api.field_behavior) = OUTPUT_ONLY];
2342
2343  // The metadata key/value pairs to assign to the VM.
2344  map<string, string> metadata = 16;
2345
2346  // Additional licenses to assign to the VM.
2347  repeated string additional_licenses = 17;
2348
2349  // The hostname to assign to the VM.
2350  string hostname = 18;
2351}
2352
2353// ComputeEngineTargetDetails is a collection of details for creating a VM in a
2354// target Compute Engine project.
2355message ComputeEngineTargetDetails {
2356  // The name of the VM to create.
2357  string vm_name = 1;
2358
2359  // The Google Cloud target project ID or project name.
2360  string project = 2;
2361
2362  // The zone in which to create the VM.
2363  string zone = 3;
2364
2365  // The machine type series to create the VM with.
2366  string machine_type_series = 4;
2367
2368  // The machine type to create the VM with.
2369  string machine_type = 5;
2370
2371  // A map of network tags to associate with the VM.
2372  repeated string network_tags = 6;
2373
2374  // List of NICs connected to this VM.
2375  repeated NetworkInterface network_interfaces = 7;
2376
2377  // The service account to associate the VM with.
2378  string service_account = 8;
2379
2380  // The disk type to use in the VM.
2381  ComputeEngineDiskType disk_type = 9;
2382
2383  // A map of labels to associate with the VM.
2384  map<string, string> labels = 10;
2385
2386  // The license type to use in OS adaptation.
2387  ComputeEngineLicenseType license_type = 11;
2388
2389  // The OS license returned from the adaptation module report.
2390  AppliedLicense applied_license = 12;
2391
2392  // Compute instance scheduling information (if empty default is used).
2393  ComputeScheduling compute_scheduling = 13;
2394
2395  // Defines whether the instance has Secure Boot enabled.
2396  // This can be set to true only if the vm boot option is EFI.
2397  bool secure_boot = 14;
2398
2399  // The VM Boot Option, as set in the source vm.
2400  ComputeEngineBootOption boot_option = 15;
2401
2402  // The metadata key/value pairs to assign to the VM.
2403  map<string, string> metadata = 16;
2404
2405  // Additional licenses to assign to the VM.
2406  repeated string additional_licenses = 17;
2407
2408  // The hostname to assign to the VM.
2409  string hostname = 18;
2410}
2411
2412// NetworkInterface represents a NIC of a VM.
2413message NetworkInterface {
2414  // The network to connect the NIC to.
2415  string network = 1;
2416
2417  // The subnetwork to connect the NIC to.
2418  string subnetwork = 2;
2419
2420  // The internal IP to define in the NIC.
2421  // The formats accepted are: `ephemeral` \ ipv4 address \ a named address
2422  // resource full path.
2423  string internal_ip = 3;
2424
2425  // The external IP to define in the NIC.
2426  string external_ip = 4;
2427}
2428
2429// AppliedLicense holds the license data returned by adaptation module report.
2430message AppliedLicense {
2431  // License types used in OS adaptation.
2432  enum Type {
2433    // Unspecified license for the OS.
2434    TYPE_UNSPECIFIED = 0;
2435
2436    // No license available for the OS.
2437    NONE = 1;
2438
2439    // The license type is Pay As You Go license type.
2440    PAYG = 2;
2441
2442    // The license type is Bring Your Own License type.
2443    BYOL = 3;
2444  }
2445
2446  // The license type that was used in OS adaptation.
2447  Type type = 1;
2448
2449  // The OS license returned from the adaptation module's report.
2450  string os_license = 2;
2451}
2452
2453// Node Affinity: the configuration of desired nodes onto which this Instance
2454// could be scheduled. Based on
2455// https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling
2456message SchedulingNodeAffinity {
2457  // Possible types of node selection operators. Valid operators are IN for
2458  // affinity and NOT_IN for anti-affinity.
2459  enum Operator {
2460    // An unknown, unexpected behavior.
2461    OPERATOR_UNSPECIFIED = 0;
2462
2463    // The node resource group should be in these resources affinity.
2464    IN = 1;
2465
2466    // The node resource group should not be in these resources affinity.
2467    NOT_IN = 2;
2468  }
2469
2470  // The label key of Node resource to reference.
2471  string key = 1;
2472
2473  // The operator to use for the node resources specified in the `values`
2474  // parameter.
2475  Operator operator = 2;
2476
2477  // Corresponds to the label values of Node resource.
2478  repeated string values = 3;
2479}
2480
2481// Scheduling information for VM on maintenance/restart behaviour and
2482// node allocation in sole tenant nodes.
2483message ComputeScheduling {
2484  enum OnHostMaintenance {
2485    // An unknown, unexpected behavior.
2486    ON_HOST_MAINTENANCE_UNSPECIFIED = 0;
2487
2488    // Terminate the instance when the host machine undergoes maintenance.
2489    TERMINATE = 1;
2490
2491    // Migrate the instance when the host machine undergoes maintenance.
2492    MIGRATE = 2;
2493  }
2494
2495  // Defines whether the Instance should be automatically restarted whenever
2496  // it is terminated by Compute Engine (not terminated by user).
2497  enum RestartType {
2498    // Unspecified behavior. This will use the default.
2499    RESTART_TYPE_UNSPECIFIED = 0;
2500
2501    // The Instance should be automatically restarted whenever it is
2502    // terminated by Compute Engine.
2503    AUTOMATIC_RESTART = 1;
2504
2505    // The Instance isn't automatically restarted whenever it is
2506    // terminated by Compute Engine.
2507    NO_AUTOMATIC_RESTART = 2;
2508  }
2509
2510  // How the instance should behave when the host machine undergoes
2511  // maintenance that may temporarily impact instance performance.
2512  OnHostMaintenance on_host_maintenance = 1;
2513
2514  // Whether the Instance should be automatically restarted whenever it is
2515  // terminated by Compute Engine (not terminated by user).
2516  // This configuration is identical to `automaticRestart` field in Compute
2517  // Engine create instance under scheduling.
2518  // It was changed to an enum (instead of a boolean) to match the default
2519  // value in Compute Engine which is automatic restart.
2520  RestartType restart_type = 5;
2521
2522  // A set of node affinity and anti-affinity configurations for sole tenant
2523  // nodes.
2524  repeated SchedulingNodeAffinity node_affinities = 3;
2525
2526  // The minimum number of virtual CPUs this instance will consume when
2527  // running on a sole-tenant node. Ignored if no node_affinites are
2528  // configured.
2529  int32 min_node_cpus = 4;
2530}
2531
2532// A policy for scheduling replications.
2533message SchedulePolicy {
2534  // The idle duration between replication stages.
2535  google.protobuf.Duration idle_duration = 1;
2536
2537  // A flag to indicate whether to skip OS adaptation during the replication
2538  // sync. OS adaptation is a process where the VM's operating system undergoes
2539  // changes and adaptations to fully function on Compute Engine.
2540  bool skip_os_adaptation = 2;
2541}
2542
2543// Request message for 'CreateMigratingVm' request.
2544message CreateMigratingVmRequest {
2545  // Required. The MigratingVm's parent.
2546  string parent = 1 [
2547    (google.api.field_behavior) = REQUIRED,
2548    (google.api.resource_reference) = {
2549      child_type: "vmmigration.googleapis.com/MigratingVm"
2550    }
2551  ];
2552
2553  // Required. The migratingVm identifier.
2554  string migrating_vm_id = 2 [(google.api.field_behavior) = REQUIRED];
2555
2556  // Required. The create request body.
2557  MigratingVm migrating_vm = 3 [(google.api.field_behavior) = REQUIRED];
2558
2559  // A request ID to identify requests. Specify a unique request ID
2560  // so that if you must retry your request, the server will know to ignore
2561  // the request if it has already been completed. The server will guarantee
2562  // that for at least 60 minutes since the first request.
2563  //
2564  // For example, consider a situation where you make an initial request and t
2565  // he request times out. If you make the request again with the same request
2566  // ID, the server can check if original operation with the same request ID
2567  // was received, and if so, will ignore the second request. This prevents
2568  // clients from accidentally creating duplicate commitments.
2569  //
2570  // The request ID must be a valid UUID with the exception that zero UUID is
2571  // not supported (00000000-0000-0000-0000-000000000000).
2572  string request_id = 4;
2573}
2574
2575// Request message for 'LisMigratingVmsRequest' request.
2576message ListMigratingVmsRequest {
2577  // Required. The parent, which owns this collection of MigratingVms.
2578  string parent = 1 [
2579    (google.api.field_behavior) = REQUIRED,
2580    (google.api.resource_reference) = {
2581      child_type: "vmmigration.googleapis.com/MigratingVm"
2582    }
2583  ];
2584
2585  // Optional. The maximum number of migrating VMs to return. The service may
2586  // return fewer than this value. If unspecified, at most 500 migrating VMs
2587  // will be returned. The maximum value is 1000; values above 1000 will be
2588  // coerced to 1000.
2589  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
2590
2591  // Required. A page token, received from a previous `ListMigratingVms` call.
2592  // Provide this to retrieve the subsequent page.
2593  //
2594  // When paginating, all other parameters provided to `ListMigratingVms`
2595  // must match the call that provided the page token.
2596  string page_token = 3 [(google.api.field_behavior) = REQUIRED];
2597
2598  // Optional. The filter request.
2599  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
2600
2601  // Optional. the order by fields for the result.
2602  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
2603
2604  // Optional. The level of details of each migrating VM.
2605  MigratingVmView view = 6 [(google.api.field_behavior) = OPTIONAL];
2606}
2607
2608// Response message for 'ListMigratingVms' request.
2609message ListMigratingVmsResponse {
2610  // Output only. The list of Migrating VMs response.
2611  repeated MigratingVm migrating_vms = 1
2612      [(google.api.field_behavior) = OUTPUT_ONLY];
2613
2614  // Output only. A token, which can be sent as `page_token` to retrieve the
2615  // next page. If this field is omitted, there are no subsequent pages.
2616  string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
2617
2618  // Output only. Locations that could not be reached.
2619  repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
2620}
2621
2622// Request message for 'GetMigratingVm' request.
2623message GetMigratingVmRequest {
2624  // Required. The name of the MigratingVm.
2625  string name = 1 [
2626    (google.api.field_behavior) = REQUIRED,
2627    (google.api.resource_reference) = {
2628      type: "vmmigration.googleapis.com/MigratingVm"
2629    }
2630  ];
2631
2632  // Optional. The level of details of the migrating VM.
2633  MigratingVmView view = 2 [(google.api.field_behavior) = OPTIONAL];
2634}
2635
2636// Request message for 'UpdateMigratingVm' request.
2637message UpdateMigratingVmRequest {
2638  // Field mask is used to specify the fields to be overwritten in the
2639  // MigratingVm resource by the update.
2640  // The fields specified in the update_mask are relative to the resource, not
2641  // the full request. A field will be overwritten if it is in the mask. If the
2642  // user does not provide a mask then all fields will be overwritten.
2643  google.protobuf.FieldMask update_mask = 1;
2644
2645  // Required. The update request body.
2646  MigratingVm migrating_vm = 2 [(google.api.field_behavior) = REQUIRED];
2647
2648  // A request ID to identify requests. Specify a unique request ID
2649  // so that if you must retry your request, the server will know to ignore
2650  // the request if it has already been completed. The server will guarantee
2651  // that for at least 60 minutes since the first request.
2652  //
2653  // For example, consider a situation where you make an initial request and t
2654  // he request times out. If you make the request again with the same request
2655  // ID, the server can check if original operation with the same request ID
2656  // was received, and if so, will ignore the second request. This prevents
2657  // clients from accidentally creating duplicate commitments.
2658  //
2659  // The request ID must be a valid UUID with the exception that zero UUID is
2660  // not supported (00000000-0000-0000-0000-000000000000).
2661  string request_id = 3;
2662}
2663
2664// Request message for 'DeleteMigratingVm' request.
2665message DeleteMigratingVmRequest {
2666  // Required. The name of the MigratingVm.
2667  string name = 1 [
2668    (google.api.field_behavior) = REQUIRED,
2669    (google.api.resource_reference) = {
2670      type: "vmmigration.googleapis.com/MigratingVm"
2671    }
2672  ];
2673}
2674
2675// Request message for 'StartMigrationRequest' request.
2676message StartMigrationRequest {
2677  // Required. The name of the MigratingVm.
2678  string migrating_vm = 1 [
2679    (google.api.field_behavior) = REQUIRED,
2680    (google.api.resource_reference) = {
2681      type: "vmmigration.googleapis.com/MigratingVm"
2682    }
2683  ];
2684}
2685
2686// Response message for 'StartMigration' request.
2687message StartMigrationResponse {}
2688
2689// Request message for 'PauseMigration' request.
2690message PauseMigrationRequest {
2691  // Required. The name of the MigratingVm.
2692  string migrating_vm = 1 [
2693    (google.api.field_behavior) = REQUIRED,
2694    (google.api.resource_reference) = {
2695      type: "vmmigration.googleapis.com/MigratingVm"
2696    }
2697  ];
2698}
2699
2700// Response message for 'PauseMigration' request.
2701message PauseMigrationResponse {}
2702
2703// Request message for 'ResumeMigration' request.
2704message ResumeMigrationRequest {
2705  // Required. The name of the MigratingVm.
2706  string migrating_vm = 1 [
2707    (google.api.field_behavior) = REQUIRED,
2708    (google.api.resource_reference) = {
2709      type: "vmmigration.googleapis.com/MigratingVm"
2710    }
2711  ];
2712}
2713
2714// Response message for 'ResumeMigration' request.
2715message ResumeMigrationResponse {}
2716
2717// Request message for 'FinalizeMigration' request.
2718message FinalizeMigrationRequest {
2719  // Required. The name of the MigratingVm.
2720  string migrating_vm = 1 [
2721    (google.api.field_behavior) = REQUIRED,
2722    (google.api.resource_reference) = {
2723      type: "vmmigration.googleapis.com/MigratingVm"
2724    }
2725  ];
2726}
2727
2728// Response message for 'FinalizeMigration' request.
2729message FinalizeMigrationResponse {}
2730
2731// TargetProject message represents a target Compute Engine project for a
2732// migration or a clone.
2733message TargetProject {
2734  option (google.api.resource) = {
2735    type: "vmmigration.googleapis.com/TargetProject"
2736    pattern: "projects/{project}/locations/{location}/targetProjects/{target_project}"
2737  };
2738
2739  // Output only. The name of the target project.
2740  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
2741
2742  // The target project ID (number) or project name.
2743  string project = 2;
2744
2745  // The target project's description.
2746  string description = 3;
2747
2748  // Output only. The time this target project resource was created (not related
2749  // to when the Compute Engine project it points to was created).
2750  google.protobuf.Timestamp create_time = 4
2751      [(google.api.field_behavior) = OUTPUT_ONLY];
2752
2753  // Output only. The last time the target project resource was updated.
2754  google.protobuf.Timestamp update_time = 5
2755      [(google.api.field_behavior) = OUTPUT_ONLY];
2756}
2757
2758// Request message for 'GetTargetProject' call.
2759message GetTargetProjectRequest {
2760  // Required. The TargetProject name.
2761  string name = 1 [
2762    (google.api.field_behavior) = REQUIRED,
2763    (google.api.resource_reference) = {
2764      type: "vmmigration.googleapis.com/TargetProject"
2765    }
2766  ];
2767}
2768
2769// Request message for 'ListTargetProjects' call.
2770message ListTargetProjectsRequest {
2771  // Required. The parent, which owns this collection of targets.
2772  string parent = 1 [
2773    (google.api.field_behavior) = REQUIRED,
2774    (google.api.resource_reference) = {
2775      child_type: "vmmigration.googleapis.com/TargetProject"
2776    }
2777  ];
2778
2779  // Optional. The maximum number of targets to return. The service may return
2780  // fewer than this value. If unspecified, at most 500 targets will be
2781  // returned. The maximum value is 1000; values above 1000 will be coerced to
2782  // 1000.
2783  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
2784
2785  // Required. A page token, received from a previous `ListTargets` call.
2786  // Provide this to retrieve the subsequent page.
2787  //
2788  // When paginating, all other parameters provided to `ListTargets` must
2789  // match the call that provided the page token.
2790  string page_token = 3 [(google.api.field_behavior) = REQUIRED];
2791
2792  // Optional. The filter request.
2793  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
2794
2795  // Optional. the order by fields for the result.
2796  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
2797}
2798
2799// Response message for 'ListTargetProjects' call.
2800message ListTargetProjectsResponse {
2801  // Output only. The list of target response.
2802  repeated TargetProject target_projects = 1
2803      [(google.api.field_behavior) = OUTPUT_ONLY];
2804
2805  // Output only. A token, which can be sent as `page_token` to retrieve the
2806  // next page. If this field is omitted, there are no subsequent pages.
2807  string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
2808
2809  // Output only. Locations that could not be reached.
2810  repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
2811}
2812
2813// Request message for 'CreateTargetProject' request.
2814message CreateTargetProjectRequest {
2815  // Required. The TargetProject's parent.
2816  string parent = 1 [
2817    (google.api.field_behavior) = REQUIRED,
2818    (google.api.resource_reference) = {
2819      child_type: "vmmigration.googleapis.com/TargetProject"
2820    }
2821  ];
2822
2823  // Required. The target_project identifier.
2824  string target_project_id = 2 [(google.api.field_behavior) = REQUIRED];
2825
2826  // Required. The create request body.
2827  TargetProject target_project = 3 [(google.api.field_behavior) = REQUIRED];
2828
2829  // A request ID to identify requests. Specify a unique request ID
2830  // so that if you must retry your request, the server will know to ignore
2831  // the request if it has already been completed. The server will guarantee
2832  // that for at least 60 minutes since the first request.
2833  //
2834  // For example, consider a situation where you make an initial request and t
2835  // he request times out. If you make the request again with the same request
2836  // ID, the server can check if original operation with the same request ID
2837  // was received, and if so, will ignore the second request. This prevents
2838  // clients from accidentally creating duplicate commitments.
2839  //
2840  // The request ID must be a valid UUID with the exception that zero UUID is
2841  // not supported (00000000-0000-0000-0000-000000000000).
2842  string request_id = 4;
2843}
2844
2845// Update message for 'UpdateTargetProject' request.
2846message UpdateTargetProjectRequest {
2847  // Field mask is used to specify the fields to be overwritten in the
2848  // TargetProject resource by the update.
2849  // The fields specified in the update_mask are relative to the resource, not
2850  // the full request. A field will be overwritten if it is in the mask. If the
2851  // user does not provide a mask then all fields will be overwritten.
2852  google.protobuf.FieldMask update_mask = 1;
2853
2854  // Required. The update request body.
2855  TargetProject target_project = 2 [(google.api.field_behavior) = REQUIRED];
2856
2857  // A request ID to identify requests. Specify a unique request ID
2858  // so that if you must retry your request, the server will know to ignore
2859  // the request if it has already been completed. The server will guarantee
2860  // that for at least 60 minutes since the first request.
2861  //
2862  // For example, consider a situation where you make an initial request and t
2863  // he request times out. If you make the request again with the same request
2864  // ID, the server can check if original operation with the same request ID
2865  // was received, and if so, will ignore the second request. This prevents
2866  // clients from accidentally creating duplicate commitments.
2867  //
2868  // The request ID must be a valid UUID with the exception that zero UUID is
2869  // not supported (00000000-0000-0000-0000-000000000000).
2870  string request_id = 3;
2871}
2872
2873// Request message for 'DeleteTargetProject' request.
2874message DeleteTargetProjectRequest {
2875  // Required. The TargetProject name.
2876  string name = 1 [
2877    (google.api.field_behavior) = REQUIRED,
2878    (google.api.resource_reference) = {
2879      type: "vmmigration.googleapis.com/TargetProject"
2880    }
2881  ];
2882
2883  // Optional. A request ID to identify requests. Specify a unique request ID
2884  // so that if you must retry your request, the server will know to ignore
2885  // the request if it has already been completed. The server will guarantee
2886  // that for at least 60 minutes after the first request.
2887  //
2888  // For example, consider a situation where you make an initial request and t
2889  // he request times out. If you make the request again with the same request
2890  // ID, the server can check if original operation with the same request ID
2891  // was received, and if so, will ignore the second request. This prevents
2892  // clients from accidentally creating duplicate commitments.
2893  //
2894  // The request ID must be a valid UUID with the exception that zero UUID is
2895  // not supported (00000000-0000-0000-0000-000000000000).
2896  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
2897}
2898
2899// Describes message for 'Group' resource. The Group is a collections of several
2900// MigratingVms.
2901message Group {
2902  option (google.api.resource) = {
2903    type: "vmmigration.googleapis.com/Group"
2904    pattern: "projects/{project}/locations/{location}/groups/{group}"
2905  };
2906
2907  // Output only. The Group name.
2908  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
2909
2910  // Output only. The create time timestamp.
2911  google.protobuf.Timestamp create_time = 2
2912      [(google.api.field_behavior) = OUTPUT_ONLY];
2913
2914  // Output only. The update time timestamp.
2915  google.protobuf.Timestamp update_time = 3
2916      [(google.api.field_behavior) = OUTPUT_ONLY];
2917
2918  // User-provided description of the group.
2919  string description = 4;
2920
2921  // Display name is a user defined name for this group which can be updated.
2922  string display_name = 5;
2923}
2924
2925// Request message for 'ListGroups' request.
2926message ListGroupsRequest {
2927  // Required. The parent, which owns this collection of groups.
2928  string parent = 1 [
2929    (google.api.field_behavior) = REQUIRED,
2930    (google.api.resource_reference) = {
2931      child_type: "vmmigration.googleapis.com/Group"
2932    }
2933  ];
2934
2935  // Optional. The maximum number of groups to return. The service may return
2936  // fewer than this value. If unspecified, at most 500 groups will be
2937  // returned. The maximum value is 1000; values above 1000 will be coerced to
2938  // 1000.
2939  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
2940
2941  // Required. A page token, received from a previous `ListGroups` call.
2942  // Provide this to retrieve the subsequent page.
2943  //
2944  // When paginating, all other parameters provided to `ListGroups` must
2945  // match the call that provided the page token.
2946  string page_token = 3 [(google.api.field_behavior) = REQUIRED];
2947
2948  // Optional. The filter request.
2949  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
2950
2951  // Optional. the order by fields for the result.
2952  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
2953}
2954
2955// Response message for 'ListGroups' request.
2956message ListGroupsResponse {
2957  // Output only. The list of groups response.
2958  repeated Group groups = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
2959
2960  // Output only. A token, which can be sent as `page_token` to retrieve the
2961  // next page. If this field is omitted, there are no subsequent pages.
2962  string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
2963
2964  // Output only. Locations that could not be reached.
2965  repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
2966}
2967
2968// Request message for 'GetGroup' request.
2969message GetGroupRequest {
2970  // Required. The group name.
2971  string name = 1 [
2972    (google.api.field_behavior) = REQUIRED,
2973    (google.api.resource_reference) = {
2974      type: "vmmigration.googleapis.com/Group"
2975    }
2976  ];
2977}
2978
2979// Request message for 'CreateGroup' request.
2980message CreateGroupRequest {
2981  // Required. The Group's parent.
2982  string parent = 1 [
2983    (google.api.field_behavior) = REQUIRED,
2984    (google.api.resource_reference) = {
2985      child_type: "vmmigration.googleapis.com/Group"
2986    }
2987  ];
2988
2989  // Required. The group identifier.
2990  string group_id = 2 [(google.api.field_behavior) = REQUIRED];
2991
2992  // Required. The create request body.
2993  Group group = 3 [(google.api.field_behavior) = REQUIRED];
2994
2995  // A request ID to identify requests. Specify a unique request ID
2996  // so that if you must retry your request, the server will know to ignore
2997  // the request if it has already been completed. The server will guarantee
2998  // that for at least 60 minutes since the first request.
2999  //
3000  // For example, consider a situation where you make an initial request and t
3001  // he request times out. If you make the request again with the same request
3002  // ID, the server can check if original operation with the same request ID
3003  // was received, and if so, will ignore the second request. This prevents
3004  // clients from accidentally creating duplicate commitments.
3005  //
3006  // The request ID must be a valid UUID with the exception that zero UUID is
3007  // not supported (00000000-0000-0000-0000-000000000000).
3008  string request_id = 4;
3009}
3010
3011// Update message for 'UpdateGroups' request.
3012message UpdateGroupRequest {
3013  // Field mask is used to specify the fields to be overwritten in the
3014  // Group resource by the update.
3015  // The fields specified in the update_mask are relative to the resource, not
3016  // the full request. A field will be overwritten if it is in the mask. If the
3017  // user does not provide a mask then all fields will be overwritten.
3018  google.protobuf.FieldMask update_mask = 1;
3019
3020  // Required. The update request body.
3021  Group group = 2 [(google.api.field_behavior) = REQUIRED];
3022
3023  // A request ID to identify requests. Specify a unique request ID
3024  // so that if you must retry your request, the server will know to ignore
3025  // the request if it has already been completed. The server will guarantee
3026  // that for at least 60 minutes since the first request.
3027  //
3028  // For example, consider a situation where you make an initial request and t
3029  // he request times out. If you make the request again with the same request
3030  // ID, the server can check if original operation with the same request ID
3031  // was received, and if so, will ignore the second request. This prevents
3032  // clients from accidentally creating duplicate commitments.
3033  //
3034  // The request ID must be a valid UUID with the exception that zero UUID is
3035  // not supported (00000000-0000-0000-0000-000000000000).
3036  string request_id = 3;
3037}
3038
3039// Request message for 'DeleteGroup' request.
3040message DeleteGroupRequest {
3041  // Required. The Group name.
3042  string name = 1 [
3043    (google.api.field_behavior) = REQUIRED,
3044    (google.api.resource_reference) = {
3045      type: "vmmigration.googleapis.com/Group"
3046    }
3047  ];
3048
3049  // Optional. A request ID to identify requests. Specify a unique request ID
3050  // so that if you must retry your request, the server will know to ignore
3051  // the request if it has already been completed. The server will guarantee
3052  // that for at least 60 minutes after the first request.
3053  //
3054  // For example, consider a situation where you make an initial request and t
3055  // he request times out. If you make the request again with the same request
3056  // ID, the server can check if original operation with the same request ID
3057  // was received, and if so, will ignore the second request. This prevents
3058  // clients from accidentally creating duplicate commitments.
3059  //
3060  // The request ID must be a valid UUID with the exception that zero UUID is
3061  // not supported (00000000-0000-0000-0000-000000000000).
3062  string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
3063}
3064
3065// Request message for 'AddGroupMigration' request.
3066message AddGroupMigrationRequest {
3067  // Required. The full path name of the Group to add to.
3068  string group = 1 [
3069    (google.api.field_behavior) = REQUIRED,
3070    (google.api.resource_reference) = {
3071      type: "vmmigration.googleapis.com/Group"
3072    }
3073  ];
3074
3075  // The full path name of the MigratingVm to add.
3076  string migrating_vm = 2 [(google.api.resource_reference) = {
3077    type: "vmmigration.googleapis.com/MigratingVm"
3078  }];
3079}
3080
3081// Response message for 'AddGroupMigration' request.
3082message AddGroupMigrationResponse {}
3083
3084// Request message for 'RemoveMigration' request.
3085message RemoveGroupMigrationRequest {
3086  // Required. The name of the Group.
3087  string group = 1 [
3088    (google.api.field_behavior) = REQUIRED,
3089    (google.api.resource_reference) = {
3090      type: "vmmigration.googleapis.com/Group"
3091    }
3092  ];
3093
3094  // The MigratingVm to remove.
3095  string migrating_vm = 2 [(google.api.resource_reference) = {
3096    type: "vmmigration.googleapis.com/MigratingVm"
3097  }];
3098}
3099
3100// Response message for 'RemoveMigration' request.
3101message RemoveGroupMigrationResponse {}
3102
3103// Request message for 'CreateCutoverJob' request.
3104message CreateCutoverJobRequest {
3105  // Required. The Cutover's parent.
3106  string parent = 1 [
3107    (google.api.field_behavior) = REQUIRED,
3108    (google.api.resource_reference) = {
3109      child_type: "vmmigration.googleapis.com/CutoverJob"
3110    }
3111  ];
3112
3113  // Required. The cutover job identifier.
3114  string cutover_job_id = 2 [(google.api.field_behavior) = REQUIRED];
3115
3116  // Required. The cutover request body.
3117  CutoverJob cutover_job = 3 [(google.api.field_behavior) = REQUIRED];
3118
3119  // A request ID to identify requests. Specify a unique request ID
3120  // so that if you must retry your request, the server will know to ignore
3121  // the request if it has already been completed. The server will guarantee
3122  // that for at least 60 minutes since the first request.
3123  //
3124  // For example, consider a situation where you make an initial request and t
3125  // he request times out. If you make the request again with the same request
3126  // ID, the server can check if original operation with the same request ID
3127  // was received, and if so, will ignore the second request. This prevents
3128  // clients from accidentally creating duplicate commitments.
3129  //
3130  // The request ID must be a valid UUID with the exception that zero UUID is
3131  // not supported (00000000-0000-0000-0000-000000000000).
3132  string request_id = 4;
3133}
3134
3135// Request message for 'CancelCutoverJob' request.
3136message CancelCutoverJobRequest {
3137  // Required. The cutover job id
3138  string name = 1 [
3139    (google.api.field_behavior) = REQUIRED,
3140    (google.api.resource_reference) = {
3141      type: "vmmigration.googleapis.com/CutoverJob"
3142    }
3143  ];
3144}
3145
3146// Response message for 'CancelCutoverJob' request.
3147message CancelCutoverJobResponse {}
3148
3149// Request message for 'ListCutoverJobsRequest' request.
3150message ListCutoverJobsRequest {
3151  // Required. The parent, which owns this collection of migrating VMs.
3152  string parent = 1 [
3153    (google.api.field_behavior) = REQUIRED,
3154    (google.api.resource_reference) = {
3155      child_type: "vmmigration.googleapis.com/CutoverJob"
3156    }
3157  ];
3158
3159  // Optional. The maximum number of cutover jobs to return. The service may
3160  // return fewer than this value. If unspecified, at most 500 cutover jobs will
3161  // be returned. The maximum value is 1000; values above 1000 will be coerced
3162  // to 1000.
3163  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
3164
3165  // Required. A page token, received from a previous `ListCutoverJobs` call.
3166  // Provide this to retrieve the subsequent page.
3167  //
3168  // When paginating, all other parameters provided to `ListCutoverJobs` must
3169  // match the call that provided the page token.
3170  string page_token = 3 [(google.api.field_behavior) = REQUIRED];
3171
3172  // Optional. The filter request.
3173  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
3174
3175  // Optional. the order by fields for the result.
3176  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
3177}
3178
3179// Response message for 'ListCutoverJobs' request.
3180message ListCutoverJobsResponse {
3181  // Output only. The list of cutover jobs response.
3182  repeated CutoverJob cutover_jobs = 1
3183      [(google.api.field_behavior) = OUTPUT_ONLY];
3184
3185  // Output only. A token, which can be sent as `page_token` to retrieve the
3186  // next page. If this field is omitted, there are no subsequent pages.
3187  string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
3188
3189  // Output only. Locations that could not be reached.
3190  repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
3191}
3192
3193// Request message for 'GetCutoverJob' request.
3194message GetCutoverJobRequest {
3195  // Required. The name of the CutoverJob.
3196  string name = 1 [
3197    (google.api.field_behavior) = REQUIRED,
3198    (google.api.resource_reference) = {
3199      type: "vmmigration.googleapis.com/CutoverJob"
3200    }
3201  ];
3202}
3203
3204// Represents the metadata of the long-running operation.
3205message OperationMetadata {
3206  // Output only. The time the operation was created.
3207  google.protobuf.Timestamp create_time = 1
3208      [(google.api.field_behavior) = OUTPUT_ONLY];
3209
3210  // Output only. The time the operation finished running.
3211  google.protobuf.Timestamp end_time = 2
3212      [(google.api.field_behavior) = OUTPUT_ONLY];
3213
3214  // Output only. Server-defined resource path for the target of the operation.
3215  string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
3216
3217  // Output only. Name of the verb executed by the operation.
3218  string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
3219
3220  // Output only. Human-readable status of the operation, if any.
3221  string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
3222
3223  // Output only. Identifies whether the user has requested cancellation
3224  // of the operation. Operations that have successfully been cancelled
3225  // have [Operation.error][] value with a
3226  // [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to
3227  // `Code.CANCELLED`.
3228  bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
3229
3230  // Output only. API version used to start the operation.
3231  string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
3232}
3233
3234// Represents migration resource error information that can be used with
3235// google.rpc.Status message. MigrationError is used to present the user with
3236// error information in migration operations.
3237message MigrationError {
3238  // Represents resource error codes.
3239  enum ErrorCode {
3240    // Default value. This value is not used.
3241    ERROR_CODE_UNSPECIFIED = 0;
3242
3243    // Migrate for Compute encountered an unknown error.
3244    UNKNOWN_ERROR = 1;
3245
3246    // Migrate for Compute encountered an error while validating replication
3247    // source health.
3248    SOURCE_VALIDATION_ERROR = 2;
3249
3250    // Migrate for Compute encountered an error during source data operation.
3251    SOURCE_REPLICATION_ERROR = 3;
3252
3253    // Migrate for Compute encountered an error during target data operation.
3254    TARGET_REPLICATION_ERROR = 4;
3255
3256    // Migrate for Compute encountered an error during OS adaptation.
3257    OS_ADAPTATION_ERROR = 5;
3258
3259    // Migrate for Compute encountered an error in clone operation.
3260    CLONE_ERROR = 6;
3261
3262    // Migrate for Compute encountered an error in cutover operation.
3263    CUTOVER_ERROR = 7;
3264
3265    // Migrate for Compute encountered an error during utilization report
3266    // creation.
3267    UTILIZATION_REPORT_ERROR = 8;
3268
3269    // Migrate for Compute encountered an error during appliance upgrade.
3270    APPLIANCE_UPGRADE_ERROR = 9;
3271  }
3272
3273  // Output only. The error code.
3274  ErrorCode code = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
3275
3276  // Output only. The localized error message.
3277  google.rpc.LocalizedMessage error_message = 2
3278      [(google.api.field_behavior) = OUTPUT_ONLY];
3279
3280  // Output only. Suggested action for solving the error.
3281  google.rpc.LocalizedMessage action_item = 3
3282      [(google.api.field_behavior) = OUTPUT_ONLY];
3283
3284  // Output only. URL(s) pointing to additional information on handling the
3285  // current error.
3286  repeated google.rpc.Help.Link help_links = 4
3287      [(google.api.field_behavior) = OUTPUT_ONLY];
3288
3289  // Output only. The time the error occurred.
3290  google.protobuf.Timestamp error_time = 5
3291      [(google.api.field_behavior) = OUTPUT_ONLY];
3292}
3293
3294// Represent the source AWS VM details.
3295message AwsSourceVmDetails {
3296  // Possible values for AWS VM firmware.
3297  enum Firmware {
3298    // The firmware is unknown.
3299    FIRMWARE_UNSPECIFIED = 0;
3300
3301    // The firmware is EFI.
3302    EFI = 1;
3303
3304    // The firmware is BIOS.
3305    BIOS = 2;
3306  }
3307
3308  // The firmware type of the source VM.
3309  Firmware firmware = 1;
3310
3311  // The total size of the disks being migrated in bytes.
3312  int64 committed_storage_bytes = 2;
3313}
3314
3315// Request message for 'LisReplicationCyclesRequest' request.
3316message ListReplicationCyclesRequest {
3317  // Required. The parent, which owns this collection of ReplicationCycles.
3318  string parent = 1 [
3319    (google.api.field_behavior) = REQUIRED,
3320    (google.api.resource_reference) = {
3321      child_type: "vmmigration.googleapis.com/ReplicationCycle"
3322    }
3323  ];
3324
3325  // Optional. The maximum number of replication cycles to return. The service
3326  // may return fewer than this value. If unspecified, at most 100 migrating VMs
3327  // will be returned. The maximum value is 100; values above 100 will be
3328  // coerced to 100.
3329  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
3330
3331  // Required. A page token, received from a previous `ListReplicationCycles`
3332  // call. Provide this to retrieve the subsequent page.
3333  //
3334  // When paginating, all other parameters provided to `ListReplicationCycles`
3335  // must match the call that provided the page token.
3336  string page_token = 3 [(google.api.field_behavior) = REQUIRED];
3337
3338  // Optional. The filter request.
3339  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
3340
3341  // Optional. the order by fields for the result.
3342  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
3343}
3344
3345// Response message for 'ListReplicationCycles' request.
3346message ListReplicationCyclesResponse {
3347  // Output only. The list of replication cycles response.
3348  repeated ReplicationCycle replication_cycles = 1
3349      [(google.api.field_behavior) = OUTPUT_ONLY];
3350
3351  // Output only. A token, which can be sent as `page_token` to retrieve the
3352  // next page. If this field is omitted, there are no subsequent pages.
3353  string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
3354
3355  // Output only. Locations that could not be reached.
3356  repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
3357}
3358
3359// Request message for 'GetReplicationCycle' request.
3360message GetReplicationCycleRequest {
3361  // Required. The name of the ReplicationCycle.
3362  string name = 1 [
3363    (google.api.field_behavior) = REQUIRED,
3364    (google.api.resource_reference) = {
3365      type: "vmmigration.googleapis.com/ReplicationCycle"
3366    }
3367  ];
3368}
3369