hub.proto 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704
  1. // Copyright 2021 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.networkconnectivity.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/field_mask.proto";
  22. import "google/protobuf/timestamp.proto";
  23. option csharp_namespace = "Google.Cloud.NetworkConnectivity.V1";
  24. option go_package = "google.golang.org/genproto/googleapis/cloud/networkconnectivity/v1;networkconnectivity";
  25. option java_multiple_files = true;
  26. option java_outer_classname = "HubProto";
  27. option java_package = "com.google.cloud.networkconnectivity.v1";
  28. option php_namespace = "Google\\Cloud\\NetworkConnectivity\\V1";
  29. option ruby_package = "Google::Cloud::NetworkConnectivity::V1";
  30. option (google.api.resource_definition) = {
  31. type: "compute.googleapis.com/VpnTunnel"
  32. pattern: "projects/{project}/regions/{region}/vpnTunnels/{resource_id}"
  33. };
  34. option (google.api.resource_definition) = {
  35. type: "compute.googleapis.com/InterconnectAttachment"
  36. pattern: "projects/{project}/regions/{region}/interconnectAttachments/{resource_id}"
  37. };
  38. option (google.api.resource_definition) = {
  39. type: "compute.googleapis.com/Instance"
  40. pattern: "projects/{project}/zones/{zone}/instances/{instance}"
  41. };
  42. option (google.api.resource_definition) = {
  43. type: "compute.googleapis.com/Network"
  44. pattern: "projects/{project}/global/networks/{resource_id}"
  45. };
  46. // Network Connectivity Center is a hub-and-spoke abstraction for network
  47. // connectivity management in Google Cloud. It reduces operational complexity
  48. // through a simple, centralized connectivity management model.
  49. service HubService {
  50. option (google.api.default_host) = "networkconnectivity.googleapis.com";
  51. option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
  52. // Lists hubs in a given project.
  53. rpc ListHubs(ListHubsRequest) returns (ListHubsResponse) {
  54. option (google.api.http) = {
  55. get: "/v1/{parent=projects/*/locations/global}/hubs"
  56. };
  57. option (google.api.method_signature) = "parent";
  58. }
  59. // Gets details about the specified hub.
  60. rpc GetHub(GetHubRequest) returns (Hub) {
  61. option (google.api.http) = {
  62. get: "/v1/{name=projects/*/locations/global/hubs/*}"
  63. };
  64. option (google.api.method_signature) = "name";
  65. }
  66. // Creates a new hub in the specified project.
  67. rpc CreateHub(CreateHubRequest) returns (google.longrunning.Operation) {
  68. option (google.api.http) = {
  69. post: "/v1/{parent=projects/*/locations/global}/hubs"
  70. body: "hub"
  71. };
  72. option (google.api.method_signature) = "parent,hub,hub_id";
  73. option (google.longrunning.operation_info) = {
  74. response_type: "Hub"
  75. metadata_type: "OperationMetadata"
  76. };
  77. }
  78. // Updates the description and/or labels of the specified hub.
  79. rpc UpdateHub(UpdateHubRequest) returns (google.longrunning.Operation) {
  80. option (google.api.http) = {
  81. patch: "/v1/{hub.name=projects/*/locations/global/hubs/*}"
  82. body: "hub"
  83. };
  84. option (google.api.method_signature) = "hub,update_mask";
  85. option (google.longrunning.operation_info) = {
  86. response_type: "Hub"
  87. metadata_type: "OperationMetadata"
  88. };
  89. }
  90. // Deletes the specified hub.
  91. rpc DeleteHub(DeleteHubRequest) returns (google.longrunning.Operation) {
  92. option (google.api.http) = {
  93. delete: "/v1/{name=projects/*/locations/global/hubs/*}"
  94. };
  95. option (google.api.method_signature) = "name";
  96. option (google.longrunning.operation_info) = {
  97. response_type: "google.protobuf.Empty"
  98. metadata_type: "OperationMetadata"
  99. };
  100. }
  101. // Lists the spokes in the specified project and location.
  102. rpc ListSpokes(ListSpokesRequest) returns (ListSpokesResponse) {
  103. option (google.api.http) = {
  104. get: "/v1/{parent=projects/*/locations/*}/spokes"
  105. };
  106. option (google.api.method_signature) = "parent";
  107. }
  108. // Gets details about the specified spoke.
  109. rpc GetSpoke(GetSpokeRequest) returns (Spoke) {
  110. option (google.api.http) = {
  111. get: "/v1/{name=projects/*/locations/*/spokes/*}"
  112. };
  113. option (google.api.method_signature) = "name";
  114. }
  115. // Creates a spoke in the specified project and location.
  116. rpc CreateSpoke(CreateSpokeRequest) returns (google.longrunning.Operation) {
  117. option (google.api.http) = {
  118. post: "/v1/{parent=projects/*/locations/*}/spokes"
  119. body: "spoke"
  120. };
  121. option (google.api.method_signature) = "parent,spoke,spoke_id";
  122. option (google.longrunning.operation_info) = {
  123. response_type: "Spoke"
  124. metadata_type: "OperationMetadata"
  125. };
  126. }
  127. // Updates the parameters of the specified spoke.
  128. rpc UpdateSpoke(UpdateSpokeRequest) returns (google.longrunning.Operation) {
  129. option (google.api.http) = {
  130. patch: "/v1/{spoke.name=projects/*/locations/*/spokes/*}"
  131. body: "spoke"
  132. };
  133. option (google.api.method_signature) = "spoke,update_mask";
  134. option (google.longrunning.operation_info) = {
  135. response_type: "Spoke"
  136. metadata_type: "OperationMetadata"
  137. };
  138. }
  139. // Deactivates the specified spoke. Deactivating keeps the spoke information
  140. // for future re-activation, but disconnects the Google Cloud network from
  141. // non-Google-Cloud network.
  142. rpc DeactivateSpoke(DeactivateSpokeRequest) returns (google.longrunning.Operation) {
  143. option (google.api.http) = {
  144. post: "/v1/{name=projects/*/locations/*/spokes/*}:deactivate"
  145. body: "*"
  146. };
  147. option (google.api.method_signature) = "name";
  148. option (google.longrunning.operation_info) = {
  149. response_type: "Spoke"
  150. metadata_type: "OperationMetadata"
  151. };
  152. }
  153. // Activates the specified spoke. Activating reconnects the Google Cloud
  154. // network with the non-Google-Cloud network.
  155. rpc ActivateSpoke(ActivateSpokeRequest) returns (google.longrunning.Operation) {
  156. option (google.api.http) = {
  157. post: "/v1/{name=projects/*/locations/*/spokes/*}:activate"
  158. body: "*"
  159. };
  160. option (google.api.method_signature) = "name";
  161. option (google.longrunning.operation_info) = {
  162. response_type: "Spoke"
  163. metadata_type: "OperationMetadata"
  164. };
  165. }
  166. // Deletes the specified spoke.
  167. rpc DeleteSpoke(DeleteSpokeRequest) returns (google.longrunning.Operation) {
  168. option (google.api.http) = {
  169. delete: "/v1/{name=projects/*/locations/*/spokes/*}"
  170. };
  171. option (google.api.method_signature) = "name";
  172. option (google.longrunning.operation_info) = {
  173. response_type: "google.protobuf.Empty"
  174. metadata_type: "OperationMetadata"
  175. };
  176. }
  177. }
  178. // A hub is essentially a collection of spokes. A single hub can contain spokes
  179. // from multiple regions. However, all of a hub's spokes must be associated with
  180. // resources that reside in the same VPC network.
  181. message Hub {
  182. option (google.api.resource) = {
  183. type: "networkconnectivity.googleapis.com/Hub"
  184. pattern: "projects/{project}/locations/global/hubs/{hub}"
  185. };
  186. // Immutable. The name of the hub. Hub names must be unique. They use the
  187. // following form:
  188. // `projects/{project_number}/locations/global/hubs/{hub_id}`
  189. string name = 1 [(google.api.field_behavior) = IMMUTABLE];
  190. // Output only. The time the hub was created.
  191. google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
  192. // Output only. The time the hub was last updated.
  193. google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  194. // Optional labels in key:value format. For more information about labels, see
  195. // [Requirements for
  196. // labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements).
  197. map<string, string> labels = 4;
  198. // An optional description of the hub.
  199. string description = 5;
  200. // Output only. The Google-generated UUID for the hub. This value is unique across all hub
  201. // resources. If a hub is deleted and another with the same name is created,
  202. // the new hub is assigned a different unique_id.
  203. string unique_id = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
  204. // Output only. The current lifecycle state of this hub.
  205. State state = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
  206. }
  207. // The State enum represents the lifecycle stage of a Network Connectivity
  208. // Center resource.
  209. enum State {
  210. // No state information available
  211. STATE_UNSPECIFIED = 0;
  212. // The resource's create operation is in progress
  213. CREATING = 1;
  214. // The resource is active
  215. ACTIVE = 2;
  216. // The resource's Delete operation is in progress
  217. DELETING = 3;
  218. }
  219. // A spoke represents a connection between your Google Cloud network resources
  220. // and a non-Google-Cloud network.
  221. //
  222. // When you create a spoke, you associate it with a hub. You must also identify
  223. // a value for exactly one of the following fields:
  224. //
  225. // * linked_vpn_tunnels
  226. // * linked_interconnect_attachments
  227. // * linked_router_appliance_instances
  228. message Spoke {
  229. option (google.api.resource) = {
  230. type: "networkconnectivity.googleapis.com/Spoke"
  231. pattern: "projects/{project}/locations/{location}/spokes/{spoke}"
  232. };
  233. // Immutable. The name of the spoke. Spoke names must be unique. They use the
  234. // following form:
  235. // `projects/{project_number}/locations/{region}/spokes/{spoke_id}`
  236. string name = 1 [(google.api.field_behavior) = IMMUTABLE];
  237. // Output only. The time the spoke was created.
  238. google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
  239. // Output only. The time the spoke was last updated.
  240. google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  241. // Optional labels in key:value format. For more information about labels, see
  242. // [Requirements for
  243. // labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements).
  244. map<string, string> labels = 4;
  245. // An optional description of the spoke.
  246. string description = 5;
  247. // Immutable. The URI of the hub that this spoke is attached to.
  248. string hub = 6 [
  249. (google.api.field_behavior) = IMMUTABLE,
  250. (google.api.resource_reference) = {
  251. type: "networkconnectivity.googleapis.com/Hub"
  252. }
  253. ];
  254. // VPN tunnels that are associated with the spoke.
  255. LinkedVpnTunnels linked_vpn_tunnels = 17;
  256. // VLAN attachments that are associated with the spoke.
  257. LinkedInterconnectAttachments linked_interconnect_attachments = 18;
  258. // Router appliance instances that are associated with the spoke.
  259. LinkedRouterApplianceInstances linked_router_appliance_instances = 19;
  260. // Output only. The Google-generated UUID for the spoke. This value is unique across all
  261. // spoke resources. If a spoke is deleted and another with the same name is
  262. // created, the new spoke is assigned a different unique_id.
  263. string unique_id = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
  264. // Output only. The current lifecycle state of this spoke.
  265. State state = 15 [(google.api.field_behavior) = OUTPUT_ONLY];
  266. }
  267. // Request for [HubService.ListHubs][google.cloud.networkconnectivity.v1.HubService.ListHubs] method.
  268. message ListHubsRequest {
  269. // Required. The parent resource's name.
  270. string parent = 1 [
  271. (google.api.field_behavior) = REQUIRED,
  272. (google.api.resource_reference) = {
  273. type: "locations.googleapis.com/Location"
  274. }
  275. ];
  276. // The maximum number of results per page that should be returned.
  277. int32 page_size = 2;
  278. // The page token.
  279. string page_token = 3;
  280. // An expression that filters the results listed in the response.
  281. string filter = 4;
  282. // Sort the results by a certain order.
  283. string order_by = 5;
  284. }
  285. // Response for [HubService.ListHubs][google.cloud.networkconnectivity.v1.HubService.ListHubs] method.
  286. message ListHubsResponse {
  287. // The requested hubs.
  288. repeated Hub hubs = 1;
  289. // The next pagination token in the List response. It should be used as
  290. // page_token for the following request. An empty value means no more result.
  291. string next_page_token = 2;
  292. // Locations that could not be reached.
  293. repeated string unreachable = 3;
  294. }
  295. // Request for [HubService.GetHub][google.cloud.networkconnectivity.v1.HubService.GetHub] method.
  296. message GetHubRequest {
  297. // Required. The name of the hub resource to get.
  298. string name = 1 [
  299. (google.api.field_behavior) = REQUIRED,
  300. (google.api.resource_reference) = {
  301. type: "networkconnectivity.googleapis.com/Hub"
  302. }
  303. ];
  304. }
  305. // Request for [HubService.CreateHub][google.cloud.networkconnectivity.v1.HubService.CreateHub] method.
  306. message CreateHubRequest {
  307. // Required. The parent resource.
  308. string parent = 1 [
  309. (google.api.field_behavior) = REQUIRED,
  310. (google.api.resource_reference) = {
  311. type: "locations.googleapis.com/Location"
  312. }
  313. ];
  314. // Optional. A unique identifier for the hub.
  315. string hub_id = 2 [(google.api.field_behavior) = OPTIONAL];
  316. // Required. The initial values for a new hub.
  317. Hub hub = 3 [(google.api.field_behavior) = REQUIRED];
  318. // Optional. A unique request ID (optional). If you specify this ID, you can use it
  319. // in cases when you need to retry your request. When you need to retry, this
  320. // ID lets the server know that it can ignore the request if it has already
  321. // been completed. The server guarantees that for at least 60 minutes after
  322. // the first request.
  323. //
  324. // For example, consider a situation where you make an initial request and
  325. // the request times out. If you make the request again with the same request
  326. // ID, the server can check to see whether the original operation
  327. // was received. If it was, the server ignores the second request. This
  328. // behavior prevents clients from mistakenly creating duplicate commitments.
  329. //
  330. // The request ID must be a valid UUID, with the exception that zero UUID is
  331. // not supported (00000000-0000-0000-0000-000000000000).
  332. string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
  333. }
  334. // Request for [HubService.UpdateHub][google.cloud.networkconnectivity.v1.HubService.UpdateHub] method.
  335. message UpdateHubRequest {
  336. // Optional. In the case of an update to an existing hub, field mask is used to specify
  337. // the fields to be overwritten. The fields specified in the update_mask are
  338. // relative to the resource, not the full request. A field is overwritten if
  339. // it is in the mask. If the user does not provide a mask, then all fields are
  340. // overwritten.
  341. google.protobuf.FieldMask update_mask = 1 [(google.api.field_behavior) = OPTIONAL];
  342. // Required. The state that the hub should be in after the update.
  343. Hub hub = 2 [(google.api.field_behavior) = REQUIRED];
  344. // Optional. A unique request ID (optional). If you specify this ID, you can use it
  345. // in cases when you need to retry your request. When you need to retry, this
  346. // ID lets the server know that it can ignore the request if it has already
  347. // been completed. The server guarantees that for at least 60 minutes after
  348. // the first request.
  349. //
  350. // For example, consider a situation where you make an initial request and
  351. // the request times out. If you make the request again with the same request
  352. // ID, the server can check to see whether the original operation
  353. // was received. If it was, the server ignores the second request. This
  354. // behavior prevents clients from mistakenly creating duplicate commitments.
  355. //
  356. // The request ID must be a valid UUID, with the exception that zero UUID is
  357. // not supported (00000000-0000-0000-0000-000000000000).
  358. string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
  359. }
  360. // The request for [HubService.DeleteHub][google.cloud.networkconnectivity.v1.HubService.DeleteHub].
  361. message DeleteHubRequest {
  362. // Required. The name of the hub to delete.
  363. string name = 1 [
  364. (google.api.field_behavior) = REQUIRED,
  365. (google.api.resource_reference) = {
  366. type: "networkconnectivity.googleapis.com/Hub"
  367. }
  368. ];
  369. // Optional. A unique request ID (optional). If you specify this ID, you can use it
  370. // in cases when you need to retry your request. When you need to retry, this
  371. // ID lets the server know that it can ignore the request if it has already
  372. // been completed. The server guarantees that for at least 60 minutes after
  373. // the first request.
  374. //
  375. // For example, consider a situation where you make an initial request and
  376. // the request times out. If you make the request again with the same request
  377. // ID, the server can check to see whether the original operation
  378. // was received. If it was, the server ignores the second request. This
  379. // behavior prevents clients from mistakenly creating duplicate commitments.
  380. //
  381. // The request ID must be a valid UUID, with the exception that zero UUID is
  382. // not supported (00000000-0000-0000-0000-000000000000).
  383. string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
  384. }
  385. // The request for [HubService.ListSpokes][google.cloud.networkconnectivity.v1.HubService.ListSpokes].
  386. message ListSpokesRequest {
  387. // Required. The parent resource.
  388. string parent = 1 [
  389. (google.api.field_behavior) = REQUIRED,
  390. (google.api.resource_reference) = {
  391. type: "locations.googleapis.com/Location"
  392. }
  393. ];
  394. // The maximum number of results per page that should be returned.
  395. int32 page_size = 2;
  396. // The page token.
  397. string page_token = 3;
  398. // An expression that filters the results listed in the response.
  399. string filter = 4;
  400. // Sort the results by a certain order.
  401. string order_by = 5;
  402. }
  403. // The response for [HubService.ListSpokes][google.cloud.networkconnectivity.v1.HubService.ListSpokes].
  404. message ListSpokesResponse {
  405. // The requested spokes.
  406. repeated Spoke spokes = 1;
  407. // The next pagination token in the List response. It should be used as
  408. // page_token for the following request. An empty value means no more result.
  409. string next_page_token = 2;
  410. // Locations that could not be reached.
  411. repeated string unreachable = 3;
  412. }
  413. // The request for [HubService.GetSpoke][google.cloud.networkconnectivity.v1.HubService.GetSpoke].
  414. message GetSpokeRequest {
  415. // Required. The name of the spoke resource.
  416. string name = 1 [
  417. (google.api.field_behavior) = REQUIRED,
  418. (google.api.resource_reference) = {
  419. type: "networkconnectivity.googleapis.com/Spoke"
  420. }
  421. ];
  422. }
  423. // The request for [HubService.CreateSpoke][google.cloud.networkconnectivity.v1.HubService.CreateSpoke].
  424. message CreateSpokeRequest {
  425. // Required. The parent resource.
  426. string parent = 1 [
  427. (google.api.field_behavior) = REQUIRED,
  428. (google.api.resource_reference) = {
  429. type: "locations.googleapis.com/Location"
  430. }
  431. ];
  432. // Optional. Unique id for the spoke to create.
  433. string spoke_id = 2 [(google.api.field_behavior) = OPTIONAL];
  434. // Required. The initial values for a new spoke.
  435. Spoke spoke = 3 [(google.api.field_behavior) = REQUIRED];
  436. // Optional. A unique request ID (optional). If you specify this ID, you can use it
  437. // in cases when you need to retry your request. When you need to retry, this
  438. // ID lets the server know that it can ignore the request if it has already
  439. // been completed. The server guarantees that for at least 60 minutes after
  440. // the first request.
  441. //
  442. // For example, consider a situation where you make an initial request and
  443. // the request times out. If you make the request again with the same request
  444. // ID, the server can check to see whether the original operation
  445. // was received. If it was, the server ignores the second request. This
  446. // behavior prevents clients from mistakenly creating duplicate commitments.
  447. //
  448. // The request ID must be a valid UUID, with the exception that zero UUID is
  449. // not supported (00000000-0000-0000-0000-000000000000).
  450. string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
  451. }
  452. // Request for [HubService.UpdateSpoke][google.cloud.networkconnectivity.v1.HubService.UpdateSpoke] method.
  453. message UpdateSpokeRequest {
  454. // Optional. In the case of an update to an existing spoke, field mask is used to
  455. // specify the fields to be overwritten. The fields specified in the
  456. // update_mask are relative to the resource, not the full request. A field is
  457. // overwritten if it is in the mask. If the user does not provide a mask, then
  458. // all fields are overwritten.
  459. google.protobuf.FieldMask update_mask = 1 [(google.api.field_behavior) = OPTIONAL];
  460. // Required. The state that the spoke should be in after the update.
  461. Spoke spoke = 2 [(google.api.field_behavior) = REQUIRED];
  462. // Optional. A unique request ID (optional). If you specify this ID, you can use it
  463. // in cases when you need to retry your request. When you need to retry, this
  464. // ID lets the server know that it can ignore the request if it has already
  465. // been completed. The server guarantees that for at least 60 minutes after
  466. // the first request.
  467. //
  468. // For example, consider a situation where you make an initial request and
  469. // the request times out. If you make the request again with the same request
  470. // ID, the server can check to see whether the original operation
  471. // was received. If it was, the server ignores the second request. This
  472. // behavior prevents clients from mistakenly creating duplicate commitments.
  473. //
  474. // The request ID must be a valid UUID, with the exception that zero UUID is
  475. // not supported (00000000-0000-0000-0000-000000000000).
  476. string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
  477. }
  478. // The request for [HubService.DeleteSpoke][google.cloud.networkconnectivity.v1.HubService.DeleteSpoke].
  479. message DeleteSpokeRequest {
  480. // Required. The name of the spoke to delete.
  481. string name = 1 [
  482. (google.api.field_behavior) = REQUIRED,
  483. (google.api.resource_reference) = {
  484. type: "networkconnectivity.googleapis.com/Spoke"
  485. }
  486. ];
  487. // Optional. A unique request ID (optional). If you specify this ID, you can use it
  488. // in cases when you need to retry your request. When you need to retry, this
  489. // ID lets the server know that it can ignore the request if it has already
  490. // been completed. The server guarantees that for at least 60 minutes after
  491. // the first request.
  492. //
  493. // For example, consider a situation where you make an initial request and
  494. // the request times out. If you make the request again with the same request
  495. // ID, the server can check to see whether the original operation
  496. // was received. If it was, the server ignores the second request. This
  497. // behavior prevents clients from mistakenly creating duplicate commitments.
  498. //
  499. // The request ID must be a valid UUID, with the exception that zero UUID is
  500. // not supported (00000000-0000-0000-0000-000000000000).
  501. string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
  502. }
  503. // The request for [HubService.DeactivateSpoke][google.cloud.networkconnectivity.v1.HubService.DeactivateSpoke].
  504. message DeactivateSpokeRequest {
  505. // Required. The name of the spoke to deactivate.
  506. string name = 1 [
  507. (google.api.field_behavior) = REQUIRED,
  508. (google.api.resource_reference) = {
  509. type: "networkconnectivity.googleapis.com/Spoke"
  510. }
  511. ];
  512. // Optional. A unique request ID (optional). If you specify this ID, you can use it
  513. // in cases when you need to retry your request. When you need to retry, this
  514. // ID lets the server know that it can ignore the request if it has already
  515. // been completed. The server guarantees that for at least 60 minutes after
  516. // the first request.
  517. //
  518. // For example, consider a situation where you make an initial request and
  519. // the request times out. If you make the request again with the same request
  520. // ID, the server can check to see whether the original operation
  521. // was received. If it was, the server ignores the second request. This
  522. // behavior prevents clients from mistakenly creating duplicate commitments.
  523. //
  524. // The request ID must be a valid UUID, with the exception that zero UUID is
  525. // not supported (00000000-0000-0000-0000-000000000000).
  526. string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
  527. }
  528. // The request for [HubService.ActivateSpoke][google.cloud.networkconnectivity.v1.HubService.ActivateSpoke].
  529. message ActivateSpokeRequest {
  530. // Required. The name of the spoke to activate.
  531. string name = 1 [
  532. (google.api.field_behavior) = REQUIRED,
  533. (google.api.resource_reference) = {
  534. type: "networkconnectivity.googleapis.com/Spoke"
  535. }
  536. ];
  537. // Optional. A unique request ID (optional). If you specify this ID, you can use it
  538. // in cases when you need to retry your request. When you need to retry, this
  539. // ID lets the server know that it can ignore the request if it has already
  540. // been completed. The server guarantees that for at least 60 minutes after
  541. // the first request.
  542. //
  543. // For example, consider a situation where you make an initial request and
  544. // the request times out. If you make the request again with the same request
  545. // ID, the server can check to see whether the original operation
  546. // was received. If it was, the server ignores the second request. This
  547. // behavior prevents clients from mistakenly creating duplicate commitments.
  548. //
  549. // The request ID must be a valid UUID, with the exception that zero UUID is
  550. // not supported (00000000-0000-0000-0000-000000000000).
  551. string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
  552. }
  553. // A collection of Cloud VPN tunnel resources. These resources should be
  554. // redundant HA VPN tunnels that all advertise the same prefixes to Google
  555. // Cloud. Alternatively, in a passive/active configuration, all tunnels
  556. // should be capable of advertising the same prefixes.
  557. message LinkedVpnTunnels {
  558. // The URIs of linked VPN tunnel resources.
  559. repeated string uris = 1 [(google.api.resource_reference) = {
  560. type: "compute.googleapis.com/VpnTunnel"
  561. }];
  562. // A value that controls whether site-to-site data transfer is enabled for
  563. // these resources. If true, routes are propagated between the spoke
  564. // associated with these resources and other spokes in the hub that have data
  565. // transfer enabled. If false, the spoke associated with these resources
  566. // provides connectivity only between the external site and Google Cloud. In
  567. // regions where data transfer is unsupported, you cannot set this field
  568. // to true.
  569. bool site_to_site_data_transfer = 2;
  570. }
  571. // A collection of VLAN attachment resources. These resources should
  572. // be redundant attachments that all advertise the same prefixes to Google
  573. // Cloud. Alternatively, in active/passive configurations, all attachments
  574. // should be capable of advertising the same prefixes.
  575. message LinkedInterconnectAttachments {
  576. // The URIs of linked interconnect attachment resources
  577. repeated string uris = 1 [(google.api.resource_reference) = {
  578. type: "compute.googleapis.com/InterconnectAttachment"
  579. }];
  580. // A value that controls whether site-to-site data transfer is enabled for
  581. // these resources. If true, routes are propagated between the spoke
  582. // associated with these resources and other spokes in the hub that have data
  583. // transfer enabled. If false, the spoke associated with these resources
  584. // provides connectivity only between the external site and Google Cloud. In
  585. // regions where data transfer is unsupported, you cannot set this field
  586. // to true.
  587. bool site_to_site_data_transfer = 2;
  588. }
  589. // A collection of router appliance instances. If you have multiple router
  590. // appliance instances connected to the same site, they should all be attached
  591. // to the same spoke.
  592. message LinkedRouterApplianceInstances {
  593. // The list of router appliance instances.
  594. repeated RouterApplianceInstance instances = 1;
  595. // A value that controls whether site-to-site data transfer is enabled for
  596. // these resources. If true, routes are propagated between the spoke
  597. // associated with these resources and other spokes in the hub that have data
  598. // transfer enabled. If false, the spoke associated with these resources
  599. // provides connectivity only between the external site and Google Cloud. In
  600. // regions where data transfer is unsupported, you cannot set this field
  601. // to true.
  602. bool site_to_site_data_transfer = 2;
  603. }
  604. // A router appliance instance is a Compute Engine virtual machine (VM) instance
  605. // that acts as a BGP speaker. A router appliance instance is specified by the
  606. // URI of the VM and the internal IP address of one of the VM's network
  607. // interfaces.
  608. message RouterApplianceInstance {
  609. // The URI of the VM.
  610. string virtual_machine = 1 [(google.api.resource_reference) = {
  611. type: "compute.googleapis.com/Instance"
  612. }];
  613. // The IP address on the VM to use for peering.
  614. string ip_address = 3;
  615. }