vmmigration.proto 103 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901
  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. syntax = "proto3";
  15. package google.cloud.vmmigration.v1;
  16. import "google/api/annotations.proto";
  17. import "google/api/client.proto";
  18. import "google/api/field_behavior.proto";
  19. import "google/api/resource.proto";
  20. import "google/longrunning/operations.proto";
  21. import "google/protobuf/duration.proto";
  22. import "google/protobuf/field_mask.proto";
  23. import "google/protobuf/timestamp.proto";
  24. import "google/rpc/error_details.proto";
  25. import "google/rpc/status.proto";
  26. option csharp_namespace = "Google.Cloud.VMMigration.V1";
  27. option go_package = "google.golang.org/genproto/googleapis/cloud/vmmigration/v1;vmmigration";
  28. option java_multiple_files = true;
  29. option java_outer_classname = "VmMigrationProto";
  30. option java_package = "com.google.cloud.vmmigration.v1";
  31. option php_namespace = "Google\\Cloud\\VMMigration\\V1";
  32. option ruby_package = "Google::Cloud::VMMigration::V1";
  33. // VM Migration Service
  34. service VmMigration {
  35. option (google.api.default_host) = "vmmigration.googleapis.com";
  36. option (google.api.oauth_scopes) =
  37. "https://www.googleapis.com/auth/cloud-platform";
  38. // Lists Sources in a given project and location.
  39. rpc ListSources(ListSourcesRequest) returns (ListSourcesResponse) {
  40. option (google.api.http) = {
  41. get: "/v1/{parent=projects/*/locations/*}/sources"
  42. };
  43. option (google.api.method_signature) = "parent";
  44. }
  45. // Gets details of a single Source.
  46. rpc GetSource(GetSourceRequest) returns (Source) {
  47. option (google.api.http) = {
  48. get: "/v1/{name=projects/*/locations/*/sources/*}"
  49. };
  50. option (google.api.method_signature) = "name";
  51. }
  52. // Creates a new Source in a given project and location.
  53. rpc CreateSource(CreateSourceRequest) returns (google.longrunning.Operation) {
  54. option (google.api.http) = {
  55. post: "/v1/{parent=projects/*/locations/*}/sources"
  56. body: "source"
  57. };
  58. option (google.api.method_signature) = "parent,source,source_id";
  59. option (google.longrunning.operation_info) = {
  60. response_type: "Source"
  61. metadata_type: "OperationMetadata"
  62. };
  63. }
  64. // Updates the parameters of a single Source.
  65. rpc UpdateSource(UpdateSourceRequest) returns (google.longrunning.Operation) {
  66. option (google.api.http) = {
  67. patch: "/v1/{source.name=projects/*/locations/*/sources/*}"
  68. body: "source"
  69. };
  70. option (google.api.method_signature) = "source,update_mask";
  71. option (google.longrunning.operation_info) = {
  72. response_type: "Source"
  73. metadata_type: "OperationMetadata"
  74. };
  75. }
  76. // Deletes a single Source.
  77. rpc DeleteSource(DeleteSourceRequest) returns (google.longrunning.Operation) {
  78. option (google.api.http) = {
  79. delete: "/v1/{name=projects/*/locations/*/sources/*}"
  80. };
  81. option (google.api.method_signature) = "name";
  82. option (google.longrunning.operation_info) = {
  83. response_type: "google.protobuf.Empty"
  84. metadata_type: "OperationMetadata"
  85. };
  86. }
  87. // List remote source's inventory of VMs.
  88. // The remote source is the onprem vCenter (remote in the sense it's not in
  89. // Compute Engine). The inventory describes the list of existing VMs in that
  90. // source. Note that this operation lists the VMs on the remote source, as
  91. // opposed to listing the MigratingVms resources in the vmmigration service.
  92. rpc FetchInventory(FetchInventoryRequest) returns (FetchInventoryResponse) {
  93. option (google.api.http) = {
  94. get: "/v1/{source=projects/*/locations/*/sources/*}:fetchInventory"
  95. };
  96. option (google.api.method_signature) = "source";
  97. }
  98. // Lists Utilization Reports of the given Source.
  99. rpc ListUtilizationReports(ListUtilizationReportsRequest)
  100. returns (ListUtilizationReportsResponse) {
  101. option (google.api.http) = {
  102. get: "/v1/{parent=projects/*/locations/*/sources/*}/utilizationReports"
  103. };
  104. option (google.api.method_signature) = "parent";
  105. }
  106. // Gets a single Utilization Report.
  107. rpc GetUtilizationReport(GetUtilizationReportRequest)
  108. returns (UtilizationReport) {
  109. option (google.api.http) = {
  110. get: "/v1/{name=projects/*/locations/*/sources/*/utilizationReports/*}"
  111. };
  112. option (google.api.method_signature) = "name";
  113. }
  114. // Creates a new UtilizationReport.
  115. rpc CreateUtilizationReport(CreateUtilizationReportRequest)
  116. returns (google.longrunning.Operation) {
  117. option (google.api.http) = {
  118. post: "/v1/{parent=projects/*/locations/*/sources/*}/utilizationReports"
  119. body: "utilization_report"
  120. };
  121. option (google.api.method_signature) =
  122. "parent,utilization_report,utilization_report_id";
  123. option (google.longrunning.operation_info) = {
  124. response_type: "UtilizationReport"
  125. metadata_type: "OperationMetadata"
  126. };
  127. }
  128. // Deletes a single Utilization Report.
  129. rpc DeleteUtilizationReport(DeleteUtilizationReportRequest)
  130. returns (google.longrunning.Operation) {
  131. option (google.api.http) = {
  132. delete: "/v1/{name=projects/*/locations/*/sources/*/utilizationReports/*}"
  133. };
  134. option (google.api.method_signature) = "name";
  135. option (google.longrunning.operation_info) = {
  136. response_type: "google.protobuf.Empty"
  137. metadata_type: "OperationMetadata"
  138. };
  139. }
  140. // Lists DatacenterConnectors in a given Source.
  141. rpc ListDatacenterConnectors(ListDatacenterConnectorsRequest)
  142. returns (ListDatacenterConnectorsResponse) {
  143. option (google.api.http) = {
  144. get: "/v1/{parent=projects/*/locations/*/sources/*}/datacenterConnectors"
  145. };
  146. option (google.api.method_signature) = "parent";
  147. }
  148. // Gets details of a single DatacenterConnector.
  149. rpc GetDatacenterConnector(GetDatacenterConnectorRequest)
  150. returns (DatacenterConnector) {
  151. option (google.api.http) = {
  152. get: "/v1/{name=projects/*/locations/*/sources/*/datacenterConnectors/*}"
  153. };
  154. option (google.api.method_signature) = "name";
  155. }
  156. // Creates a new DatacenterConnector in a given Source.
  157. rpc CreateDatacenterConnector(CreateDatacenterConnectorRequest)
  158. returns (google.longrunning.Operation) {
  159. option (google.api.http) = {
  160. post: "/v1/{parent=projects/*/locations/*/sources/*}/datacenterConnectors"
  161. body: "datacenter_connector"
  162. };
  163. option (google.api.method_signature) =
  164. "parent,datacenter_connector,datacenter_connector_id";
  165. option (google.longrunning.operation_info) = {
  166. response_type: "DatacenterConnector"
  167. metadata_type: "OperationMetadata"
  168. };
  169. }
  170. // Deletes a single DatacenterConnector.
  171. rpc DeleteDatacenterConnector(DeleteDatacenterConnectorRequest)
  172. returns (google.longrunning.Operation) {
  173. option (google.api.http) = {
  174. delete: "/v1/{name=projects/*/locations/*/sources/*/datacenterConnectors/*}"
  175. };
  176. option (google.api.method_signature) = "name";
  177. option (google.longrunning.operation_info) = {
  178. response_type: "google.protobuf.Empty"
  179. metadata_type: "OperationMetadata"
  180. };
  181. }
  182. // Upgrades the appliance relate to this DatacenterConnector to the in-place
  183. // updateable version.
  184. rpc UpgradeAppliance(UpgradeApplianceRequest)
  185. returns (google.longrunning.Operation) {
  186. option (google.api.http) = {
  187. post: "/v1/{datacenter_connector=projects/*/locations/*/sources/*/datacenterConnectors/*}:upgradeAppliance"
  188. body: "*"
  189. };
  190. option (google.longrunning.operation_info) = {
  191. response_type: "UpgradeApplianceResponse"
  192. metadata_type: "OperationMetadata"
  193. };
  194. }
  195. // Creates a new MigratingVm in a given Source.
  196. rpc CreateMigratingVm(CreateMigratingVmRequest)
  197. returns (google.longrunning.Operation) {
  198. option (google.api.http) = {
  199. post: "/v1/{parent=projects/*/locations/*/sources/*}/migratingVms"
  200. body: "migrating_vm"
  201. };
  202. option (google.api.method_signature) =
  203. "parent,migrating_vm,migrating_vm_id";
  204. option (google.longrunning.operation_info) = {
  205. response_type: "MigratingVm"
  206. metadata_type: "OperationMetadata"
  207. };
  208. }
  209. // Lists MigratingVms in a given Source.
  210. rpc ListMigratingVms(ListMigratingVmsRequest)
  211. returns (ListMigratingVmsResponse) {
  212. option (google.api.http) = {
  213. get: "/v1/{parent=projects/*/locations/*/sources/*}/migratingVms"
  214. };
  215. option (google.api.method_signature) = "parent";
  216. }
  217. // Gets details of a single MigratingVm.
  218. rpc GetMigratingVm(GetMigratingVmRequest) returns (MigratingVm) {
  219. option (google.api.http) = {
  220. get: "/v1/{name=projects/*/locations/*/sources/*/migratingVms/*}"
  221. };
  222. option (google.api.method_signature) = "name";
  223. }
  224. // Updates the parameters of a single MigratingVm.
  225. rpc UpdateMigratingVm(UpdateMigratingVmRequest)
  226. returns (google.longrunning.Operation) {
  227. option (google.api.http) = {
  228. patch: "/v1/{migrating_vm.name=projects/*/locations/*/sources/*/migratingVms/*}"
  229. body: "migrating_vm"
  230. };
  231. option (google.api.method_signature) = "migrating_vm,update_mask";
  232. option (google.longrunning.operation_info) = {
  233. response_type: "MigratingVm"
  234. metadata_type: "OperationMetadata"
  235. };
  236. }
  237. // Deletes a single MigratingVm.
  238. rpc DeleteMigratingVm(DeleteMigratingVmRequest)
  239. returns (google.longrunning.Operation) {
  240. option (google.api.http) = {
  241. delete: "/v1/{name=projects/*/locations/*/sources/*/migratingVms/*}"
  242. };
  243. option (google.api.method_signature) = "name";
  244. option (google.longrunning.operation_info) = {
  245. response_type: "google.protobuf.Empty"
  246. metadata_type: "OperationMetadata"
  247. };
  248. }
  249. // Starts migration for a VM. Starts the process of uploading
  250. // data and creating snapshots, in replication cycles scheduled by the policy.
  251. rpc StartMigration(StartMigrationRequest)
  252. returns (google.longrunning.Operation) {
  253. option (google.api.http) = {
  254. post: "/v1/{migrating_vm=projects/*/locations/*/sources/*/migratingVms/*}:startMigration"
  255. body: "*"
  256. };
  257. option (google.api.method_signature) = "migrating_vm";
  258. option (google.longrunning.operation_info) = {
  259. response_type: "StartMigrationResponse"
  260. metadata_type: "OperationMetadata"
  261. };
  262. }
  263. // Resumes a migration for a VM. When called on a paused migration, will start
  264. // the process of uploading data and creating snapshots; when called on a
  265. // completed cut-over migration, will update the migration to active state and
  266. // start the process of uploading data and creating snapshots.
  267. rpc ResumeMigration(ResumeMigrationRequest)
  268. returns (google.longrunning.Operation) {
  269. option (google.api.http) = {
  270. post: "/v1/{migrating_vm=projects/*/locations/*/sources/*/migratingVms/*}:resumeMigration"
  271. body: "*"
  272. };
  273. option (google.longrunning.operation_info) = {
  274. response_type: "ResumeMigrationResponse"
  275. metadata_type: "OperationMetadata"
  276. };
  277. }
  278. // Pauses a migration for a VM. If cycle tasks are running they will be
  279. // cancelled, preserving source task data. Further replication cycles will not
  280. // be triggered while the VM is paused.
  281. rpc PauseMigration(PauseMigrationRequest)
  282. returns (google.longrunning.Operation) {
  283. option (google.api.http) = {
  284. post: "/v1/{migrating_vm=projects/*/locations/*/sources/*/migratingVms/*}:pauseMigration"
  285. body: "*"
  286. };
  287. option (google.longrunning.operation_info) = {
  288. response_type: "PauseMigrationResponse"
  289. metadata_type: "OperationMetadata"
  290. };
  291. }
  292. // Marks a migration as completed, deleting migration resources that are no
  293. // longer being used. Only applicable after cutover is done.
  294. rpc FinalizeMigration(FinalizeMigrationRequest)
  295. returns (google.longrunning.Operation) {
  296. option (google.api.http) = {
  297. post: "/v1/{migrating_vm=projects/*/locations/*/sources/*/migratingVms/*}:finalizeMigration"
  298. body: "*"
  299. };
  300. option (google.api.method_signature) = "migrating_vm";
  301. option (google.longrunning.operation_info) = {
  302. response_type: "FinalizeMigrationResponse"
  303. metadata_type: "OperationMetadata"
  304. };
  305. }
  306. // Initiates a Clone of a specific migrating VM.
  307. rpc CreateCloneJob(CreateCloneJobRequest)
  308. returns (google.longrunning.Operation) {
  309. option (google.api.http) = {
  310. post: "/v1/{parent=projects/*/locations/*/sources/*/migratingVms/*}/cloneJobs"
  311. body: "clone_job"
  312. };
  313. option (google.api.method_signature) = "parent,clone_job,clone_job_id";
  314. option (google.longrunning.operation_info) = {
  315. response_type: "CloneJob"
  316. metadata_type: "OperationMetadata"
  317. };
  318. }
  319. // Initiates the cancellation of a running clone job.
  320. rpc CancelCloneJob(CancelCloneJobRequest)
  321. returns (google.longrunning.Operation) {
  322. option (google.api.http) = {
  323. post: "/v1/{name=projects/*/locations/*/sources/*/migratingVms/*/cloneJobs/*}:cancel"
  324. body: "*"
  325. };
  326. option (google.api.method_signature) = "name";
  327. option (google.longrunning.operation_info) = {
  328. response_type: "CancelCloneJobResponse"
  329. metadata_type: "OperationMetadata"
  330. };
  331. }
  332. // Lists CloneJobs of a given migrating VM.
  333. rpc ListCloneJobs(ListCloneJobsRequest) returns (ListCloneJobsResponse) {
  334. option (google.api.http) = {
  335. get: "/v1/{parent=projects/*/locations/*/sources/*/migratingVms/*}/cloneJobs"
  336. };
  337. option (google.api.method_signature) = "parent";
  338. }
  339. // Gets details of a single CloneJob.
  340. rpc GetCloneJob(GetCloneJobRequest) returns (CloneJob) {
  341. option (google.api.http) = {
  342. get: "/v1/{name=projects/*/locations/*/sources/*/migratingVms/*/cloneJobs/*}"
  343. };
  344. option (google.api.method_signature) = "name";
  345. }
  346. // Initiates a Cutover of a specific migrating VM.
  347. // The returned LRO is completed when the cutover job resource is created
  348. // and the job is initiated.
  349. rpc CreateCutoverJob(CreateCutoverJobRequest)
  350. returns (google.longrunning.Operation) {
  351. option (google.api.http) = {
  352. post: "/v1/{parent=projects/*/locations/*/sources/*/migratingVms/*}/cutoverJobs"
  353. body: "cutover_job"
  354. };
  355. option (google.api.method_signature) = "parent,cutover_job,cutover_job_id";
  356. option (google.longrunning.operation_info) = {
  357. response_type: "CutoverJob"
  358. metadata_type: "OperationMetadata"
  359. };
  360. }
  361. // Initiates the cancellation of a running cutover job.
  362. rpc CancelCutoverJob(CancelCutoverJobRequest)
  363. returns (google.longrunning.Operation) {
  364. option (google.api.http) = {
  365. post: "/v1/{name=projects/*/locations/*/sources/*/migratingVms/*/cutoverJobs/*}:cancel"
  366. body: "*"
  367. };
  368. option (google.api.method_signature) = "name";
  369. option (google.longrunning.operation_info) = {
  370. response_type: "CancelCutoverJobResponse"
  371. metadata_type: "OperationMetadata"
  372. };
  373. }
  374. // Lists CutoverJobs of a given migrating VM.
  375. rpc ListCutoverJobs(ListCutoverJobsRequest)
  376. returns (ListCutoverJobsResponse) {
  377. option (google.api.http) = {
  378. get: "/v1/{parent=projects/*/locations/*/sources/*/migratingVms/*}/cutoverJobs"
  379. };
  380. option (google.api.method_signature) = "parent";
  381. }
  382. // Gets details of a single CutoverJob.
  383. rpc GetCutoverJob(GetCutoverJobRequest) returns (CutoverJob) {
  384. option (google.api.http) = {
  385. get: "/v1/{name=projects/*/locations/*/sources/*/migratingVms/*/cutoverJobs/*}"
  386. };
  387. option (google.api.method_signature) = "name";
  388. }
  389. // Lists Groups in a given project and location.
  390. rpc ListGroups(ListGroupsRequest) returns (ListGroupsResponse) {
  391. option (google.api.http) = {
  392. get: "/v1/{parent=projects/*/locations/*}/groups"
  393. };
  394. option (google.api.method_signature) = "parent";
  395. }
  396. // Gets details of a single Group.
  397. rpc GetGroup(GetGroupRequest) returns (Group) {
  398. option (google.api.http) = {
  399. get: "/v1/{name=projects/*/locations/*/groups/*}"
  400. };
  401. option (google.api.method_signature) = "name";
  402. }
  403. // Creates a new Group in a given project and location.
  404. rpc CreateGroup(CreateGroupRequest) returns (google.longrunning.Operation) {
  405. option (google.api.http) = {
  406. post: "/v1/{parent=projects/*/locations/*}/groups"
  407. body: "group"
  408. };
  409. option (google.api.method_signature) = "parent,group,group_id";
  410. option (google.longrunning.operation_info) = {
  411. response_type: "Group"
  412. metadata_type: "OperationMetadata"
  413. };
  414. }
  415. // Updates the parameters of a single Group.
  416. rpc UpdateGroup(UpdateGroupRequest) returns (google.longrunning.Operation) {
  417. option (google.api.http) = {
  418. patch: "/v1/{group.name=projects/*/locations/*/groups/*}"
  419. body: "group"
  420. };
  421. option (google.api.method_signature) = "group,update_mask";
  422. option (google.longrunning.operation_info) = {
  423. response_type: "Group"
  424. metadata_type: "OperationMetadata"
  425. };
  426. }
  427. // Deletes a single Group.
  428. rpc DeleteGroup(DeleteGroupRequest) returns (google.longrunning.Operation) {
  429. option (google.api.http) = {
  430. delete: "/v1/{name=projects/*/locations/*/groups/*}"
  431. };
  432. option (google.api.method_signature) = "name";
  433. option (google.longrunning.operation_info) = {
  434. response_type: "google.protobuf.Empty"
  435. metadata_type: "OperationMetadata"
  436. };
  437. }
  438. // Adds a MigratingVm to a Group.
  439. rpc AddGroupMigration(AddGroupMigrationRequest)
  440. returns (google.longrunning.Operation) {
  441. option (google.api.http) = {
  442. post: "/v1/{group=projects/*/locations/*/groups/*}:addGroupMigration"
  443. body: "*"
  444. };
  445. option (google.api.method_signature) = "group";
  446. option (google.longrunning.operation_info) = {
  447. response_type: "AddGroupMigrationResponse"
  448. metadata_type: "OperationMetadata"
  449. };
  450. }
  451. // Removes a MigratingVm from a Group.
  452. rpc RemoveGroupMigration(RemoveGroupMigrationRequest)
  453. returns (google.longrunning.Operation) {
  454. option (google.api.http) = {
  455. post: "/v1/{group=projects/*/locations/*/groups/*}:removeGroupMigration"
  456. body: "*"
  457. };
  458. option (google.api.method_signature) = "group";
  459. option (google.longrunning.operation_info) = {
  460. response_type: "RemoveGroupMigrationResponse"
  461. metadata_type: "OperationMetadata"
  462. };
  463. }
  464. // Lists TargetProjects in a given project.
  465. //
  466. // NOTE: TargetProject is a global resource; hence the only supported value
  467. // for location is `global`.
  468. rpc ListTargetProjects(ListTargetProjectsRequest)
  469. returns (ListTargetProjectsResponse) {
  470. option (google.api.http) = {
  471. get: "/v1/{parent=projects/*/locations/*}/targetProjects"
  472. };
  473. option (google.api.method_signature) = "parent";
  474. }
  475. // Gets details of a single TargetProject.
  476. //
  477. // NOTE: TargetProject is a global resource; hence the only supported value
  478. // for location is `global`.
  479. rpc GetTargetProject(GetTargetProjectRequest) returns (TargetProject) {
  480. option (google.api.http) = {
  481. get: "/v1/{name=projects/*/locations/*/targetProjects/*}"
  482. };
  483. option (google.api.method_signature) = "name";
  484. }
  485. // Creates a new TargetProject in a given project.
  486. //
  487. // NOTE: TargetProject is a global resource; hence the only supported value
  488. // for location is `global`.
  489. rpc CreateTargetProject(CreateTargetProjectRequest)
  490. returns (google.longrunning.Operation) {
  491. option (google.api.http) = {
  492. post: "/v1/{parent=projects/*/locations/*}/targetProjects"
  493. body: "target_project"
  494. };
  495. option (google.api.method_signature) =
  496. "parent,target_project,target_project_id";
  497. option (google.longrunning.operation_info) = {
  498. response_type: "TargetProject"
  499. metadata_type: "OperationMetadata"
  500. };
  501. }
  502. // Updates the parameters of a single TargetProject.
  503. //
  504. // NOTE: TargetProject is a global resource; hence the only supported value
  505. // for location is `global`.
  506. rpc UpdateTargetProject(UpdateTargetProjectRequest)
  507. returns (google.longrunning.Operation) {
  508. option (google.api.http) = {
  509. patch: "/v1/{target_project.name=projects/*/locations/*/targetProjects/*}"
  510. body: "target_project"
  511. };
  512. option (google.api.method_signature) = "target_project,update_mask";
  513. option (google.longrunning.operation_info) = {
  514. response_type: "TargetProject"
  515. metadata_type: "OperationMetadata"
  516. };
  517. }
  518. // Deletes a single TargetProject.
  519. //
  520. // NOTE: TargetProject is a global resource; hence the only supported value
  521. // for location is `global`.
  522. rpc DeleteTargetProject(DeleteTargetProjectRequest)
  523. returns (google.longrunning.Operation) {
  524. option (google.api.http) = {
  525. delete: "/v1/{name=projects/*/locations/*/targetProjects/*}"
  526. };
  527. option (google.api.method_signature) = "name";
  528. option (google.longrunning.operation_info) = {
  529. response_type: "google.protobuf.Empty"
  530. metadata_type: "OperationMetadata"
  531. };
  532. }
  533. }
  534. // Controls the level of details of a Utilization Report.
  535. enum UtilizationReportView {
  536. // The default / unset value.
  537. // The API will default to FULL on single report request and BASIC for
  538. // multiple reports request.
  539. UTILIZATION_REPORT_VIEW_UNSPECIFIED = 0;
  540. // Get the report metadata, without the list of VMs and their utilization
  541. // info.
  542. BASIC = 1;
  543. // Include everything.
  544. FULL = 2;
  545. }
  546. // Controls the level of details of a Migrating VM.
  547. enum MigratingVmView {
  548. // View is unspecified. The API will fallback to the default value.
  549. MIGRATING_VM_VIEW_UNSPECIFIED = 0;
  550. // Get the migrating VM basic details.
  551. // The basic details do not include the recent clone jobs and recent cutover
  552. // jobs lists.
  553. MIGRATING_VM_VIEW_BASIC = 1;
  554. // Include everything.
  555. MIGRATING_VM_VIEW_FULL = 2;
  556. }
  557. // Types of disks supported for Compute Engine VM.
  558. enum ComputeEngineDiskType {
  559. // An unspecified disk type. Will be used as STANDARD.
  560. COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED = 0;
  561. // A Standard disk type.
  562. COMPUTE_ENGINE_DISK_TYPE_STANDARD = 1;
  563. // SSD hard disk type.
  564. COMPUTE_ENGINE_DISK_TYPE_SSD = 2;
  565. // An alternative to SSD persistent disks that balance performance and
  566. // cost.
  567. COMPUTE_ENGINE_DISK_TYPE_BALANCED = 3;
  568. }
  569. // Types of licenses used in OS adaptation.
  570. enum ComputeEngineLicenseType {
  571. // The license type is the default for the OS.
  572. COMPUTE_ENGINE_LICENSE_TYPE_DEFAULT = 0;
  573. // The license type is Pay As You Go license type.
  574. COMPUTE_ENGINE_LICENSE_TYPE_PAYG = 1;
  575. // The license type is Bring Your Own License type.
  576. COMPUTE_ENGINE_LICENSE_TYPE_BYOL = 2;
  577. }
  578. // Possible values for vm boot option.
  579. enum ComputeEngineBootOption {
  580. // The boot option is unknown.
  581. COMPUTE_ENGINE_BOOT_OPTION_UNSPECIFIED = 0;
  582. // The boot option is EFI.
  583. COMPUTE_ENGINE_BOOT_OPTION_EFI = 1;
  584. // The boot option is BIOS.
  585. COMPUTE_ENGINE_BOOT_OPTION_BIOS = 2;
  586. }
  587. // ReplicationCycle contains information about the current replication cycle
  588. // status.
  589. message ReplicationCycle {
  590. // The time the replication cycle has started.
  591. google.protobuf.Timestamp start_time = 1;
  592. // The current progress in percentage of this cycle.
  593. int32 progress_percent = 5;
  594. }
  595. // ReplicationSync contain information about the last replica sync to the cloud.
  596. message ReplicationSync {
  597. // The most updated snapshot created time in the source that finished
  598. // replication.
  599. google.protobuf.Timestamp last_sync_time = 1;
  600. }
  601. // MigratingVm describes the VM that will be migrated from a Source environment
  602. // and its replication state.
  603. message MigratingVm {
  604. option (google.api.resource) = {
  605. type: "vmmigration.googleapis.com/MigratingVm"
  606. pattern: "projects/{project}/locations/{location}/sources/{source}/migratingVms/{migrating_vm}"
  607. };
  608. // The possible values of the state/health of source VM.
  609. enum State {
  610. // The state was not sampled by the health checks yet.
  611. STATE_UNSPECIFIED = 0;
  612. // The VM in the source is being verified.
  613. PENDING = 1;
  614. // The source VM was verified, and it's ready to start replication.
  615. READY = 2;
  616. // Migration is going through the first sync cycle.
  617. FIRST_SYNC = 3;
  618. // The replication is active, and it's running or scheduled to run.
  619. ACTIVE = 4;
  620. // The source VM is being turned off, and a final replication is currently
  621. // running.
  622. CUTTING_OVER = 7;
  623. // The source VM was stopped and replicated. The replication is currently
  624. // paused.
  625. CUTOVER = 8;
  626. // A cutover job is active and replication cycle is running the final sync.
  627. FINAL_SYNC = 9;
  628. // The replication was paused by the user and no cycles are scheduled to
  629. // run.
  630. PAUSED = 10;
  631. // The migrating VM is being finalized and migration resources are being
  632. // removed.
  633. FINALIZING = 11;
  634. // The replication process is done. The migrating VM is finalized and no
  635. // longer consumes billable resources.
  636. FINALIZED = 12;
  637. // The replication process encountered an unrecoverable error and was
  638. // aborted.
  639. ERROR = 13;
  640. }
  641. // The default configuration of the target VM that will be created in GCP as a
  642. // result of the migration.
  643. oneof target_vm_defaults {
  644. // Details of the target VM in Compute Engine.
  645. ComputeEngineTargetDefaults compute_engine_target_defaults = 26;
  646. }
  647. // Output only. The identifier of the MigratingVm.
  648. string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  649. // The unique ID of the VM in the source.
  650. // The VM's name in vSphere can be changed, so this is not the VM's name but
  651. // rather its moRef id. This id is of the form vm-<num>.
  652. string source_vm_id = 2;
  653. // The display name attached to the MigratingVm by the user.
  654. string display_name = 18;
  655. // The description attached to the migrating VM by the user.
  656. string description = 3;
  657. // The replication schedule policy.
  658. SchedulePolicy policy = 8;
  659. // Output only. The time the migrating VM was created (this refers to this
  660. // resource and not to the time it was installed in the source).
  661. google.protobuf.Timestamp create_time = 9
  662. [(google.api.field_behavior) = OUTPUT_ONLY];
  663. // Output only. The last time the migrating VM resource was updated.
  664. google.protobuf.Timestamp update_time = 10
  665. [(google.api.field_behavior) = OUTPUT_ONLY];
  666. // Output only. The most updated snapshot created time in the source that
  667. // finished replication.
  668. ReplicationSync last_sync = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
  669. // Output only. State of the MigratingVm.
  670. State state = 23 [(google.api.field_behavior) = OUTPUT_ONLY];
  671. // Output only. The last time the migrating VM state was updated.
  672. google.protobuf.Timestamp state_time = 22
  673. [(google.api.field_behavior) = OUTPUT_ONLY];
  674. // Output only. The percentage progress of the current running replication
  675. // cycle.
  676. ReplicationCycle current_sync_info = 13
  677. [(google.api.field_behavior) = OUTPUT_ONLY];
  678. // Output only. The group this migrating vm is included in, if any. The group
  679. // is represented by the full path of the appropriate
  680. // [Group][google.cloud.vmmigration.v1.Group] resource.
  681. string group = 15 [
  682. (google.api.field_behavior) = OUTPUT_ONLY,
  683. (google.api.resource_reference) = {
  684. child_type: "vmmigration.googleapis.com/Group"
  685. }
  686. ];
  687. // The labels of the migrating VM.
  688. map<string, string> labels = 16;
  689. // Output only. The recent [clone jobs][google.cloud.vmmigration.v1.CloneJob]
  690. // performed on the migrating VM. This field holds the vm's last completed
  691. // clone job and the vm's running clone job, if one exists.
  692. // Note: To have this field populated you need to explicitly request it via
  693. // the "view" parameter of the Get/List request.
  694. repeated CloneJob recent_clone_jobs = 17
  695. [(google.api.field_behavior) = OUTPUT_ONLY];
  696. // Output only. Provides details on the state of the Migrating VM in case of
  697. // an error in replication.
  698. google.rpc.Status error = 19 [(google.api.field_behavior) = OUTPUT_ONLY];
  699. // Output only. The recent cutover jobs performed on the migrating VM.
  700. // This field holds the vm's last completed cutover job and the vm's
  701. // running cutover job, if one exists.
  702. // Note: To have this field populated you need to explicitly request it via
  703. // the "view" parameter of the Get/List request.
  704. repeated CutoverJob recent_cutover_jobs = 20
  705. [(google.api.field_behavior) = OUTPUT_ONLY];
  706. }
  707. // CloneJob describes the process of creating a clone of a
  708. // [MigratingVM][google.cloud.vmmigration.v1.MigratingVm] to the
  709. // requested target based on the latest successful uploaded snapshots.
  710. // While the migration cycles of a MigratingVm take place, it is possible to
  711. // verify the uploaded VM can be started in the cloud, by creating a clone. The
  712. // clone can be created without any downtime, and it is created using the latest
  713. // snapshots which are already in the cloud. The cloneJob is only responsible
  714. // for its work, not its products, which means once it is finished, it will
  715. // never touch the instance it created. It will only delete it in case of the
  716. // CloneJob being cancelled or upon failure to clone.
  717. message CloneJob {
  718. option (google.api.resource) = {
  719. type: "vmmigration.googleapis.com/CloneJob"
  720. pattern: "projects/{project}/locations/{location}/sources/{source}/migratingVms/{migrating_vm}/cloneJobs/{clone_job}"
  721. };
  722. // Possible states of the clone job.
  723. enum State {
  724. // The state is unknown. This is used for API compatibility only and is not
  725. // used by the system.
  726. STATE_UNSPECIFIED = 0;
  727. // The clone job has not yet started.
  728. PENDING = 1;
  729. // The clone job is active and running.
  730. ACTIVE = 2;
  731. // The clone job finished with errors.
  732. FAILED = 3;
  733. // The clone job finished successfully.
  734. SUCCEEDED = 4;
  735. // The clone job was cancelled.
  736. CANCELLED = 5;
  737. // The clone job is being cancelled.
  738. CANCELLING = 6;
  739. // OS adaptation is running as part of the clone job to generate license.
  740. ADAPTING_OS = 7;
  741. }
  742. // Details of the VM to create as the target of this clone job.
  743. oneof target_vm_details {
  744. // Output only. Details of the target VM in Compute Engine.
  745. ComputeEngineTargetDetails compute_engine_target_details = 20
  746. [(google.api.field_behavior) = OUTPUT_ONLY];
  747. }
  748. // Output only. The time the clone job was created (as an API call, not when
  749. // it was actually created in the target).
  750. google.protobuf.Timestamp create_time = 1
  751. [(google.api.field_behavior) = OUTPUT_ONLY];
  752. // Output only. The time the clone job was ended.
  753. google.protobuf.Timestamp end_time = 22
  754. [(google.api.field_behavior) = OUTPUT_ONLY];
  755. // Output only. The name of the clone.
  756. string name = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  757. // Output only. State of the clone job.
  758. State state = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
  759. // Output only. The time the state was last updated.
  760. google.protobuf.Timestamp state_time = 14
  761. [(google.api.field_behavior) = OUTPUT_ONLY];
  762. // Output only. Provides details for the errors that led to the Clone Job's
  763. // state.
  764. google.rpc.Status error = 17 [(google.api.field_behavior) = OUTPUT_ONLY];
  765. }
  766. // CutoverJob message describes a cutover of a migrating VM. The CutoverJob is
  767. // the operation of shutting down the VM, creating a snapshot and
  768. // clonning the VM using the replicated snapshot.
  769. message CutoverJob {
  770. option (google.api.resource) = {
  771. type: "vmmigration.googleapis.com/CutoverJob"
  772. pattern: "projects/{project}/locations/{location}/sources/{source}/migratingVms/{migrating_vm}/cutoverJobs/{cutover_job}"
  773. };
  774. // Possible states of the cutover job.
  775. enum State {
  776. // The state is unknown. This is used for API compatibility only and is not
  777. // used by the system.
  778. STATE_UNSPECIFIED = 0;
  779. // The cutover job has not yet started.
  780. PENDING = 1;
  781. // The cutover job finished with errors.
  782. FAILED = 2;
  783. // The cutover job finished successfully.
  784. SUCCEEDED = 3;
  785. // The cutover job was cancelled.
  786. CANCELLED = 4;
  787. // The cutover job is being cancelled.
  788. CANCELLING = 5;
  789. // The cutover job is active and running.
  790. ACTIVE = 6;
  791. // OS adaptation is running as part of the cutover job to generate license.
  792. ADAPTING_OS = 7;
  793. }
  794. // Details of the VM to create as the target of this cutover job.
  795. oneof target_vm_details {
  796. // Output only. Details of the target VM in Compute Engine.
  797. ComputeEngineTargetDetails compute_engine_target_details = 14
  798. [(google.api.field_behavior) = OUTPUT_ONLY];
  799. }
  800. // Output only. The time the cutover job was created (as an API call, not when
  801. // it was actually created in the target).
  802. google.protobuf.Timestamp create_time = 1
  803. [(google.api.field_behavior) = OUTPUT_ONLY];
  804. // Output only. The time the cutover job had finished.
  805. google.protobuf.Timestamp end_time = 16
  806. [(google.api.field_behavior) = OUTPUT_ONLY];
  807. // Output only. The name of the cutover job.
  808. string name = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  809. // Output only. State of the cutover job.
  810. State state = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
  811. // Output only. The time the state was last updated.
  812. google.protobuf.Timestamp state_time = 6
  813. [(google.api.field_behavior) = OUTPUT_ONLY];
  814. // Output only. The current progress in percentage of the cutover job.
  815. int32 progress_percent = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
  816. // Output only. Provides details for the errors that led to the Cutover Job's
  817. // state.
  818. google.rpc.Status error = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
  819. // Output only. A message providing possible extra details about the current
  820. // state.
  821. string state_message = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
  822. }
  823. // Request message for 'CreateCloneJob' request.
  824. message CreateCloneJobRequest {
  825. // Required. The Clone's parent.
  826. string parent = 1 [
  827. (google.api.field_behavior) = REQUIRED,
  828. (google.api.resource_reference) = {
  829. child_type: "vmmigration.googleapis.com/CloneJob"
  830. }
  831. ];
  832. // Required. The clone job identifier.
  833. string clone_job_id = 2 [(google.api.field_behavior) = REQUIRED];
  834. // Required. The clone request body.
  835. CloneJob clone_job = 3 [(google.api.field_behavior) = REQUIRED];
  836. // A request ID to identify requests. Specify a unique request ID
  837. // so that if you must retry your request, the server will know to ignore
  838. // the request if it has already been completed. The server will guarantee
  839. // that for at least 60 minutes since the first request.
  840. //
  841. // For example, consider a situation where you make an initial request and t
  842. // he request times out. If you make the request again with the same request
  843. // ID, the server can check if original operation with the same request ID
  844. // was received, and if so, will ignore the second request. This prevents
  845. // clients from accidentally creating duplicate commitments.
  846. //
  847. // The request ID must be a valid UUID with the exception that zero UUID is
  848. // not supported (00000000-0000-0000-0000-000000000000).
  849. string request_id = 4;
  850. }
  851. // Request message for 'CancelCloneJob' request.
  852. message CancelCloneJobRequest {
  853. // Required. The clone job id
  854. string name = 1 [
  855. (google.api.field_behavior) = REQUIRED,
  856. (google.api.resource_reference) = {
  857. type: "vmmigration.googleapis.com/CloneJob"
  858. }
  859. ];
  860. }
  861. // Response message for 'CancelCloneJob' request.
  862. message CancelCloneJobResponse {}
  863. // Request message for 'ListCloneJobsRequest' request.
  864. message ListCloneJobsRequest {
  865. // Required. The parent, which owns this collection of source VMs.
  866. string parent = 1 [
  867. (google.api.field_behavior) = REQUIRED,
  868. (google.api.resource_reference) = {
  869. child_type: "vmmigration.googleapis.com/CloneJob"
  870. }
  871. ];
  872. // Optional. The maximum number of clone jobs to return. The service may
  873. // return fewer than this value. If unspecified, at most 500 clone jobs will
  874. // be returned. The maximum value is 1000; values above 1000 will be coerced
  875. // to 1000.
  876. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
  877. // Required. A page token, received from a previous `ListCloneJobs` call.
  878. // Provide this to retrieve the subsequent page.
  879. //
  880. // When paginating, all other parameters provided to `ListCloneJobs` must
  881. // match the call that provided the page token.
  882. string page_token = 3 [(google.api.field_behavior) = REQUIRED];
  883. // Optional. The filter request.
  884. string filter = 4 [(google.api.field_behavior) = OPTIONAL];
  885. // Optional. the order by fields for the result.
  886. string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
  887. }
  888. // Response message for 'ListCloneJobs' request.
  889. message ListCloneJobsResponse {
  890. // Output only. The list of clone jobs response.
  891. repeated CloneJob clone_jobs = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  892. // Output only. A token, which can be sent as `page_token` to retrieve the
  893. // next page. If this field is omitted, there are no subsequent pages.
  894. string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
  895. // Output only. Locations that could not be reached.
  896. repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  897. }
  898. // Request message for 'GetCloneJob' request.
  899. message GetCloneJobRequest {
  900. // Required. The name of the CloneJob.
  901. string name = 1 [
  902. (google.api.field_behavior) = REQUIRED,
  903. (google.api.resource_reference) = {
  904. type: "vmmigration.googleapis.com/CloneJob"
  905. }
  906. ];
  907. }
  908. // Source message describes a specific vm migration Source resource. It contains
  909. // the source environment information.
  910. message Source {
  911. option (google.api.resource) = {
  912. type: "vmmigration.googleapis.com/Source"
  913. pattern: "projects/{project}/locations/{location}/sources/{source}"
  914. };
  915. oneof source_details {
  916. // Vmware type source details.
  917. VmwareSourceDetails vmware = 10;
  918. }
  919. // Output only. The Source name.
  920. string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  921. // Output only. The create time timestamp.
  922. google.protobuf.Timestamp create_time = 2
  923. [(google.api.field_behavior) = OUTPUT_ONLY];
  924. // Output only. The update time timestamp.
  925. google.protobuf.Timestamp update_time = 3
  926. [(google.api.field_behavior) = OUTPUT_ONLY];
  927. // The labels of the source.
  928. map<string, string> labels = 4;
  929. // User-provided description of the source.
  930. string description = 6;
  931. }
  932. // VmwareSourceDetails message describes a specific source details for the
  933. // vmware source type.
  934. message VmwareSourceDetails {
  935. // The credentials username.
  936. string username = 1;
  937. // Input only. The credentials password. This is write only and can not be
  938. // read in a GET operation.
  939. string password = 2 [(google.api.field_behavior) = INPUT_ONLY];
  940. // The ip address of the vcenter this Source represents.
  941. string vcenter_ip = 3;
  942. // The thumbprint representing the certificate for the vcenter.
  943. string thumbprint = 4;
  944. }
  945. // DatacenterConnector message describes a connector between the Source and GCP,
  946. // which is installed on a vmware datacenter (an OVA vm installed by the user)
  947. // to connect the Datacenter to GCP and support vm migration data transfer.
  948. message DatacenterConnector {
  949. option (google.api.resource) = {
  950. type: "vmmigration.googleapis.com/DatacenterConnector"
  951. pattern: "projects/{project}/locations/{location}/sources/{source}/datacenterConnectors/{datacenter_connector}"
  952. };
  953. // The possible values of the state.
  954. enum State {
  955. // The state is unknown. This is used for API compatibility only and is not
  956. // used by the system.
  957. STATE_UNSPECIFIED = 0;
  958. // The state was not sampled by the health checks yet.
  959. PENDING = 1;
  960. // The source was sampled by health checks and is not available.
  961. OFFLINE = 2;
  962. // The source is available but might not be usable yet due to unvalidated
  963. // credentials or another reason. The credentials referred to are the ones
  964. // to the Source. The error message will contain further details.
  965. FAILED = 3;
  966. // The source exists and its credentials were verified.
  967. ACTIVE = 4;
  968. }
  969. // Output only. The time the connector was created (as an API call, not when
  970. // it was actually installed).
  971. google.protobuf.Timestamp create_time = 1
  972. [(google.api.field_behavior) = OUTPUT_ONLY];
  973. // Output only. The last time the connector was updated with an API call.
  974. google.protobuf.Timestamp update_time = 2
  975. [(google.api.field_behavior) = OUTPUT_ONLY];
  976. // Output only. The connector's name.
  977. string name = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  978. // Immutable. A unique key for this connector. This key is internal to the OVA
  979. // connector and is supplied with its creation during the registration process
  980. // and can not be modified.
  981. string registration_id = 12 [(google.api.field_behavior) = IMMUTABLE];
  982. // The service account to use in the connector when communicating with the
  983. // cloud.
  984. string service_account = 5;
  985. // The version running in the DatacenterConnector. This is supplied by the OVA
  986. // connector during the registration process and can not be modified.
  987. string version = 6;
  988. // Output only. The communication channel between the datacenter connector and
  989. // GCP.
  990. string bucket = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
  991. // Output only. State of the DatacenterConnector, as determined by the health
  992. // checks.
  993. State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
  994. // Output only. The time the state was last set.
  995. google.protobuf.Timestamp state_time = 8
  996. [(google.api.field_behavior) = OUTPUT_ONLY];
  997. // Output only. Provides details on the state of the Datacenter Connector in
  998. // case of an error.
  999. google.rpc.Status error = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
  1000. // Output only. Appliance OVA version.
  1001. // This is the OVA which is manually installed by the user and contains the
  1002. // infrastructure for the automatically updatable components on the appliance.
  1003. string appliance_infrastructure_version = 13
  1004. [(google.api.field_behavior) = OUTPUT_ONLY];
  1005. // Output only. Appliance last installed update bundle version.
  1006. // This is the version of the automatically updatable components on the
  1007. // appliance.
  1008. string appliance_software_version = 14
  1009. [(google.api.field_behavior) = OUTPUT_ONLY];
  1010. // Output only. The available versions for updating this appliance.
  1011. AvailableUpdates available_versions = 15
  1012. [(google.api.field_behavior) = OUTPUT_ONLY];
  1013. // Output only. The status of the current / last upgradeAppliance operation.
  1014. UpgradeStatus upgrade_status = 16 [(google.api.field_behavior) = OUTPUT_ONLY];
  1015. }
  1016. // UpgradeStatus contains information about upgradeAppliance operation.
  1017. message UpgradeStatus {
  1018. // The possible values of the state.
  1019. enum State {
  1020. // The state was not sampled by the health checks yet.
  1021. STATE_UNSPECIFIED = 0;
  1022. // The upgrade has started.
  1023. RUNNING = 1;
  1024. // The upgrade failed.
  1025. FAILED = 2;
  1026. // The upgrade finished successfully.
  1027. SUCCEEDED = 3;
  1028. }
  1029. // The version to upgrade to.
  1030. string version = 1;
  1031. // The state of the upgradeAppliance operation.
  1032. State state = 2;
  1033. // Provides details on the state of the upgrade operation in case of an error.
  1034. google.rpc.Status error = 3;
  1035. // The time the operation was started.
  1036. google.protobuf.Timestamp start_time = 4;
  1037. // The version from which we upgraded.
  1038. string previous_version = 5;
  1039. }
  1040. // Holds informatiom about the available versions for upgrade.
  1041. message AvailableUpdates {
  1042. // The newest deployable version of the appliance.
  1043. // The current appliance can't be updated into this version, and the owner
  1044. // must manually deploy this OVA to a new appliance.
  1045. ApplianceVersion new_deployable_appliance = 1;
  1046. // The latest version for in place update.
  1047. // The current appliance can be updated to this version using the API or m4c
  1048. // CLI.
  1049. ApplianceVersion in_place_update = 2;
  1050. }
  1051. // Describes an appliance version.
  1052. message ApplianceVersion {
  1053. // The appliance version.
  1054. string version = 1;
  1055. // A link for downloading the version.
  1056. string uri = 2;
  1057. // Determine whether it's critical to upgrade the appliance to this version.
  1058. bool critical = 3;
  1059. // Link to a page that contains the version release notes.
  1060. string release_notes_uri = 4;
  1061. }
  1062. // Request message for 'ListSources' request.
  1063. message ListSourcesRequest {
  1064. // Required. The parent, which owns this collection of sources.
  1065. string parent = 1 [
  1066. (google.api.field_behavior) = REQUIRED,
  1067. (google.api.resource_reference) = {
  1068. child_type: "vmmigration.googleapis.com/Source"
  1069. }
  1070. ];
  1071. // Optional. The maximum number of sources to return. The service may return
  1072. // fewer than this value. If unspecified, at most 500 sources will be
  1073. // returned. The maximum value is 1000; values above 1000 will be coerced to
  1074. // 1000.
  1075. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
  1076. // Required. A page token, received from a previous `ListSources` call.
  1077. // Provide this to retrieve the subsequent page.
  1078. //
  1079. // When paginating, all other parameters provided to `ListSources` must
  1080. // match the call that provided the page token.
  1081. string page_token = 3 [(google.api.field_behavior) = REQUIRED];
  1082. // Optional. The filter request.
  1083. string filter = 4 [(google.api.field_behavior) = OPTIONAL];
  1084. // Optional. the order by fields for the result.
  1085. string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
  1086. }
  1087. // Response message for 'ListSources' request.
  1088. message ListSourcesResponse {
  1089. // Output only. The list of sources response.
  1090. repeated Source sources = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  1091. // Output only. A token, which can be sent as `page_token` to retrieve the
  1092. // next page. If this field is omitted, there are no subsequent pages.
  1093. string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
  1094. // Output only. Locations that could not be reached.
  1095. repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  1096. }
  1097. // Request message for 'GetSource' request.
  1098. message GetSourceRequest {
  1099. // Required. The Source name.
  1100. string name = 1 [
  1101. (google.api.field_behavior) = REQUIRED,
  1102. (google.api.resource_reference) = {
  1103. type: "vmmigration.googleapis.com/Source"
  1104. }
  1105. ];
  1106. }
  1107. // Request message for 'CreateSource' request.
  1108. message CreateSourceRequest {
  1109. // Required. The Source's parent.
  1110. string parent = 1 [
  1111. (google.api.field_behavior) = REQUIRED,
  1112. (google.api.resource_reference) = {
  1113. child_type: "vmmigration.googleapis.com/Source"
  1114. }
  1115. ];
  1116. // Required. The source identifier.
  1117. string source_id = 2 [(google.api.field_behavior) = REQUIRED];
  1118. // Required. The create request body.
  1119. Source source = 3 [(google.api.field_behavior) = REQUIRED];
  1120. // A request ID to identify requests. Specify a unique request ID
  1121. // so that if you must retry your request, the server will know to ignore
  1122. // the request if it has already been completed. The server will guarantee
  1123. // that for at least 60 minutes since the first request.
  1124. //
  1125. // For example, consider a situation where you make an initial request and t
  1126. // he request times out. If you make the request again with the same request
  1127. // ID, the server can check if original operation with the same request ID
  1128. // was received, and if so, will ignore the second request. This prevents
  1129. // clients from accidentally creating duplicate commitments.
  1130. //
  1131. // The request ID must be a valid UUID with the exception that zero UUID is
  1132. // not supported (00000000-0000-0000-0000-000000000000).
  1133. string request_id = 4;
  1134. }
  1135. // Update message for 'UpdateSources' request.
  1136. message UpdateSourceRequest {
  1137. // Field mask is used to specify the fields to be overwritten in the
  1138. // Source resource by the update.
  1139. // The fields specified in the update_mask are relative to the resource, not
  1140. // the full request. A field will be overwritten if it is in the mask. If the
  1141. // user does not provide a mask then all fields will be overwritten.
  1142. google.protobuf.FieldMask update_mask = 1;
  1143. // Required. The update request body.
  1144. Source source = 2 [(google.api.field_behavior) = REQUIRED];
  1145. // A request ID to identify requests. Specify a unique request ID
  1146. // so that if you must retry your request, the server will know to ignore
  1147. // the request if it has already been completed. The server will guarantee
  1148. // that for at least 60 minutes since the first request.
  1149. //
  1150. // For example, consider a situation where you make an initial request and t
  1151. // he request times out. If you make the request again with the same request
  1152. // ID, the server can check if original operation with the same request ID
  1153. // was received, and if so, will ignore the second request. This prevents
  1154. // clients from accidentally creating duplicate commitments.
  1155. //
  1156. // The request ID must be a valid UUID with the exception that zero UUID is
  1157. // not supported (00000000-0000-0000-0000-000000000000).
  1158. string request_id = 3;
  1159. }
  1160. // Request message for 'DeleteSource' request.
  1161. message DeleteSourceRequest {
  1162. // Required. The Source name.
  1163. string name = 1 [
  1164. (google.api.field_behavior) = REQUIRED,
  1165. (google.api.resource_reference) = {
  1166. type: "vmmigration.googleapis.com/Source"
  1167. }
  1168. ];
  1169. // Optional. A request ID to identify requests. Specify a unique request ID
  1170. // so that if you must retry your request, the server will know to ignore
  1171. // the request if it has already been completed. The server will guarantee
  1172. // that for at least 60 minutes after the first request.
  1173. //
  1174. // For example, consider a situation where you make an initial request and t
  1175. // he request times out. If you make the request again with the same request
  1176. // ID, the server can check if original operation with the same request ID
  1177. // was received, and if so, will ignore the second request. This prevents
  1178. // clients from accidentally creating duplicate commitments.
  1179. //
  1180. // The request ID must be a valid UUID with the exception that zero UUID is
  1181. // not supported (00000000-0000-0000-0000-000000000000).
  1182. string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
  1183. }
  1184. // Request message for
  1185. // [fetchInventory][google.cloud.vmmigration.v1.VmMigration.FetchInventory].
  1186. message FetchInventoryRequest {
  1187. // Required. The name of the Source.
  1188. string source = 1 [
  1189. (google.api.field_behavior) = REQUIRED,
  1190. (google.api.resource_reference) = {
  1191. type: "vmmigration.googleapis.com/Source"
  1192. }
  1193. ];
  1194. // If this flag is set to true, the source will be queried instead of using
  1195. // cached results. Using this flag will make the call slower.
  1196. bool force_refresh = 2;
  1197. }
  1198. // VmwareVmDetails describes a VM in vCenter.
  1199. message VmwareVmDetails {
  1200. // Possible values for the power state of the VM.
  1201. enum PowerState {
  1202. // Power state is not specified.
  1203. POWER_STATE_UNSPECIFIED = 0;
  1204. // The VM is turned ON.
  1205. ON = 1;
  1206. // The VM is turned OFF.
  1207. OFF = 2;
  1208. // The VM is suspended. This is similar to hibernation or sleep mode.
  1209. SUSPENDED = 3;
  1210. }
  1211. // Possible values for vm boot option.
  1212. enum BootOption {
  1213. // The boot option is unknown.
  1214. BOOT_OPTION_UNSPECIFIED = 0;
  1215. // The boot option is EFI.
  1216. EFI = 1;
  1217. // The boot option is BIOS.
  1218. BIOS = 2;
  1219. }
  1220. // The VM's id in the source (note that this is not the MigratingVm's id).
  1221. // This is the moref id of the VM.
  1222. string vm_id = 1;
  1223. // The id of the vCenter's datacenter this VM is contained in.
  1224. string datacenter_id = 2;
  1225. // The descriptive name of the vCenter's datacenter this VM is contained in.
  1226. string datacenter_description = 3;
  1227. // The unique identifier of the VM in vCenter.
  1228. string uuid = 4;
  1229. // The display name of the VM. Note that this is not necessarily unique.
  1230. string display_name = 5;
  1231. // The power state of the VM at the moment list was taken.
  1232. PowerState power_state = 6;
  1233. // The number of cpus in the VM.
  1234. int32 cpu_count = 7;
  1235. // The size of the memory of the VM in MB.
  1236. int32 memory_mb = 8;
  1237. // The number of disks the VM has.
  1238. int32 disk_count = 9;
  1239. // The total size of the storage allocated to the VM in MB.
  1240. int64 committed_storage_mb = 12;
  1241. // The VM's OS. See for example
  1242. // 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
  1243. // for types of strings this might hold.
  1244. string guest_description = 11;
  1245. // Output only. The VM Boot Option.
  1246. BootOption boot_option = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
  1247. }
  1248. // VmwareVmsDetails describes VMs in vCenter.
  1249. message VmwareVmsDetails {
  1250. // The details of the vmware VMs.
  1251. repeated VmwareVmDetails details = 1;
  1252. }
  1253. // Response message for
  1254. // [fetchInventory][google.cloud.vmmigration.v1.VmMigration.FetchInventory].
  1255. message FetchInventoryResponse {
  1256. oneof SourceVms {
  1257. // The description of the VMs in a Source of type Vmware.
  1258. VmwareVmsDetails vmware_vms = 1;
  1259. }
  1260. // Output only. The timestamp when the source was last queried (if the result
  1261. // is from the cache).
  1262. google.protobuf.Timestamp update_time = 2
  1263. [(google.api.field_behavior) = OUTPUT_ONLY];
  1264. }
  1265. // Utilization report details the utilization (CPU, memory, etc.) of selected
  1266. // source VMs.
  1267. message UtilizationReport {
  1268. option (google.api.resource) = {
  1269. type: "vmmigration.googleapis.com/UtilizationReport"
  1270. pattern: "projects/{project}/locations/{location}/sources/{source}/utilizationReports/{utilization_report}"
  1271. };
  1272. // Utilization report state.
  1273. enum State {
  1274. // The state is unknown. This value is not in use.
  1275. STATE_UNSPECIFIED = 0;
  1276. // The report is in the making.
  1277. CREATING = 1;
  1278. // Report creation completed successfully.
  1279. SUCCEEDED = 2;
  1280. // Report creation failed.
  1281. FAILED = 3;
  1282. }
  1283. // Report time frame options.
  1284. enum TimeFrame {
  1285. // The time frame was not specified and will default to WEEK.
  1286. TIME_FRAME_UNSPECIFIED = 0;
  1287. // One week.
  1288. WEEK = 1;
  1289. // One month.
  1290. MONTH = 2;
  1291. // One year.
  1292. YEAR = 3;
  1293. }
  1294. // Output only. The report unique name.
  1295. string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  1296. // The report display name, as assigned by the user.
  1297. string display_name = 2;
  1298. // Output only. Current state of the report.
  1299. State state = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  1300. // Output only. The time the state was last set.
  1301. google.protobuf.Timestamp state_time = 4
  1302. [(google.api.field_behavior) = OUTPUT_ONLY];
  1303. // Output only. Provides details on the state of the report in case of an
  1304. // error.
  1305. google.rpc.Status error = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
  1306. // Output only. The time the report was created (this refers to the time of
  1307. // the request, not the time the report creation completed).
  1308. google.protobuf.Timestamp create_time = 6
  1309. [(google.api.field_behavior) = OUTPUT_ONLY];
  1310. // Time frame of the report.
  1311. TimeFrame time_frame = 7;
  1312. // Output only. The point in time when the time frame ends. Notice that the
  1313. // time frame is counted backwards. For instance if the "frame_end_time" value
  1314. // is 2021/01/20 and the time frame is WEEK then the report covers the week
  1315. // between 2021/01/20 and 2021/01/14.
  1316. google.protobuf.Timestamp frame_end_time = 8
  1317. [(google.api.field_behavior) = OUTPUT_ONLY];
  1318. // Output only. Total number of VMs included in the report.
  1319. int32 vm_count = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
  1320. // List of utilization information per VM.
  1321. // When sent as part of the request, the "vm_id" field is used in order to
  1322. // specify which VMs to include in the report. In that case all other fields
  1323. // are ignored.
  1324. repeated VmUtilizationInfo vms = 10;
  1325. }
  1326. // Utilization information of a single VM.
  1327. message VmUtilizationInfo {
  1328. oneof VmDetails {
  1329. // The description of the VM in a Source of type Vmware.
  1330. VmwareVmDetails vmware_vm_details = 1;
  1331. }
  1332. // The VM's ID in the source.
  1333. string vm_id = 3;
  1334. // Utilization metrics for this VM.
  1335. VmUtilizationMetrics utilization = 2;
  1336. }
  1337. // Utilization metrics values for a single VM.
  1338. message VmUtilizationMetrics {
  1339. // Max CPU usage, percent.
  1340. int32 cpu_max_percent = 9;
  1341. // Average CPU usage, percent.
  1342. int32 cpu_average_percent = 10;
  1343. // Max memory usage, percent.
  1344. int32 memory_max_percent = 11;
  1345. // Average memory usage, percent.
  1346. int32 memory_average_percent = 12;
  1347. // Max disk IO rate, in kilobytes per second.
  1348. int64 disk_io_rate_max_kbps = 13;
  1349. // Average disk IO rate, in kilobytes per second.
  1350. int64 disk_io_rate_average_kbps = 14;
  1351. // Max network throughput (combined transmit-rates and receive-rates), in
  1352. // kilobytes per second.
  1353. int64 network_throughput_max_kbps = 15;
  1354. // Average network throughput (combined transmit-rates and receive-rates), in
  1355. // kilobytes per second.
  1356. int64 network_throughput_average_kbps = 16;
  1357. }
  1358. // Request message for 'ListUtilizationReports' request.
  1359. message ListUtilizationReportsRequest {
  1360. // Required. The Utilization Reports parent.
  1361. string parent = 1 [
  1362. (google.api.field_behavior) = REQUIRED,
  1363. (google.api.resource_reference) = {
  1364. child_type: "vmmigration.googleapis.com/UtilizationReport"
  1365. }
  1366. ];
  1367. // Optional. The level of details of each report.
  1368. // Defaults to BASIC.
  1369. UtilizationReportView view = 2 [(google.api.field_behavior) = OPTIONAL];
  1370. // Optional. The maximum number of reports to return. The service may return
  1371. // fewer than this value. If unspecified, at most 500 reports will be
  1372. // returned. The maximum value is 1000; values above 1000 will be coerced to
  1373. // 1000.
  1374. int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL];
  1375. // Required. A page token, received from a previous `ListUtilizationReports`
  1376. // call. Provide this to retrieve the subsequent page.
  1377. //
  1378. // When paginating, all other parameters provided to `ListUtilizationReports`
  1379. // must match the call that provided the page token.
  1380. string page_token = 4 [(google.api.field_behavior) = REQUIRED];
  1381. // Optional. The filter request.
  1382. string filter = 5 [(google.api.field_behavior) = OPTIONAL];
  1383. // Optional. the order by fields for the result.
  1384. string order_by = 6 [(google.api.field_behavior) = OPTIONAL];
  1385. }
  1386. // Response message for 'ListUtilizationReports' request.
  1387. message ListUtilizationReportsResponse {
  1388. // Output only. The list of reports.
  1389. repeated UtilizationReport utilization_reports = 1
  1390. [(google.api.field_behavior) = OUTPUT_ONLY];
  1391. // Output only. A token, which can be sent as `page_token` to retrieve the
  1392. // next page. If this field is omitted, there are no subsequent pages.
  1393. string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
  1394. // Output only. Locations that could not be reached.
  1395. repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  1396. }
  1397. // Request message for 'GetUtilizationReport' request.
  1398. message GetUtilizationReportRequest {
  1399. // Required. The Utilization Report name.
  1400. string name = 1 [
  1401. (google.api.field_behavior) = REQUIRED,
  1402. (google.api.resource_reference) = {
  1403. type: "vmmigration.googleapis.com/UtilizationReport"
  1404. }
  1405. ];
  1406. // Optional. The level of details of the report.
  1407. // Defaults to FULL
  1408. UtilizationReportView view = 2 [(google.api.field_behavior) = OPTIONAL];
  1409. }
  1410. // Request message for 'CreateUtilizationReport' request.
  1411. message CreateUtilizationReportRequest {
  1412. // Required. The Utilization Report's parent.
  1413. string parent = 1 [
  1414. (google.api.field_behavior) = REQUIRED,
  1415. (google.api.resource_reference) = {
  1416. child_type: "vmmigration.googleapis.com/UtilizationReport"
  1417. }
  1418. ];
  1419. // Required. The report to create.
  1420. UtilizationReport utilization_report = 2
  1421. [(google.api.field_behavior) = REQUIRED];
  1422. // Required. The ID to use for the report, which will become the final
  1423. // component of the reports's resource name.
  1424. //
  1425. // This value maximum length is 63 characters, and valid characters
  1426. // are /[a-z][0-9]-/. It must start with an english letter and must not
  1427. // end with a hyphen.
  1428. string utilization_report_id = 3 [(google.api.field_behavior) = REQUIRED];
  1429. // A request ID to identify requests. Specify a unique request ID
  1430. // so that if you must retry your request, the server will know to ignore
  1431. // the request if it has already been completed. The server will guarantee
  1432. // that for at least 60 minutes since the first request.
  1433. //
  1434. // For example, consider a situation where you make an initial request and t
  1435. // he request times out. If you make the request again with the same request
  1436. // ID, the server can check if original operation with the same request ID
  1437. // was received, and if so, will ignore the second request. This prevents
  1438. // clients from accidentally creating duplicate commitments.
  1439. //
  1440. // The request ID must be a valid UUID with the exception that zero UUID is
  1441. // not supported (00000000-0000-0000-0000-000000000000).
  1442. string request_id = 4;
  1443. }
  1444. // Request message for 'DeleteUtilizationReport' request.
  1445. message DeleteUtilizationReportRequest {
  1446. // Required. The Utilization Report name.
  1447. string name = 1 [
  1448. (google.api.field_behavior) = REQUIRED,
  1449. (google.api.resource_reference) = {
  1450. type: "vmmigration.googleapis.com/UtilizationReport"
  1451. }
  1452. ];
  1453. // Optional. A request ID to identify requests. Specify a unique request ID
  1454. // so that if you must retry your request, the server will know to ignore
  1455. // the request if it has already been completed. The server will guarantee
  1456. // that for at least 60 minutes after the first request.
  1457. //
  1458. // For example, consider a situation where you make an initial request and t
  1459. // he request times out. If you make the request again with the same request
  1460. // ID, the server can check if original operation with the same request ID
  1461. // was received, and if so, will ignore the second request. This prevents
  1462. // clients from accidentally creating duplicate commitments.
  1463. //
  1464. // The request ID must be a valid UUID with the exception that zero UUID is
  1465. // not supported (00000000-0000-0000-0000-000000000000).
  1466. string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
  1467. }
  1468. // Response message for 'ListDatacenterConnectors' request.
  1469. message ListDatacenterConnectorsResponse {
  1470. // Output only. The list of sources response.
  1471. repeated DatacenterConnector datacenter_connectors = 1
  1472. [(google.api.field_behavior) = OUTPUT_ONLY];
  1473. // Output only. A token, which can be sent as `page_token` to retrieve the
  1474. // next page. If this field is omitted, there are no subsequent pages.
  1475. string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
  1476. // Output only. Locations that could not be reached.
  1477. repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  1478. }
  1479. // Request message for 'GetDatacenterConnector' request.
  1480. message GetDatacenterConnectorRequest {
  1481. // Required. The name of the DatacenterConnector.
  1482. string name = 1 [
  1483. (google.api.field_behavior) = REQUIRED,
  1484. (google.api.resource_reference) = {
  1485. type: "vmmigration.googleapis.com/DatacenterConnector"
  1486. }
  1487. ];
  1488. }
  1489. // Request message for 'CreateDatacenterConnector' request.
  1490. message CreateDatacenterConnectorRequest {
  1491. // Required. The DatacenterConnector's parent.
  1492. // Required. The Source in where the new DatacenterConnector will be created.
  1493. // For example:
  1494. // `projects/my-project/locations/us-central1/sources/my-source`
  1495. string parent = 1 [
  1496. (google.api.field_behavior) = REQUIRED,
  1497. (google.api.resource_reference) = {
  1498. child_type: "vmmigration.googleapis.com/DatacenterConnector"
  1499. }
  1500. ];
  1501. // Required. The datacenterConnector identifier.
  1502. string datacenter_connector_id = 2 [(google.api.field_behavior) = REQUIRED];
  1503. // Required. The create request body.
  1504. DatacenterConnector datacenter_connector = 3
  1505. [(google.api.field_behavior) = REQUIRED];
  1506. // A request ID to identify requests. Specify a unique request ID
  1507. // so that if you must retry your request, the server will know to ignore
  1508. // the request if it has already been completed. The server will guarantee
  1509. // that for at least 60 minutes since the first request.
  1510. //
  1511. // For example, consider a situation where you make an initial request and t
  1512. // he request times out. If you make the request again with the same request
  1513. // ID, the server can check if original operation with the same request ID
  1514. // was received, and if so, will ignore the second request. This prevents
  1515. // clients from accidentally creating duplicate commitments.
  1516. //
  1517. // The request ID must be a valid UUID with the exception that zero UUID is
  1518. // not supported (00000000-0000-0000-0000-000000000000).
  1519. string request_id = 4;
  1520. }
  1521. // Request message for 'DeleteDatacenterConnector' request.
  1522. message DeleteDatacenterConnectorRequest {
  1523. // Required. The DatacenterConnector name.
  1524. string name = 1 [
  1525. (google.api.field_behavior) = REQUIRED,
  1526. (google.api.resource_reference) = {
  1527. type: "vmmigration.googleapis.com/DatacenterConnector"
  1528. }
  1529. ];
  1530. // A request ID to identify requests. Specify a unique request ID
  1531. // so that if you must retry your request, the server will know to ignore
  1532. // the request if it has already been completed. The server will guarantee
  1533. // that for at least 60 minutes after the first request.
  1534. //
  1535. // For example, consider a situation where you make an initial request and t
  1536. // he request times out. If you make the request again with the same request
  1537. // ID, the server can check if original operation with the same request ID
  1538. // was received, and if so, will ignore the second request. This prevents
  1539. // clients from accidentally creating duplicate commitments.
  1540. //
  1541. // The request ID must be a valid UUID with the exception that zero UUID is
  1542. // not supported (00000000-0000-0000-0000-000000000000).
  1543. string request_id = 2;
  1544. }
  1545. // Request message for 'UpgradeAppliance' request.
  1546. message UpgradeApplianceRequest {
  1547. // Required. The DatacenterConnector name.
  1548. string datacenter_connector = 1 [
  1549. (google.api.field_behavior) = REQUIRED,
  1550. (google.api.resource_reference) = {
  1551. type: "vmmigration.googleapis.com/DatacenterConnector"
  1552. }
  1553. ];
  1554. // A request ID to identify requests. Specify a unique request ID
  1555. // so that if you must retry your request, the server will know to ignore
  1556. // the request if it has already been completed. The server will guarantee
  1557. // that for at least 60 minutes after the first request.
  1558. //
  1559. // For example, consider a situation where you make an initial request and t
  1560. // he request times out. If you make the request again with the same request
  1561. // ID, the server can check if original operation with the same request ID
  1562. // was received, and if so, will ignore the second request. This prevents
  1563. // clients from accidentally creating duplicate commitments.
  1564. //
  1565. // The request ID must be a valid UUID with the exception that zero UUID is
  1566. // not supported (00000000-0000-0000-0000-000000000000).
  1567. string request_id = 2;
  1568. }
  1569. // Response message for 'UpgradeAppliance' request.
  1570. message UpgradeApplianceResponse {}
  1571. // Request message for 'ListDatacenterConnectors' request.
  1572. message ListDatacenterConnectorsRequest {
  1573. // Required. The parent, which owns this collection of connectors.
  1574. string parent = 1 [
  1575. (google.api.field_behavior) = REQUIRED,
  1576. (google.api.resource_reference) = {
  1577. child_type: "vmmigration.googleapis.com/DatacenterConnector"
  1578. }
  1579. ];
  1580. // Optional. The maximum number of connectors to return. The service may
  1581. // return fewer than this value. If unspecified, at most 500 sources will be
  1582. // returned. The maximum value is 1000; values above 1000 will be coerced to
  1583. // 1000.
  1584. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
  1585. // Required. A page token, received from a previous `ListDatacenterConnectors`
  1586. // call. Provide this to retrieve the subsequent page.
  1587. //
  1588. // When paginating, all other parameters provided to
  1589. // `ListDatacenterConnectors` must match the call that provided the page
  1590. // token.
  1591. string page_token = 3 [(google.api.field_behavior) = REQUIRED];
  1592. // Optional. The filter request.
  1593. string filter = 4 [(google.api.field_behavior) = OPTIONAL];
  1594. // Optional. the order by fields for the result.
  1595. string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
  1596. }
  1597. // ComputeEngineTargetDefaults is a collection of details for creating a VM in a
  1598. // target Compute Engine project.
  1599. message ComputeEngineTargetDefaults {
  1600. // The name of the VM to create.
  1601. string vm_name = 1;
  1602. // The full path of the resource of type TargetProject which represents the
  1603. // Compute Engine project in which to create this VM.
  1604. string target_project = 2 [(google.api.resource_reference) = {
  1605. type: "vmmigration.googleapis.com/TargetProject"
  1606. }];
  1607. // The zone in which to create the VM.
  1608. string zone = 3;
  1609. // The machine type series to create the VM with.
  1610. string machine_type_series = 4;
  1611. // The machine type to create the VM with.
  1612. string machine_type = 5;
  1613. // A map of network tags to associate with the VM.
  1614. repeated string network_tags = 6;
  1615. // List of NICs connected to this VM.
  1616. repeated NetworkInterface network_interfaces = 7;
  1617. // The service account to associate the VM with.
  1618. string service_account = 8;
  1619. // The disk type to use in the VM.
  1620. ComputeEngineDiskType disk_type = 9;
  1621. // A map of labels to associate with the VM.
  1622. map<string, string> labels = 10;
  1623. // The license type to use in OS adaptation.
  1624. ComputeEngineLicenseType license_type = 11;
  1625. // Output only. The OS license returned from the adaptation module report.
  1626. AppliedLicense applied_license = 12
  1627. [(google.api.field_behavior) = OUTPUT_ONLY];
  1628. // Compute instance scheduling information (if empty default is used).
  1629. ComputeScheduling compute_scheduling = 13;
  1630. // Defines whether the instance has Secure Boot enabled.
  1631. // This can be set to true only if the vm boot option is EFI.
  1632. bool secure_boot = 14;
  1633. // Output only. The VM Boot Option, as set in the source vm.
  1634. ComputeEngineBootOption boot_option = 15
  1635. [(google.api.field_behavior) = OUTPUT_ONLY];
  1636. // The metadata key/value pairs to assign to the VM.
  1637. map<string, string> metadata = 16;
  1638. // Additional licenses to assign to the VM.
  1639. repeated string additional_licenses = 17;
  1640. // The hostname to assign to the VM.
  1641. string hostname = 18;
  1642. }
  1643. // ComputeEngineTargetDetails is a collection of details for creating a VM in a
  1644. // target Compute Engine project.
  1645. message ComputeEngineTargetDetails {
  1646. // The name of the VM to create.
  1647. string vm_name = 1;
  1648. // The GCP target project ID or project name.
  1649. string project = 2;
  1650. // The zone in which to create the VM.
  1651. string zone = 3;
  1652. // The machine type series to create the VM with.
  1653. string machine_type_series = 4;
  1654. // The machine type to create the VM with.
  1655. string machine_type = 5;
  1656. // A map of network tags to associate with the VM.
  1657. repeated string network_tags = 6;
  1658. // List of NICs connected to this VM.
  1659. repeated NetworkInterface network_interfaces = 7;
  1660. // The service account to associate the VM with.
  1661. string service_account = 8;
  1662. // The disk type to use in the VM.
  1663. ComputeEngineDiskType disk_type = 9;
  1664. // A map of labels to associate with the VM.
  1665. map<string, string> labels = 10;
  1666. // The license type to use in OS adaptation.
  1667. ComputeEngineLicenseType license_type = 11;
  1668. // The OS license returned from the adaptation module report.
  1669. AppliedLicense applied_license = 12;
  1670. // Compute instance scheduling information (if empty default is used).
  1671. ComputeScheduling compute_scheduling = 13;
  1672. // Defines whether the instance has Secure Boot enabled.
  1673. // This can be set to true only if the vm boot option is EFI.
  1674. bool secure_boot = 14;
  1675. // The VM Boot Option, as set in the source vm.
  1676. ComputeEngineBootOption boot_option = 15;
  1677. // The metadata key/value pairs to assign to the VM.
  1678. map<string, string> metadata = 16;
  1679. // Additional licenses to assign to the VM.
  1680. repeated string additional_licenses = 17;
  1681. // The hostname to assign to the VM.
  1682. string hostname = 18;
  1683. }
  1684. // NetworkInterface represents a NIC of a VM.
  1685. message NetworkInterface {
  1686. // The network to connect the NIC to.
  1687. string network = 1;
  1688. // The subnetwork to connect the NIC to.
  1689. string subnetwork = 2;
  1690. // The internal IP to define in the NIC.
  1691. // The formats accepted are: `ephemeral` \ ipv4 address \ a named address
  1692. // resource full path.
  1693. string internal_ip = 3;
  1694. // The external IP to define in the NIC.
  1695. string external_ip = 4;
  1696. }
  1697. // AppliedLicense holds the license data returned by adaptation module report.
  1698. message AppliedLicense {
  1699. // License types used in OS adaptation.
  1700. enum Type {
  1701. // Unspecified license for the OS.
  1702. TYPE_UNSPECIFIED = 0;
  1703. // No license available for the OS.
  1704. NONE = 1;
  1705. // The license type is Pay As You Go license type.
  1706. PAYG = 2;
  1707. // The license type is is Bring Your Own License type.
  1708. BYOL = 3;
  1709. }
  1710. // The license type that was used in OS adaptation.
  1711. Type type = 1;
  1712. // The OS license returned from the adaptation module's report.
  1713. string os_license = 2;
  1714. }
  1715. // Node Affinity: the configuration of desired nodes onto which this Instance
  1716. // could be scheduled. Based on
  1717. // https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling
  1718. message SchedulingNodeAffinity {
  1719. // Possible types of node selection operators. Valid operators are IN for
  1720. // affinity and NOT_IN for anti-affinity.
  1721. enum Operator {
  1722. // An unknown, unexpected behavior.
  1723. OPERATOR_UNSPECIFIED = 0;
  1724. // The node resource group should be in these resources affinity.
  1725. IN = 1;
  1726. // The node resource group should not be in these resources affinity.
  1727. NOT_IN = 2;
  1728. }
  1729. // The label key of Node resource to reference.
  1730. string key = 1;
  1731. // The operator to use for the node resources specified in the `values`
  1732. // parameter.
  1733. Operator operator = 2;
  1734. // Corresponds to the label values of Node resource.
  1735. repeated string values = 3;
  1736. }
  1737. // Scheduling information for VM on maintenance/restart behaviour and
  1738. // node allocation in sole tenant nodes.
  1739. message ComputeScheduling {
  1740. enum OnHostMaintenance {
  1741. // An unknown, unexpected behavior.
  1742. ON_HOST_MAINTENANCE_UNSPECIFIED = 0;
  1743. // Terminate the instance when the host machine undergoes maintenance.
  1744. TERMINATE = 1;
  1745. // Migrate the instance when the host machine undergoes maintenance.
  1746. MIGRATE = 2;
  1747. }
  1748. // Defines whether the Instance should be automatically restarted whenever
  1749. // it is terminated by Compute Engine (not terminated by user).
  1750. enum RestartType {
  1751. // Unspecified behavior. This will use the default.
  1752. RESTART_TYPE_UNSPECIFIED = 0;
  1753. // The Instance should be automatically restarted whenever it is
  1754. // terminated by Compute Engine.
  1755. AUTOMATIC_RESTART = 1;
  1756. // The Instance isn't automatically restarted whenever it is
  1757. // terminated by Compute Engine.
  1758. NO_AUTOMATIC_RESTART = 2;
  1759. }
  1760. // How the instance should behave when the host machine undergoes
  1761. // maintenance that may temporarily impact instance performance.
  1762. OnHostMaintenance on_host_maintenance = 1;
  1763. // Whether the Instance should be automatically restarted whenever it is
  1764. // terminated by Compute Engine (not terminated by user).
  1765. // This configuration is identical to `automaticRestart` field in Compute
  1766. // Engine create instance under scheduling.
  1767. // It was changed to an enum (instead of a boolean) to match the default
  1768. // value in Compute Engine which is automatic restart.
  1769. RestartType restart_type = 5;
  1770. // A set of node affinity and anti-affinity configurations for sole tenant
  1771. // nodes.
  1772. repeated SchedulingNodeAffinity node_affinities = 3;
  1773. // The minimum number of virtual CPUs this instance will consume when
  1774. // running on a sole-tenant node. Ignored if no node_affinites are
  1775. // configured.
  1776. int32 min_node_cpus = 4;
  1777. }
  1778. // A policy for scheduling replications.
  1779. message SchedulePolicy {
  1780. // The idle duration between replication stages.
  1781. google.protobuf.Duration idle_duration = 1;
  1782. // A flag to indicate whether to skip OS adaptation during the replication
  1783. // sync. OS adaptation is a process where the VM's operating system undergoes
  1784. // changes and adaptations to fully function on Compute Engine.
  1785. bool skip_os_adaptation = 2;
  1786. }
  1787. // Request message for 'CreateMigratingVm' request.
  1788. message CreateMigratingVmRequest {
  1789. // Required. The MigratingVm's parent.
  1790. string parent = 1 [
  1791. (google.api.field_behavior) = REQUIRED,
  1792. (google.api.resource_reference) = {
  1793. child_type: "vmmigration.googleapis.com/MigratingVm"
  1794. }
  1795. ];
  1796. // Required. The migratingVm identifier.
  1797. string migrating_vm_id = 2 [(google.api.field_behavior) = REQUIRED];
  1798. // Required. The create request body.
  1799. MigratingVm migrating_vm = 3 [(google.api.field_behavior) = REQUIRED];
  1800. // A request ID to identify requests. Specify a unique request ID
  1801. // so that if you must retry your request, the server will know to ignore
  1802. // the request if it has already been completed. The server will guarantee
  1803. // that for at least 60 minutes since the first request.
  1804. //
  1805. // For example, consider a situation where you make an initial request and t
  1806. // he request times out. If you make the request again with the same request
  1807. // ID, the server can check if original operation with the same request ID
  1808. // was received, and if so, will ignore the second request. This prevents
  1809. // clients from accidentally creating duplicate commitments.
  1810. //
  1811. // The request ID must be a valid UUID with the exception that zero UUID is
  1812. // not supported (00000000-0000-0000-0000-000000000000).
  1813. string request_id = 4;
  1814. }
  1815. // Request message for 'LisMigratingVmsRequest' request.
  1816. message ListMigratingVmsRequest {
  1817. // Required. The parent, which owns this collection of MigratingVms.
  1818. string parent = 1 [
  1819. (google.api.field_behavior) = REQUIRED,
  1820. (google.api.resource_reference) = {
  1821. child_type: "vmmigration.googleapis.com/MigratingVm"
  1822. }
  1823. ];
  1824. // Optional. The maximum number of migrating VMs to return. The service may
  1825. // return fewer than this value. If unspecified, at most 500 migrating VMs
  1826. // will be returned. The maximum value is 1000; values above 1000 will be
  1827. // coerced to 1000.
  1828. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
  1829. // Required. A page token, received from a previous `ListMigratingVms` call.
  1830. // Provide this to retrieve the subsequent page.
  1831. //
  1832. // When paginating, all other parameters provided to `ListMigratingVms`
  1833. // must match the call that provided the page token.
  1834. string page_token = 3 [(google.api.field_behavior) = REQUIRED];
  1835. // Optional. The filter request.
  1836. string filter = 4 [(google.api.field_behavior) = OPTIONAL];
  1837. // Optional. the order by fields for the result.
  1838. string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
  1839. // Optional. The level of details of each migrating VM.
  1840. MigratingVmView view = 6 [(google.api.field_behavior) = OPTIONAL];
  1841. }
  1842. // Response message for 'ListMigratingVms' request.
  1843. message ListMigratingVmsResponse {
  1844. // Output only. The list of Migrating VMs response.
  1845. repeated MigratingVm migrating_vms = 1
  1846. [(google.api.field_behavior) = OUTPUT_ONLY];
  1847. // Output only. A token, which can be sent as `page_token` to retrieve the
  1848. // next page. If this field is omitted, there are no subsequent pages.
  1849. string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
  1850. // Output only. Locations that could not be reached.
  1851. repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  1852. }
  1853. // Request message for 'GetMigratingVm' request.
  1854. message GetMigratingVmRequest {
  1855. // Required. The name of the MigratingVm.
  1856. string name = 1 [
  1857. (google.api.field_behavior) = REQUIRED,
  1858. (google.api.resource_reference) = {
  1859. type: "vmmigration.googleapis.com/MigratingVm"
  1860. }
  1861. ];
  1862. // Optional. The level of details of the migrating VM.
  1863. MigratingVmView view = 2 [(google.api.field_behavior) = OPTIONAL];
  1864. }
  1865. // Request message for 'UpdateMigratingVm' request.
  1866. message UpdateMigratingVmRequest {
  1867. // Field mask is used to specify the fields to be overwritten in the
  1868. // MigratingVm resource by the update.
  1869. // The fields specified in the update_mask are relative to the resource, not
  1870. // the full request. A field will be overwritten if it is in the mask. If the
  1871. // user does not provide a mask then all fields will be overwritten.
  1872. google.protobuf.FieldMask update_mask = 1;
  1873. // Required. The update request body.
  1874. MigratingVm migrating_vm = 2 [(google.api.field_behavior) = REQUIRED];
  1875. // A request ID to identify requests. Specify a unique request ID
  1876. // so that if you must retry your request, the server will know to ignore
  1877. // the request if it has already been completed. The server will guarantee
  1878. // that for at least 60 minutes since the first request.
  1879. //
  1880. // For example, consider a situation where you make an initial request and t
  1881. // he request times out. If you make the request again with the same request
  1882. // ID, the server can check if original operation with the same request ID
  1883. // was received, and if so, will ignore the second request. This prevents
  1884. // clients from accidentally creating duplicate commitments.
  1885. //
  1886. // The request ID must be a valid UUID with the exception that zero UUID is
  1887. // not supported (00000000-0000-0000-0000-000000000000).
  1888. string request_id = 3;
  1889. }
  1890. // Request message for 'DeleteMigratingVm' request.
  1891. message DeleteMigratingVmRequest {
  1892. // Required. The name of the MigratingVm.
  1893. string name = 1 [
  1894. (google.api.field_behavior) = REQUIRED,
  1895. (google.api.resource_reference) = {
  1896. type: "vmmigration.googleapis.com/MigratingVm"
  1897. }
  1898. ];
  1899. }
  1900. // Request message for 'StartMigrationRequest' request.
  1901. message StartMigrationRequest {
  1902. // Required. The name of the MigratingVm.
  1903. string migrating_vm = 1 [
  1904. (google.api.field_behavior) = REQUIRED,
  1905. (google.api.resource_reference) = {
  1906. type: "vmmigration.googleapis.com/MigratingVm"
  1907. }
  1908. ];
  1909. }
  1910. // Response message for 'StartMigration' request.
  1911. message StartMigrationResponse {}
  1912. // Request message for 'PauseMigration' request.
  1913. message PauseMigrationRequest {
  1914. // Required. The name of the MigratingVm.
  1915. string migrating_vm = 1 [
  1916. (google.api.field_behavior) = REQUIRED,
  1917. (google.api.resource_reference) = {
  1918. type: "vmmigration.googleapis.com/MigratingVm"
  1919. }
  1920. ];
  1921. }
  1922. // Response message for 'PauseMigration' request.
  1923. message PauseMigrationResponse {}
  1924. // Request message for 'ResumeMigration' request.
  1925. message ResumeMigrationRequest {
  1926. // Required. The name of the MigratingVm.
  1927. string migrating_vm = 1 [
  1928. (google.api.field_behavior) = REQUIRED,
  1929. (google.api.resource_reference) = {
  1930. type: "vmmigration.googleapis.com/MigratingVm"
  1931. }
  1932. ];
  1933. }
  1934. // Response message for 'ResumeMigration' request.
  1935. message ResumeMigrationResponse {}
  1936. // Request message for 'FinalizeMigration' request.
  1937. message FinalizeMigrationRequest {
  1938. // Required. The name of the MigratingVm.
  1939. string migrating_vm = 1 [
  1940. (google.api.field_behavior) = REQUIRED,
  1941. (google.api.resource_reference) = {
  1942. type: "vmmigration.googleapis.com/MigratingVm"
  1943. }
  1944. ];
  1945. }
  1946. // Response message for 'FinalizeMigration' request.
  1947. message FinalizeMigrationResponse {}
  1948. // TargetProject message represents a target Compute Engine project for a
  1949. // migration or a clone.
  1950. message TargetProject {
  1951. option (google.api.resource) = {
  1952. type: "vmmigration.googleapis.com/TargetProject"
  1953. pattern: "projects/{project}/locations/{location}/targetProjects/{target_project}"
  1954. };
  1955. // Output only. The name of the target project.
  1956. string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  1957. // The target project ID (number) or project name.
  1958. string project = 2;
  1959. // The target project's description.
  1960. string description = 3;
  1961. // Output only. The time this target project resource was created (not related
  1962. // to when the Compute Engine project it points to was created).
  1963. google.protobuf.Timestamp create_time = 4
  1964. [(google.api.field_behavior) = OUTPUT_ONLY];
  1965. // Output only. The last time the target project resource was updated.
  1966. google.protobuf.Timestamp update_time = 5
  1967. [(google.api.field_behavior) = OUTPUT_ONLY];
  1968. }
  1969. // Request message for 'GetTargetProject' call.
  1970. message GetTargetProjectRequest {
  1971. // Required. The TargetProject name.
  1972. string name = 1 [
  1973. (google.api.field_behavior) = REQUIRED,
  1974. (google.api.resource_reference) = {
  1975. type: "vmmigration.googleapis.com/TargetProject"
  1976. }
  1977. ];
  1978. }
  1979. // Request message for 'ListTargetProjects' call.
  1980. message ListTargetProjectsRequest {
  1981. // Required. The parent, which owns this collection of targets.
  1982. string parent = 1 [
  1983. (google.api.field_behavior) = REQUIRED,
  1984. (google.api.resource_reference) = {
  1985. child_type: "vmmigration.googleapis.com/TargetProject"
  1986. }
  1987. ];
  1988. // Optional. The maximum number of targets to return. The service may return
  1989. // fewer than this value. If unspecified, at most 500 targets will be
  1990. // returned. The maximum value is 1000; values above 1000 will be coerced to
  1991. // 1000.
  1992. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
  1993. // Required. A page token, received from a previous `ListTargets` call.
  1994. // Provide this to retrieve the subsequent page.
  1995. //
  1996. // When paginating, all other parameters provided to `ListTargets` must
  1997. // match the call that provided the page token.
  1998. string page_token = 3 [(google.api.field_behavior) = REQUIRED];
  1999. // Optional. The filter request.
  2000. string filter = 4 [(google.api.field_behavior) = OPTIONAL];
  2001. // Optional. the order by fields for the result.
  2002. string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
  2003. }
  2004. // Response message for 'ListTargetProjects' call.
  2005. message ListTargetProjectsResponse {
  2006. // Output only. The list of target response.
  2007. repeated TargetProject target_projects = 1
  2008. [(google.api.field_behavior) = OUTPUT_ONLY];
  2009. // Output only. A token, which can be sent as `page_token` to retrieve the
  2010. // next page. If this field is omitted, there are no subsequent pages.
  2011. string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
  2012. // Output only. Locations that could not be reached.
  2013. repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  2014. }
  2015. // Request message for 'CreateTargetProject' request.
  2016. message CreateTargetProjectRequest {
  2017. // Required. The TargetProject's parent.
  2018. string parent = 1 [
  2019. (google.api.field_behavior) = REQUIRED,
  2020. (google.api.resource_reference) = {
  2021. child_type: "vmmigration.googleapis.com/TargetProject"
  2022. }
  2023. ];
  2024. // Required. The target_project identifier.
  2025. string target_project_id = 2 [(google.api.field_behavior) = REQUIRED];
  2026. // Required. The create request body.
  2027. TargetProject target_project = 3 [(google.api.field_behavior) = REQUIRED];
  2028. // A request ID to identify requests. Specify a unique request ID
  2029. // so that if you must retry your request, the server will know to ignore
  2030. // the request if it has already been completed. The server will guarantee
  2031. // that for at least 60 minutes since the first request.
  2032. //
  2033. // For example, consider a situation where you make an initial request and t
  2034. // he request times out. If you make the request again with the same request
  2035. // ID, the server can check if original operation with the same request ID
  2036. // was received, and if so, will ignore the second request. This prevents
  2037. // clients from accidentally creating duplicate commitments.
  2038. //
  2039. // The request ID must be a valid UUID with the exception that zero UUID is
  2040. // not supported (00000000-0000-0000-0000-000000000000).
  2041. string request_id = 4;
  2042. }
  2043. // Update message for 'UpdateTargetProject' request.
  2044. message UpdateTargetProjectRequest {
  2045. // Field mask is used to specify the fields to be overwritten in the
  2046. // TargetProject resource by the update.
  2047. // The fields specified in the update_mask are relative to the resource, not
  2048. // the full request. A field will be overwritten if it is in the mask. If the
  2049. // user does not provide a mask then all fields will be overwritten.
  2050. google.protobuf.FieldMask update_mask = 1;
  2051. // Required. The update request body.
  2052. TargetProject target_project = 2 [(google.api.field_behavior) = REQUIRED];
  2053. // A request ID to identify requests. Specify a unique request ID
  2054. // so that if you must retry your request, the server will know to ignore
  2055. // the request if it has already been completed. The server will guarantee
  2056. // that for at least 60 minutes since the first request.
  2057. //
  2058. // For example, consider a situation where you make an initial request and t
  2059. // he request times out. If you make the request again with the same request
  2060. // ID, the server can check if original operation with the same request ID
  2061. // was received, and if so, will ignore the second request. This prevents
  2062. // clients from accidentally creating duplicate commitments.
  2063. //
  2064. // The request ID must be a valid UUID with the exception that zero UUID is
  2065. // not supported (00000000-0000-0000-0000-000000000000).
  2066. string request_id = 3;
  2067. }
  2068. // Request message for 'DeleteTargetProject' request.
  2069. message DeleteTargetProjectRequest {
  2070. // Required. The TargetProject name.
  2071. string name = 1 [
  2072. (google.api.field_behavior) = REQUIRED,
  2073. (google.api.resource_reference) = {
  2074. type: "vmmigration.googleapis.com/TargetProject"
  2075. }
  2076. ];
  2077. // Optional. A request ID to identify requests. Specify a unique request ID
  2078. // so that if you must retry your request, the server will know to ignore
  2079. // the request if it has already been completed. The server will guarantee
  2080. // that for at least 60 minutes after the first request.
  2081. //
  2082. // For example, consider a situation where you make an initial request and t
  2083. // he request times out. If you make the request again with the same request
  2084. // ID, the server can check if original operation with the same request ID
  2085. // was received, and if so, will ignore the second request. This prevents
  2086. // clients from accidentally creating duplicate commitments.
  2087. //
  2088. // The request ID must be a valid UUID with the exception that zero UUID is
  2089. // not supported (00000000-0000-0000-0000-000000000000).
  2090. string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
  2091. }
  2092. // Describes message for 'Group' resource. The Group is a collections of several
  2093. // MigratingVms.
  2094. message Group {
  2095. option (google.api.resource) = {
  2096. type: "vmmigration.googleapis.com/Group"
  2097. pattern: "projects/{project}/locations/{location}/groups/{group}"
  2098. };
  2099. // Output only. The Group name.
  2100. string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  2101. // Output only. The create time timestamp.
  2102. google.protobuf.Timestamp create_time = 2
  2103. [(google.api.field_behavior) = OUTPUT_ONLY];
  2104. // Output only. The update time timestamp.
  2105. google.protobuf.Timestamp update_time = 3
  2106. [(google.api.field_behavior) = OUTPUT_ONLY];
  2107. // User-provided description of the group.
  2108. string description = 4;
  2109. // Display name is a user defined name for this group which can be updated.
  2110. string display_name = 5;
  2111. }
  2112. // Request message for 'ListGroups' request.
  2113. message ListGroupsRequest {
  2114. // Required. The parent, which owns this collection of groups.
  2115. string parent = 1 [
  2116. (google.api.field_behavior) = REQUIRED,
  2117. (google.api.resource_reference) = {
  2118. child_type: "vmmigration.googleapis.com/Group"
  2119. }
  2120. ];
  2121. // Optional. The maximum number of groups to return. The service may return
  2122. // fewer than this value. If unspecified, at most 500 groups will be
  2123. // returned. The maximum value is 1000; values above 1000 will be coerced to
  2124. // 1000.
  2125. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
  2126. // Required. A page token, received from a previous `ListGroups` call.
  2127. // Provide this to retrieve the subsequent page.
  2128. //
  2129. // When paginating, all other parameters provided to `ListGroups` must
  2130. // match the call that provided the page token.
  2131. string page_token = 3 [(google.api.field_behavior) = REQUIRED];
  2132. // Optional. The filter request.
  2133. string filter = 4 [(google.api.field_behavior) = OPTIONAL];
  2134. // Optional. the order by fields for the result.
  2135. string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
  2136. }
  2137. // Response message for 'ListGroups' request.
  2138. message ListGroupsResponse {
  2139. // Output only. The list of groups response.
  2140. repeated Group groups = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  2141. // Output only. A token, which can be sent as `page_token` to retrieve the
  2142. // next page. If this field is omitted, there are no subsequent pages.
  2143. string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
  2144. // Output only. Locations that could not be reached.
  2145. repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  2146. }
  2147. // Request message for 'GetGroup' request.
  2148. message GetGroupRequest {
  2149. // Required. The group name.
  2150. string name = 1 [
  2151. (google.api.field_behavior) = REQUIRED,
  2152. (google.api.resource_reference) = {
  2153. type: "vmmigration.googleapis.com/Group"
  2154. }
  2155. ];
  2156. }
  2157. // Request message for 'CreateGroup' request.
  2158. message CreateGroupRequest {
  2159. // Required. The Group's parent.
  2160. string parent = 1 [
  2161. (google.api.field_behavior) = REQUIRED,
  2162. (google.api.resource_reference) = {
  2163. child_type: "vmmigration.googleapis.com/Group"
  2164. }
  2165. ];
  2166. // Required. The group identifier.
  2167. string group_id = 2 [(google.api.field_behavior) = REQUIRED];
  2168. // Required. The create request body.
  2169. Group group = 3 [(google.api.field_behavior) = REQUIRED];
  2170. // A request ID to identify requests. Specify a unique request ID
  2171. // so that if you must retry your request, the server will know to ignore
  2172. // the request if it has already been completed. The server will guarantee
  2173. // that for at least 60 minutes since the first request.
  2174. //
  2175. // For example, consider a situation where you make an initial request and t
  2176. // he request times out. If you make the request again with the same request
  2177. // ID, the server can check if original operation with the same request ID
  2178. // was received, and if so, will ignore the second request. This prevents
  2179. // clients from accidentally creating duplicate commitments.
  2180. //
  2181. // The request ID must be a valid UUID with the exception that zero UUID is
  2182. // not supported (00000000-0000-0000-0000-000000000000).
  2183. string request_id = 4;
  2184. }
  2185. // Update message for 'UpdateGroups' request.
  2186. message UpdateGroupRequest {
  2187. // Field mask is used to specify the fields to be overwritten in the
  2188. // Group resource by the update.
  2189. // The fields specified in the update_mask are relative to the resource, not
  2190. // the full request. A field will be overwritten if it is in the mask. If the
  2191. // user does not provide a mask then all fields will be overwritten.
  2192. google.protobuf.FieldMask update_mask = 1;
  2193. // Required. The update request body.
  2194. Group group = 2 [(google.api.field_behavior) = REQUIRED];
  2195. // A request ID to identify requests. Specify a unique request ID
  2196. // so that if you must retry your request, the server will know to ignore
  2197. // the request if it has already been completed. The server will guarantee
  2198. // that for at least 60 minutes since the first request.
  2199. //
  2200. // For example, consider a situation where you make an initial request and t
  2201. // he request times out. If you make the request again with the same request
  2202. // ID, the server can check if original operation with the same request ID
  2203. // was received, and if so, will ignore the second request. This prevents
  2204. // clients from accidentally creating duplicate commitments.
  2205. //
  2206. // The request ID must be a valid UUID with the exception that zero UUID is
  2207. // not supported (00000000-0000-0000-0000-000000000000).
  2208. string request_id = 3;
  2209. }
  2210. // Request message for 'DeleteGroup' request.
  2211. message DeleteGroupRequest {
  2212. // Required. The Group name.
  2213. string name = 1 [
  2214. (google.api.field_behavior) = REQUIRED,
  2215. (google.api.resource_reference) = {
  2216. type: "vmmigration.googleapis.com/Group"
  2217. }
  2218. ];
  2219. // Optional. A request ID to identify requests. Specify a unique request ID
  2220. // so that if you must retry your request, the server will know to ignore
  2221. // the request if it has already been completed. The server will guarantee
  2222. // that for at least 60 minutes after the first request.
  2223. //
  2224. // For example, consider a situation where you make an initial request and t
  2225. // he request times out. If you make the request again with the same request
  2226. // ID, the server can check if original operation with the same request ID
  2227. // was received, and if so, will ignore the second request. This prevents
  2228. // clients from accidentally creating duplicate commitments.
  2229. //
  2230. // The request ID must be a valid UUID with the exception that zero UUID is
  2231. // not supported (00000000-0000-0000-0000-000000000000).
  2232. string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
  2233. }
  2234. // Request message for 'AddGroupMigration' request.
  2235. message AddGroupMigrationRequest {
  2236. // Required. The full path name of the Group to add to.
  2237. string group = 1 [
  2238. (google.api.field_behavior) = REQUIRED,
  2239. (google.api.resource_reference) = {
  2240. type: "vmmigration.googleapis.com/Group"
  2241. }
  2242. ];
  2243. // The full path name of the MigratingVm to add.
  2244. string migrating_vm = 2 [(google.api.resource_reference) = {
  2245. type: "vmmigration.googleapis.com/MigratingVm"
  2246. }];
  2247. }
  2248. // Response message for 'AddGroupMigration' request.
  2249. message AddGroupMigrationResponse {}
  2250. // Request message for 'RemoveMigration' request.
  2251. message RemoveGroupMigrationRequest {
  2252. // Required. The name of the Group.
  2253. string group = 1 [
  2254. (google.api.field_behavior) = REQUIRED,
  2255. (google.api.resource_reference) = {
  2256. type: "vmmigration.googleapis.com/Group"
  2257. }
  2258. ];
  2259. // The MigratingVm to remove.
  2260. string migrating_vm = 2 [(google.api.resource_reference) = {
  2261. type: "vmmigration.googleapis.com/MigratingVm"
  2262. }];
  2263. }
  2264. // Response message for 'RemoveMigration' request.
  2265. message RemoveGroupMigrationResponse {}
  2266. // Request message for 'CreateCutoverJob' request.
  2267. message CreateCutoverJobRequest {
  2268. // Required. The Cutover's parent.
  2269. string parent = 1 [
  2270. (google.api.field_behavior) = REQUIRED,
  2271. (google.api.resource_reference) = {
  2272. child_type: "vmmigration.googleapis.com/CutoverJob"
  2273. }
  2274. ];
  2275. // Required. The cutover job identifier.
  2276. string cutover_job_id = 2 [(google.api.field_behavior) = REQUIRED];
  2277. // Required. The cutover request body.
  2278. CutoverJob cutover_job = 3 [(google.api.field_behavior) = REQUIRED];
  2279. // A request ID to identify requests. Specify a unique request ID
  2280. // so that if you must retry your request, the server will know to ignore
  2281. // the request if it has already been completed. The server will guarantee
  2282. // that for at least 60 minutes since the first request.
  2283. //
  2284. // For example, consider a situation where you make an initial request and t
  2285. // he request times out. If you make the request again with the same request
  2286. // ID, the server can check if original operation with the same request ID
  2287. // was received, and if so, will ignore the second request. This prevents
  2288. // clients from accidentally creating duplicate commitments.
  2289. //
  2290. // The request ID must be a valid UUID with the exception that zero UUID is
  2291. // not supported (00000000-0000-0000-0000-000000000000).
  2292. string request_id = 4;
  2293. }
  2294. // Request message for 'CancelCutoverJob' request.
  2295. message CancelCutoverJobRequest {
  2296. // Required. The cutover job id
  2297. string name = 1 [
  2298. (google.api.field_behavior) = REQUIRED,
  2299. (google.api.resource_reference) = {
  2300. type: "vmmigration.googleapis.com/CutoverJob"
  2301. }
  2302. ];
  2303. }
  2304. // Response message for 'CancelCutoverJob' request.
  2305. message CancelCutoverJobResponse {}
  2306. // Request message for 'ListCutoverJobsRequest' request.
  2307. message ListCutoverJobsRequest {
  2308. // Required. The parent, which owns this collection of migrating VMs.
  2309. string parent = 1 [
  2310. (google.api.field_behavior) = REQUIRED,
  2311. (google.api.resource_reference) = {
  2312. child_type: "vmmigration.googleapis.com/CutoverJob"
  2313. }
  2314. ];
  2315. // Optional. The maximum number of cutover jobs to return. The service may
  2316. // return fewer than this value. If unspecified, at most 500 cutover jobs will
  2317. // be returned. The maximum value is 1000; values above 1000 will be coerced
  2318. // to 1000.
  2319. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
  2320. // Required. A page token, received from a previous `ListCutoverJobs` call.
  2321. // Provide this to retrieve the subsequent page.
  2322. //
  2323. // When paginating, all other parameters provided to `ListCutoverJobs` must
  2324. // match the call that provided the page token.
  2325. string page_token = 3 [(google.api.field_behavior) = REQUIRED];
  2326. // Optional. The filter request.
  2327. string filter = 4 [(google.api.field_behavior) = OPTIONAL];
  2328. // Optional. the order by fields for the result.
  2329. string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
  2330. }
  2331. // Response message for 'ListCutoverJobs' request.
  2332. message ListCutoverJobsResponse {
  2333. // Output only. The list of cutover jobs response.
  2334. repeated CutoverJob cutover_jobs = 1
  2335. [(google.api.field_behavior) = OUTPUT_ONLY];
  2336. // Output only. A token, which can be sent as `page_token` to retrieve the
  2337. // next page. If this field is omitted, there are no subsequent pages.
  2338. string next_page_token = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
  2339. // Output only. Locations that could not be reached.
  2340. repeated string unreachable = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  2341. }
  2342. // Request message for 'GetCutoverJob' request.
  2343. message GetCutoverJobRequest {
  2344. // Required. The name of the CutoverJob.
  2345. string name = 1 [
  2346. (google.api.field_behavior) = REQUIRED,
  2347. (google.api.resource_reference) = {
  2348. type: "vmmigration.googleapis.com/CutoverJob"
  2349. }
  2350. ];
  2351. }
  2352. // Represents the metadata of the long-running operation.
  2353. message OperationMetadata {
  2354. // Output only. The time the operation was created.
  2355. google.protobuf.Timestamp create_time = 1
  2356. [(google.api.field_behavior) = OUTPUT_ONLY];
  2357. // Output only. The time the operation finished running.
  2358. google.protobuf.Timestamp end_time = 2
  2359. [(google.api.field_behavior) = OUTPUT_ONLY];
  2360. // Output only. Server-defined resource path for the target of the operation.
  2361. string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  2362. // Output only. Name of the verb executed by the operation.
  2363. string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
  2364. // Output only. Human-readable status of the operation, if any.
  2365. string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
  2366. // Output only. Identifies whether the user has requested cancellation
  2367. // of the operation. Operations that have successfully been cancelled
  2368. // have [Operation.error][] value with a
  2369. // [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to
  2370. // `Code.CANCELLED`.
  2371. bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
  2372. // Output only. API version used to start the operation.
  2373. string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
  2374. }
  2375. // Represents migration resource error information that can be used with
  2376. // google.rpc.Status message. MigrationError is used to present the user with
  2377. // error information in migration operations.
  2378. message MigrationError {
  2379. // Represents resource error codes.
  2380. enum ErrorCode {
  2381. // Default value. This value is not used.
  2382. ERROR_CODE_UNSPECIFIED = 0;
  2383. // Migrate for Compute encountered an unknown error.
  2384. UNKNOWN_ERROR = 1;
  2385. // Migrate for Compute encountered an error while validating replication
  2386. // source health.
  2387. SOURCE_VALIDATION_ERROR = 2;
  2388. // Migrate for Compute encountered an error during source data operation.
  2389. SOURCE_REPLICATION_ERROR = 3;
  2390. // Migrate for Compute encountered an error during target data operation.
  2391. TARGET_REPLICATION_ERROR = 4;
  2392. // Migrate for Compute encountered an error during OS adaptation.
  2393. OS_ADAPTATION_ERROR = 5;
  2394. // Migrate for Compute encountered an error in clone operation.
  2395. CLONE_ERROR = 6;
  2396. // Migrate for Compute encountered an error in cutover operation.
  2397. CUTOVER_ERROR = 7;
  2398. // Migrate for Compute encountered an error during utilization report
  2399. // creation.
  2400. UTILIZATION_REPORT_ERROR = 8;
  2401. // Migrate for Compute encountered an error during appliance upgrade.
  2402. APPLIANCE_UPGRADE_ERROR = 9;
  2403. }
  2404. // Output only. The error code.
  2405. ErrorCode code = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  2406. // Output only. The localized error message.
  2407. google.rpc.LocalizedMessage error_message = 2
  2408. [(google.api.field_behavior) = OUTPUT_ONLY];
  2409. // Output only. Suggested action for solving the error.
  2410. google.rpc.LocalizedMessage action_item = 3
  2411. [(google.api.field_behavior) = OUTPUT_ONLY];
  2412. // Output only. URL(s) pointing to additional information on handling the
  2413. // current error.
  2414. repeated google.rpc.Help.Link help_links = 4
  2415. [(google.api.field_behavior) = OUTPUT_ONLY];
  2416. // Output only. The time the error occurred.
  2417. google.protobuf.Timestamp error_time = 5
  2418. [(google.api.field_behavior) = OUTPUT_ONLY];
  2419. }