xref: /aosp_15_r20/external/googleapis/google/cloud/vmwareengine/v1/vmwareengine_resources.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1// Copyright 2023 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.cloud.vmwareengine.v1;
18
19import "google/api/field_behavior.proto";
20import "google/api/resource.proto";
21import "google/protobuf/timestamp.proto";
22
23option csharp_namespace = "Google.Cloud.VmwareEngine.V1";
24option go_package = "cloud.google.com/go/vmwareengine/apiv1/vmwareenginepb;vmwareenginepb";
25option java_multiple_files = true;
26option java_outer_classname = "VmwareengineResourcesProto";
27option java_package = "com.google.cloud.vmwareengine.v1";
28option php_namespace = "Google\\Cloud\\VmwareEngine\\V1";
29option ruby_package = "Google::Cloud::VmwareEngine::V1";
30
31// Network configuration in the consumer project
32// with which the peering has to be done.
33message NetworkConfig {
34  // Required. Management CIDR used by VMware management appliances.
35  string management_cidr = 4 [(google.api.field_behavior) = REQUIRED];
36
37  // Optional. The relative resource name of the VMware Engine network attached
38  // to the private cloud. Specify the name in the following form:
39  // `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
40  // where `{project}` can either be a project number or a project ID.
41  string vmware_engine_network = 5 [
42    (google.api.field_behavior) = OPTIONAL,
43    (google.api.resource_reference) = {
44      type: "vmwareengine.googleapis.com/VmwareEngineNetwork"
45    }
46  ];
47
48  // Output only. The canonical name of the VMware Engine network in the form:
49  // `projects/{project_number}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
50  string vmware_engine_network_canonical = 6 [
51    (google.api.field_behavior) = OUTPUT_ONLY,
52    (google.api.resource_reference) = {
53      type: "vmwareengine.googleapis.com/VmwareEngineNetwork"
54    }
55  ];
56
57  // Output only. The IP address layout version of the management IP address
58  // range. Possible versions include:
59  // * `managementIpAddressLayoutVersion=1`: Indicates the legacy IP address
60  // layout used by some existing private clouds. This is no longer supported
61  // for new private clouds as it does not support all features.
62  // * `managementIpAddressLayoutVersion=2`: Indicates the latest IP address
63  // layout used by all newly created private clouds. This version supports all
64  // current features.
65  int32 management_ip_address_layout_version = 8
66      [(google.api.field_behavior) = OUTPUT_ONLY];
67
68  // Output only. DNS Server IP of the Private Cloud.
69  // All DNS queries can be forwarded to this address for name resolution of
70  // Private Cloud's management entities like vCenter, NSX-T Manager and
71  // ESXi hosts.
72  string dns_server_ip = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
73}
74
75// Information about the type and number of nodes associated with the cluster.
76message NodeTypeConfig {
77  // Required. The number of nodes of this type in the cluster
78  int32 node_count = 1 [(google.api.field_behavior) = REQUIRED];
79
80  // Optional. Customized number of cores available to each node of the type.
81  // This number must always be one of `nodeType.availableCustomCoreCounts`.
82  // If zero is provided max value from `nodeType.availableCustomCoreCounts`
83  // will be used.
84  int32 custom_core_count = 2 [(google.api.field_behavior) = OPTIONAL];
85}
86
87// Configuration of a stretched cluster.
88message StretchedClusterConfig {
89  // Required. Zone that will remain operational when connection between the two
90  // zones is lost. Specify the resource name of a zone that belongs to the
91  // region of the private cloud. For example:
92  // `projects/{project}/locations/europe-west3-a` where `{project}` can either
93  // be a project number or a project ID.
94  string preferred_location = 1 [
95    (google.api.field_behavior) = REQUIRED,
96    (google.api.resource_reference) = {
97      type: "locations.googleapis.com/Location"
98    }
99  ];
100
101  // Required. Additional zone for a higher level of availability and load
102  // balancing. Specify the resource name of a zone that belongs to the region
103  // of the private cloud. For example:
104  // `projects/{project}/locations/europe-west3-b` where `{project}` can either
105  // be a project number or a project ID.
106  string secondary_location = 2 [
107    (google.api.field_behavior) = REQUIRED,
108    (google.api.resource_reference) = {
109      type: "locations.googleapis.com/Location"
110    }
111  ];
112}
113
114// Represents a private cloud resource. Private clouds of type `STANDARD` and
115// `TIME_LIMITED` are zonal resources, `STRETCHED` private clouds are
116// regional.
117message PrivateCloud {
118  option (google.api.resource) = {
119    type: "vmwareengine.googleapis.com/PrivateCloud"
120    pattern: "projects/{project}/locations/{location}/privateClouds/{private_cloud}"
121  };
122
123  // Enum State defines possible states of private clouds.
124  enum State {
125    // The default value. This value should never be used.
126    STATE_UNSPECIFIED = 0;
127
128    // The private cloud is ready.
129    ACTIVE = 1;
130
131    // The private cloud is being created.
132    CREATING = 2;
133
134    // The private cloud is being updated.
135    UPDATING = 3;
136
137    // The private cloud is in failed state.
138    FAILED = 5;
139
140    // The private cloud is scheduled for deletion. The deletion process can be
141    // cancelled by using the corresponding undelete method.
142    DELETED = 6;
143
144    // The private cloud is irreversibly deleted and is being removed from the
145    // system.
146    PURGING = 7;
147  }
148
149  // Management cluster configuration.
150  message ManagementCluster {
151    // Required. The user-provided identifier of the new `Cluster`.
152    // The identifier must meet the following requirements:
153    //
154    // * Only contains 1-63 alphanumeric characters and hyphens
155    // * Begins with an alphabetical character
156    // * Ends with a non-hyphen character
157    // * Not formatted as a UUID
158    // * Complies with [RFC
159    // 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)
160    string cluster_id = 1 [(google.api.field_behavior) = REQUIRED];
161
162    // Required. The map of cluster node types in this cluster, where the key is
163    // canonical identifier of the node type (corresponds to the `NodeType`).
164    map<string, NodeTypeConfig> node_type_configs = 7
165        [(google.api.field_behavior) = REQUIRED];
166
167    // Optional. Configuration of a stretched cluster. Required for STRETCHED
168    // private clouds.
169    StretchedClusterConfig stretched_cluster_config = 8
170        [(google.api.field_behavior) = OPTIONAL];
171  }
172
173  // Enum Type defines private cloud type.
174  enum Type {
175    // Standard private is a zonal resource, with 3+ nodes. Default type.
176    STANDARD = 0;
177
178    // Time limited private cloud is a zonal resource, can have only 1 node and
179    // has limited life span. Will be deleted after defined period of time,
180    // can be converted into standard private cloud by expanding it up to 3
181    // or more nodes.
182    TIME_LIMITED = 1;
183
184    // Stretched private cloud is a regional resource with redundancy,
185    // with a minimum of 6 nodes, nodes count has to be even.
186    STRETCHED = 2;
187  }
188
189  // Output only. The resource name of this private cloud.
190  // Resource names are schemeless URIs that follow the conventions in
191  // https://cloud.google.com/apis/design/resource_names.
192  // For example:
193  // `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
194  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
195
196  // Output only. Creation time of this resource.
197  google.protobuf.Timestamp create_time = 2
198      [(google.api.field_behavior) = OUTPUT_ONLY];
199
200  // Output only. Last update time of this resource.
201  google.protobuf.Timestamp update_time = 3
202      [(google.api.field_behavior) = OUTPUT_ONLY];
203
204  // Output only. Time when the resource was scheduled for deletion.
205  google.protobuf.Timestamp delete_time = 4
206      [(google.api.field_behavior) = OUTPUT_ONLY];
207
208  // Output only. Time when the resource will be irreversibly deleted.
209  google.protobuf.Timestamp expire_time = 5
210      [(google.api.field_behavior) = OUTPUT_ONLY];
211
212  // Output only. State of the resource. New values may be added to this enum
213  // when appropriate.
214  State state = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
215
216  // Required. Network configuration of the private cloud.
217  NetworkConfig network_config = 9 [(google.api.field_behavior) = REQUIRED];
218
219  // Required. Input only. The management cluster for this private cloud.
220  // This field is required during creation of the private cloud to provide
221  // details for the default cluster.
222  //
223  // The following fields can't be changed after private cloud creation:
224  // `ManagementCluster.clusterId`, `ManagementCluster.nodeTypeId`.
225  ManagementCluster management_cluster = 10 [
226    (google.api.field_behavior) = INPUT_ONLY,
227    (google.api.field_behavior) = REQUIRED
228  ];
229
230  // User-provided description for this private cloud.
231  string description = 11;
232
233  // Output only. HCX appliance.
234  Hcx hcx = 17 [(google.api.field_behavior) = OUTPUT_ONLY];
235
236  // Output only. NSX appliance.
237  Nsx nsx = 18 [(google.api.field_behavior) = OUTPUT_ONLY];
238
239  // Output only. Vcenter appliance.
240  Vcenter vcenter = 19 [(google.api.field_behavior) = OUTPUT_ONLY];
241
242  // Output only. System-generated unique identifier for the resource.
243  string uid = 20 [(google.api.field_behavior) = OUTPUT_ONLY];
244
245  // Optional. Type of the private cloud. Defaults to STANDARD.
246  Type type = 22 [(google.api.field_behavior) = OPTIONAL];
247}
248
249// A cluster in a private cloud.
250message Cluster {
251  option (google.api.resource) = {
252    type: "vmwareengine.googleapis.com/Cluster"
253    pattern: "projects/{project}/locations/{location}/privateClouds/{private_cloud}/clusters/{cluster}"
254  };
255
256  // Enum State defines possible states of private cloud clusters.
257  enum State {
258    // The default value. This value should never be used.
259    STATE_UNSPECIFIED = 0;
260
261    // The Cluster is operational and can be used by the user.
262    ACTIVE = 1;
263
264    // The Cluster is being deployed.
265    CREATING = 2;
266
267    // Adding or removing of a node to the cluster, any other cluster specific
268    // updates.
269    UPDATING = 3;
270
271    // The Cluster is being deleted.
272    DELETING = 4;
273
274    // The Cluster is undergoing maintenance, for example: a failed node is
275    // getting replaced.
276    REPAIRING = 5;
277  }
278
279  // Output only. The resource name of this cluster.
280  // Resource names are schemeless URIs that follow the conventions in
281  // https://cloud.google.com/apis/design/resource_names.
282  // For example:
283  // `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/clusters/my-cluster`
284  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
285
286  // Output only. Creation time of this resource.
287  google.protobuf.Timestamp create_time = 2
288      [(google.api.field_behavior) = OUTPUT_ONLY];
289
290  // Output only. Last update time of this resource.
291  google.protobuf.Timestamp update_time = 3
292      [(google.api.field_behavior) = OUTPUT_ONLY];
293
294  // Output only. State of the resource.
295  State state = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
296
297  // Output only. True if the cluster is a management cluster; false otherwise.
298  // There can only be one management cluster in a private cloud
299  // and it has to be the first one.
300  bool management = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
301
302  // Output only. System-generated unique identifier for the resource.
303  string uid = 14 [(google.api.field_behavior) = OUTPUT_ONLY];
304
305  // Required. The map of cluster node types in this cluster, where the key is
306  // canonical identifier of the node type (corresponds to the `NodeType`).
307  map<string, NodeTypeConfig> node_type_configs = 16
308      [(google.api.field_behavior) = REQUIRED];
309
310  // Optional. Configuration of a stretched cluster. Required for clusters that
311  // belong to a STRETCHED private cloud.
312  StretchedClusterConfig stretched_cluster_config = 17
313      [(google.api.field_behavior) = OPTIONAL];
314}
315
316// Node in a cluster.
317message Node {
318  option (google.api.resource) = {
319    type: "vmwareengine.googleapis.com/Node"
320    pattern: "projects/{project}/locations/{location}/privateClouds/{private_cloud}/clusters/{cluster}/nodes/{node}"
321  };
322
323  // Enum State defines possible states of a node in a cluster.
324  enum State {
325    // The default value. This value should never be used.
326    STATE_UNSPECIFIED = 0;
327
328    // Node is operational and can be used by the user.
329    ACTIVE = 1;
330
331    // Node is being provisioned.
332    CREATING = 2;
333
334    // Node is in a failed state.
335    FAILED = 3;
336
337    // Node is undergoing maintenance, e.g.: during private cloud upgrade.
338    UPGRADING = 4;
339  }
340
341  // Output only. The resource name of this node.
342  // Resource names are schemeless URIs that follow the conventions in
343  // https://cloud.google.com/apis/design/resource_names.
344  // For example:
345  // projects/my-project/locations/us-central1-a/privateClouds/my-cloud/clusters/my-cluster/nodes/my-node
346  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
347
348  // Output only. Fully qualified domain name of the node.
349  string fqdn = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
350
351  // Output only. Internal IP address of the node.
352  string internal_ip = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
353
354  // Output only. The canonical identifier of the node type (corresponds to the
355  // `NodeType`).
356  // For example: standard-72.
357  string node_type_id = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
358
359  // Output only. The version number of the VMware ESXi
360  // management component in this cluster.
361  string version = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
362
363  // Output only. Customized number of cores
364  int64 custom_core_count = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
365
366  // Output only. The state of the appliance.
367  State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
368}
369
370// Represents an allocated external IP address and its corresponding internal IP
371// address in a private cloud.
372message ExternalAddress {
373  option (google.api.resource) = {
374    type: "vmwareengine.googleapis.com/ExternalAddress"
375    pattern: "projects/{project}/locations/{location}/privateClouds/{private_cloud}/externalAddresses/{external_address}"
376  };
377
378  // Enum State defines possible states of external addresses.
379  enum State {
380    // The default value. This value should never be used.
381    STATE_UNSPECIFIED = 0;
382
383    // The address is ready.
384    ACTIVE = 1;
385
386    // The address is being created.
387    CREATING = 2;
388
389    // The address is being updated.
390    UPDATING = 3;
391
392    // The address is being deleted.
393    DELETING = 4;
394  }
395
396  // Output only. The resource name of this external IP address.
397  // Resource names are schemeless URIs that follow the conventions in
398  // https://cloud.google.com/apis/design/resource_names.
399  // For example:
400  // `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/externalAddresses/my-address`
401  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
402
403  // Output only. Creation time of this resource.
404  google.protobuf.Timestamp create_time = 2
405      [(google.api.field_behavior) = OUTPUT_ONLY];
406
407  // Output only. Last update time of this resource.
408  google.protobuf.Timestamp update_time = 3
409      [(google.api.field_behavior) = OUTPUT_ONLY];
410
411  // The internal IP address of a workload VM.
412  string internal_ip = 6;
413
414  // Output only. The external IP address of a workload VM.
415  string external_ip = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
416
417  // Output only. The state of the resource.
418  State state = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
419
420  // Output only. System-generated unique identifier for the resource.
421  string uid = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
422
423  // User-provided description for this resource.
424  string description = 11;
425}
426
427// Subnet in a private cloud. Either `management` subnets (such as vMotion) that
428// are read-only, or `userDefined`, which can also be updated.
429message Subnet {
430  option (google.api.resource) = {
431    type: "vmwareengine.googleapis.com/Subnet"
432    pattern: "projects/{project}/locations/{location}/privateClouds/{private_cloud}/subnets/{subnet}"
433  };
434
435  // Defines possible states of subnets.
436  enum State {
437    // The default value. This value should never be used.
438    STATE_UNSPECIFIED = 0;
439
440    // The subnet is ready.
441    ACTIVE = 1;
442
443    // The subnet is being created.
444    CREATING = 2;
445
446    // The subnet is being updated.
447    UPDATING = 3;
448
449    // The subnet is being deleted.
450    DELETING = 4;
451
452    // Changes requested in the last operation are being propagated.
453    RECONCILING = 5;
454
455    // Last operation on the subnet did not succeed. Subnet's payload is
456    // reverted back to its most recent working state.
457    FAILED = 6;
458  }
459
460  // Output only. The resource name of this subnet.
461  // Resource names are schemeless URIs that follow the conventions in
462  // https://cloud.google.com/apis/design/resource_names.
463  // For example:
464  // `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/subnets/my-subnet`
465  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
466
467  // The IP address range of the subnet in CIDR format '10.0.0.0/24'.
468  string ip_cidr_range = 7;
469
470  // The IP address of the gateway of this subnet.
471  // Must fall within the IP prefix defined above.
472  string gateway_ip = 8;
473
474  // Output only. The type of the subnet. For example "management" or
475  // "userDefined".
476  string type = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
477
478  // Output only. The state of the resource.
479  State state = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
480
481  // Output only. VLAN ID of the VLAN on which the subnet is configured
482  int32 vlan_id = 16 [(google.api.field_behavior) = OUTPUT_ONLY];
483}
484
485// External access firewall rules for filtering incoming traffic destined to
486// `ExternalAddress` resources.
487message ExternalAccessRule {
488  option (google.api.resource) = {
489    type: "vmwareengine.googleapis.com/ExternalAccessRule"
490    pattern: "projects/{project}/locations/{location}/networkPolicies/{network_policy}/externalAccessRules/{external_access_rule}"
491  };
492
493  // Action determines whether the external access rule permits or blocks
494  // traffic, subject to the other components of the rule matching the traffic.
495  enum Action {
496    // Defaults to allow.
497    ACTION_UNSPECIFIED = 0;
498
499    // Allows connections that match the other specified components.
500    ALLOW = 1;
501
502    // Blocks connections that match the other specified components.
503    DENY = 2;
504  }
505
506  // An IP range provided in any one of the supported formats.
507  message IpRange {
508    oneof ip_range {
509      // A single IP address. For example: `10.0.0.5`.
510      string ip_address = 1;
511
512      // An IP address range in the CIDR format. For example: `10.0.0.0/24`.
513      string ip_address_range = 2;
514
515      // The name of an `ExternalAddress` resource. The external address must
516      // have been reserved in the scope of this external access rule's parent
517      // network policy.  Provide the external address name in the form of
518      // `projects/{project}/locations/{location}/privateClouds/{private_cloud}/externalAddresses/{external_address}`.
519      // For example:
520      // `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/externalAddresses/my-address`.
521      string external_address = 3 [(google.api.resource_reference) = {
522        type: "vmwareengine.googleapis.com/ExternalAddress"
523      }];
524    }
525  }
526
527  // Defines possible states of external access firewall rules.
528  enum State {
529    // The default value. This value is used if the state is omitted.
530    STATE_UNSPECIFIED = 0;
531
532    // The rule is ready.
533    ACTIVE = 1;
534
535    // The rule is being created.
536    CREATING = 2;
537
538    // The rule is being updated.
539    UPDATING = 3;
540
541    // The rule is being deleted.
542    DELETING = 4;
543  }
544
545  // Output only. The resource name of this external access rule.
546  // Resource names are schemeless URIs that follow the conventions in
547  // https://cloud.google.com/apis/design/resource_names.
548  // For example:
549  // `projects/my-project/locations/us-central1/networkPolicies/my-policy/externalAccessRules/my-rule`
550  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
551
552  // Output only. Creation time of this resource.
553  google.protobuf.Timestamp create_time = 2
554      [(google.api.field_behavior) = OUTPUT_ONLY];
555
556  // Output only. Last update time of this resource.
557  google.protobuf.Timestamp update_time = 3
558      [(google.api.field_behavior) = OUTPUT_ONLY];
559
560  // User-provided description for this external access rule.
561  string description = 5;
562
563  // External access rule priority, which determines the external access rule to
564  // use when multiple rules apply. If multiple rules have the same priority,
565  // their ordering is non-deterministic. If specific ordering is required,
566  // assign unique priorities to enforce such ordering. The external access rule
567  // priority is an integer from 100 to 4096, both inclusive. Lower integers
568  // indicate higher precedence. For example, a rule with priority `100` has
569  // higher precedence than a rule with priority `101`.
570  int32 priority = 6;
571
572  // The action that the external access rule performs.
573  Action action = 7;
574
575  // The IP protocol to which the external access rule applies. This value can
576  // be one of the following three protocol strings (not case-sensitive):
577  // `tcp`, `udp`, or `icmp`.
578  string ip_protocol = 8;
579
580  // If source ranges are specified, the external access rule applies only to
581  // traffic that has a source IP address in these ranges. These ranges can
582  // either be expressed in the CIDR format or as an IP address. As only inbound
583  // rules are supported, `ExternalAddress` resources cannot be the source IP
584  // addresses of an external access rule. To match all source addresses,
585  // specify `0.0.0.0/0`.
586  repeated IpRange source_ip_ranges = 9;
587
588  // A list of source ports to which the external access rule applies. This
589  // field is only applicable for the UDP or TCP protocol.
590  // Each entry must be either an integer or a range. For example: `["22"]`,
591  // `["80","443"]`, or `["12345-12349"]`. To match all source ports, specify
592  // `["0-65535"]`.
593  repeated string source_ports = 10;
594
595  // If destination ranges are specified, the external access rule applies only
596  // to the traffic that has a destination IP address in these ranges. The
597  // specified IP addresses must have reserved external IP addresses in the
598  // scope of the parent network policy. To match all external IP addresses in
599  // the scope of the parent network policy, specify `0.0.0.0/0`. To match a
600  // specific external IP address, specify it using the
601  // `IpRange.external_address` property.
602  repeated IpRange destination_ip_ranges = 11;
603
604  // A list of destination ports to which the external access rule applies. This
605  // field is only applicable for the UDP or TCP protocol.
606  // Each entry must be either an integer or a range. For example: `["22"]`,
607  // `["80","443"]`, or `["12345-12349"]`. To match all destination ports,
608  // specify `["0-65535"]`.
609  repeated string destination_ports = 12;
610
611  // Output only. The state of the resource.
612  State state = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
613
614  // Output only. System-generated unique identifier for the resource.
615  string uid = 14 [(google.api.field_behavior) = OUTPUT_ONLY];
616}
617
618// Logging server to receive vCenter or ESXi logs.
619message LoggingServer {
620  option (google.api.resource) = {
621    type: "vmwareengine.googleapis.com/LoggingServer"
622    pattern: "projects/{project}/locations/{location}/privateClouds/{private_cloud}/loggingServers/{logging_server}"
623  };
624
625  // Defines possible protocols used to send logs to
626  // a logging server.
627  enum Protocol {
628    // Unspecified communications protocol. This is the default value.
629    PROTOCOL_UNSPECIFIED = 0;
630
631    // UDP
632    UDP = 1;
633
634    // TCP
635    TCP = 2;
636  }
637
638  // Defines possible types of component that produces logs.
639  enum SourceType {
640    // The default value. This value should never be used.
641    SOURCE_TYPE_UNSPECIFIED = 0;
642
643    // Logs produced by ESXI hosts
644    ESXI = 1;
645
646    // Logs produced by vCenter server
647    VCSA = 2;
648  }
649
650  // Output only. The resource name of this logging server.
651  // Resource names are schemeless URIs that follow the conventions in
652  // https://cloud.google.com/apis/design/resource_names.
653  // For example:
654  // `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/loggingServers/my-logging-server`
655  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
656
657  // Output only. Creation time of this resource.
658  google.protobuf.Timestamp create_time = 2
659      [(google.api.field_behavior) = OUTPUT_ONLY];
660
661  // Output only. Last update time of this resource.
662  google.protobuf.Timestamp update_time = 3
663      [(google.api.field_behavior) = OUTPUT_ONLY];
664
665  // Required. Fully-qualified domain name (FQDN) or IP Address of the logging
666  // server.
667  string hostname = 5 [(google.api.field_behavior) = REQUIRED];
668
669  // Required. Port number at which the logging server receives logs.
670  int32 port = 7 [(google.api.field_behavior) = REQUIRED];
671
672  // Required. Protocol used by vCenter to send logs to a logging server.
673  Protocol protocol = 6 [(google.api.field_behavior) = REQUIRED];
674
675  // Required. The type of component that produces logs that will be forwarded
676  // to this logging server.
677  SourceType source_type = 10 [(google.api.field_behavior) = REQUIRED];
678
679  // Output only. System-generated unique identifier for the resource.
680  string uid = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
681}
682
683// Describes node type.
684message NodeType {
685  option (google.api.resource) = {
686    type: "vmwareengine.googleapis.com/NodeType"
687    pattern: "projects/{project}/locations/{location}/nodeTypes/{node_type}"
688  };
689
690  // Enum Kind defines possible types of a NodeType.
691  enum Kind {
692    // The default value. This value should never be used.
693    KIND_UNSPECIFIED = 0;
694
695    // Standard HCI node.
696    STANDARD = 1;
697
698    // Storage only Node.
699    STORAGE_ONLY = 2;
700  }
701
702  // Capability of a node type.
703  enum Capability {
704    // The default value. This value is used if the capability is omitted or
705    // unknown.
706    CAPABILITY_UNSPECIFIED = 0;
707
708    // This node type supports stretch clusters.
709    STRETCHED_CLUSTERS = 1;
710  }
711
712  // Output only. The resource name of this node type.
713  // Resource names are schemeless URIs that follow the conventions in
714  // https://cloud.google.com/apis/design/resource_names.
715  // For example:
716  // `projects/my-proj/locations/us-central1-a/nodeTypes/standard-72`
717  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
718
719  // Output only. The canonical identifier of the node type
720  // (corresponds to the `NodeType`). For example: standard-72.
721  string node_type_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
722
723  // Output only. The friendly name for this node type.
724  // For example: ve1-standard-72
725  string display_name = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
726
727  // Output only. The total number of virtual CPUs in a single node.
728  int32 virtual_cpu_count = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
729
730  // Output only. The total number of CPU cores in a single node.
731  int32 total_core_count = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
732
733  // Output only. The amount of physical memory available, defined in GB.
734  int32 memory_gb = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
735
736  // Output only. The amount of storage available, defined in GB.
737  int32 disk_size_gb = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
738
739  // Output only. List of possible values of custom core count.
740  repeated int32 available_custom_core_counts = 11
741      [(google.api.field_behavior) = OUTPUT_ONLY];
742
743  // Output only. The type of the resource.
744  Kind kind = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
745
746  // Output only. Families of the node type.
747  // For node types to be in the same cluster
748  // they must share at least one element in the `families`.
749  repeated string families = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
750
751  // Output only. Capabilities of this node type.
752  repeated Capability capabilities = 14
753      [(google.api.field_behavior) = OUTPUT_ONLY];
754}
755
756// Credentials for a private cloud.
757message Credentials {
758  // Initial username.
759  string username = 1;
760
761  // Initial password.
762  string password = 2;
763}
764
765// HCX activation key. A default key is created during
766// private cloud provisioning, but this behavior is subject to change
767// and you should always verify active keys.
768// Use
769// [VmwareEngine.ListHcxActivationKeys][google.cloud.vmwareengine.v1.VmwareEngine.ListHcxActivationKeys]
770// to retrieve existing keys and
771// [VmwareEngine.CreateHcxActivationKey][google.cloud.vmwareengine.v1.VmwareEngine.CreateHcxActivationKey]
772// to create new ones.
773message HcxActivationKey {
774  option (google.api.resource) = {
775    type: "vmwareengine.googleapis.com/HcxActivationKey"
776    pattern: "projects/{project}/locations/{location}/privateClouds/{private_cloud}/hcxActivationKeys/{hcx_activation_key}"
777  };
778
779  // State of HCX activation key
780  enum State {
781    // Unspecified state.
782    STATE_UNSPECIFIED = 0;
783
784    // State of a newly generated activation key.
785    AVAILABLE = 1;
786
787    // State of key when it has been used to activate HCX appliance.
788    CONSUMED = 2;
789
790    // State of key when it is being created.
791    CREATING = 3;
792  }
793
794  // Output only. The resource name of this HcxActivationKey.
795  // Resource names are schemeless URIs that follow the conventions in
796  // https://cloud.google.com/apis/design/resource_names.
797  // For example:
798  // `projects/my-project/locations/us-central1/privateClouds/my-cloud/hcxActivationKeys/my-key`
799  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
800
801  // Output only. Creation time of HCX activation key.
802  google.protobuf.Timestamp create_time = 2
803      [(google.api.field_behavior) = OUTPUT_ONLY];
804
805  // Output only. State of HCX activation key.
806  State state = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
807
808  // Output only. HCX activation key.
809  string activation_key = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
810
811  // Output only. System-generated unique identifier for the resource.
812  string uid = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
813}
814
815// Details about a HCX Cloud Manager appliance.
816message Hcx {
817  // State of the appliance
818  enum State {
819    // Unspecified appliance state. This is the default value.
820    STATE_UNSPECIFIED = 0;
821
822    // The appliance is operational and can be used.
823    ACTIVE = 1;
824
825    // The appliance is being deployed.
826    CREATING = 2;
827  }
828
829  // Internal IP address of the appliance.
830  string internal_ip = 2;
831
832  // Version of the appliance.
833  string version = 4;
834
835  // Output only. The state of the appliance.
836  State state = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
837
838  // Fully qualified domain name of the appliance.
839  string fqdn = 6;
840}
841
842// Details about a NSX Manager appliance.
843message Nsx {
844  // State of the appliance
845  enum State {
846    // Unspecified appliance state. This is the default value.
847    STATE_UNSPECIFIED = 0;
848
849    // The appliance is operational and can be used.
850    ACTIVE = 1;
851
852    // The appliance is being deployed.
853    CREATING = 2;
854  }
855
856  // Internal IP address of the appliance.
857  string internal_ip = 2;
858
859  // Version of the appliance.
860  string version = 4;
861
862  // Output only. The state of the appliance.
863  State state = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
864
865  // Fully qualified domain name of the appliance.
866  string fqdn = 6;
867}
868
869// Details about a vCenter Server management appliance.
870message Vcenter {
871  // State of the appliance
872  enum State {
873    // Unspecified appliance state. This is the default value.
874    STATE_UNSPECIFIED = 0;
875
876    // The appliance is operational and can be used.
877    ACTIVE = 1;
878
879    // The appliance is being deployed.
880    CREATING = 2;
881  }
882
883  // Internal IP address of the appliance.
884  string internal_ip = 2;
885
886  // Version of the appliance.
887  string version = 4;
888
889  // Output only. The state of the appliance.
890  State state = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
891
892  // Fully qualified domain name of the appliance.
893  string fqdn = 6;
894}
895
896// DNS forwarding config.
897// This config defines a list of domain to name server mappings,
898// and is attached to the private cloud for custom domain resolution.
899message DnsForwarding {
900  option (google.api.resource) = {
901    type: "vmwareengine.googleapis.com/DnsForwarding"
902    pattern: "projects/{project}/locations/{location}/privateClouds/{private_cloud}/dnsForwarding"
903  };
904
905  // A forwarding rule is a mapping of a `domain` to `name_servers`.
906  // This mapping allows VMware Engine to resolve domains for attached private
907  // clouds by forwarding DNS requests for a given domain to the specified
908  // nameservers.
909  message ForwardingRule {
910    // Required. Domain used to resolve a `name_servers` list.
911    string domain = 1 [(google.api.field_behavior) = REQUIRED];
912
913    // Required. List of DNS servers to use for domain resolution
914    repeated string name_servers = 2 [(google.api.field_behavior) = REQUIRED];
915  }
916
917  // Output only. The resource name of this DNS profile.
918  // Resource names are schemeless URIs that follow the conventions in
919  // https://cloud.google.com/apis/design/resource_names.
920  // For example:
921  // `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/dnsForwarding`
922  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
923
924  // Output only. Creation time of this resource.
925  google.protobuf.Timestamp create_time = 2
926      [(google.api.field_behavior) = OUTPUT_ONLY];
927
928  // Output only. Last update time of this resource.
929  google.protobuf.Timestamp update_time = 3
930      [(google.api.field_behavior) = OUTPUT_ONLY];
931
932  // Required. List of domain mappings to configure
933  repeated ForwardingRule forwarding_rules = 4
934      [(google.api.field_behavior) = REQUIRED];
935}
936
937// Details of a network peering.
938message NetworkPeering {
939  option (google.api.resource) = {
940    type: "vmwareengine.googleapis.com/NetworkPeering"
941    pattern: "projects/{project}/locations/{location}/networkPeerings/{network_peering}"
942  };
943
944  // Possible states of a network peering.
945  enum State {
946    // Unspecified network peering state. This is the default value.
947    STATE_UNSPECIFIED = 0;
948
949    // The peering is not active.
950    INACTIVE = 1;
951
952    // The peering is active.
953    ACTIVE = 2;
954
955    // The peering is being created.
956    CREATING = 3;
957
958    // The peering is being deleted.
959    DELETING = 4;
960  }
961
962  // Type or purpose of the network peering connection.
963  enum PeerNetworkType {
964    // Unspecified
965    PEER_NETWORK_TYPE_UNSPECIFIED = 0;
966
967    // Peering connection used for connecting to another VPC network established
968    // by the same user. For example, a peering connection to another VPC
969    // network in the same project or to an on-premises network.
970    STANDARD = 1;
971
972    // Peering connection used for connecting to another VMware Engine network.
973    VMWARE_ENGINE_NETWORK = 2;
974
975    // Peering connection used for establishing [private services
976    // access](https://cloud.google.com/vpc/docs/private-services-access).
977    PRIVATE_SERVICES_ACCESS = 3;
978
979    // Peering connection used for connecting to NetApp Cloud Volumes.
980    NETAPP_CLOUD_VOLUMES = 4;
981
982    // Peering connection used for connecting to third-party services. Most
983    // third-party services require manual setup of reverse peering on the VPC
984    // network associated with the third-party service.
985    THIRD_PARTY_SERVICE = 5;
986
987    // Peering connection used for connecting to Dell PowerScale Filers
988    DELL_POWERSCALE = 6;
989  }
990
991  // Output only. The resource name of the network peering. NetworkPeering is a
992  // global resource and location can only be global. Resource names are
993  // scheme-less URIs that follow the conventions in
994  // https://cloud.google.com/apis/design/resource_names.
995  // For example:
996  // `projects/my-project/locations/global/networkPeerings/my-peering`
997  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
998
999  // Output only. Creation time of this resource.
1000  google.protobuf.Timestamp create_time = 2
1001      [(google.api.field_behavior) = OUTPUT_ONLY];
1002
1003  // Output only. Last update time of this resource.
1004  google.protobuf.Timestamp update_time = 3
1005      [(google.api.field_behavior) = OUTPUT_ONLY];
1006
1007  // Required. The relative resource name of the network to peer with
1008  // a standard VMware Engine network. The provided network can be a
1009  // consumer VPC network or another standard VMware Engine network. If the
1010  // `peer_network_type` is VMWARE_ENGINE_NETWORK, specify the name in the form:
1011  // `projects/{project}/locations/global/vmwareEngineNetworks/{vmware_engine_network_id}`.
1012  // Otherwise specify the name in the form:
1013  // `projects/{project}/global/networks/{network_id}`, where
1014  // `{project}` can either be a project number or a project ID.
1015  string peer_network = 5 [(google.api.field_behavior) = REQUIRED];
1016
1017  // Optional. True if custom routes are exported to the peered network;
1018  // false otherwise. The default value is true.
1019  optional bool export_custom_routes = 8
1020      [(google.api.field_behavior) = OPTIONAL];
1021
1022  // Optional. True if custom routes are imported from the peered network;
1023  // false otherwise. The default value is true.
1024  optional bool import_custom_routes = 9
1025      [(google.api.field_behavior) = OPTIONAL];
1026
1027  // Optional. True if full mesh connectivity is created and managed
1028  // automatically between peered networks; false otherwise. Currently this
1029  // field is always true because Google Compute Engine automatically creates
1030  // and manages subnetwork routes between two VPC networks when peering state
1031  // is 'ACTIVE'.
1032  optional bool exchange_subnet_routes = 10
1033      [(google.api.field_behavior) = OPTIONAL];
1034
1035  // Optional. True if all subnet routes with a public IP address range are
1036  // exported; false otherwise. The default value is true. IPv4 special-use
1037  // ranges (https://en.wikipedia.org/wiki/IPv4#Special_addresses) are always
1038  // exported to peers and are not controlled by this field.
1039  optional bool export_custom_routes_with_public_ip = 11
1040      [(google.api.field_behavior) = OPTIONAL];
1041
1042  // Optional. True if all subnet routes with public IP address range are
1043  // imported; false otherwise. The default value is true. IPv4 special-use
1044  // ranges (https://en.wikipedia.org/wiki/IPv4#Special_addresses) are always
1045  // imported to peers and are not controlled by this field.
1046  optional bool import_custom_routes_with_public_ip = 12
1047      [(google.api.field_behavior) = OPTIONAL];
1048
1049  // Output only. State of the network peering. This field
1050  // has a value of 'ACTIVE' when there's a matching configuration in the peer
1051  // network. New values may be added to this enum when appropriate.
1052  State state = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
1053
1054  // Output only. Output Only. Details about the current state of the network
1055  // peering.
1056  string state_details = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
1057
1058  // Optional. Maximum transmission unit (MTU) in bytes.
1059  // The default value is `1500`. If a value of `0` is provided for this field,
1060  // VMware Engine uses the default value instead.
1061  int32 peer_mtu = 14 [(google.api.field_behavior) = OPTIONAL];
1062
1063  // Required. The type of the network to peer with the VMware Engine network.
1064  PeerNetworkType peer_network_type = 16
1065      [(google.api.field_behavior) = REQUIRED];
1066
1067  // Output only. System-generated unique identifier for the resource.
1068  string uid = 17 [(google.api.field_behavior) = OUTPUT_ONLY];
1069
1070  // Required. The relative resource name of the VMware Engine network.
1071  // Specify the name in the following form:
1072  // `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
1073  // where `{project}` can either be a project number or a project ID.
1074  string vmware_engine_network = 20 [
1075    (google.api.field_behavior) = REQUIRED,
1076    (google.api.resource_reference) = {
1077      type: "vmwareengine.googleapis.com/VmwareEngineNetwork"
1078    }
1079  ];
1080
1081  // Optional. User-provided description for this network peering.
1082  string description = 21 [(google.api.field_behavior) = OPTIONAL];
1083}
1084
1085// Exchanged network peering route.
1086message PeeringRoute {
1087  // The type of the peering route.
1088  enum Type {
1089    // Unspecified peering route type. This is the default value.
1090    TYPE_UNSPECIFIED = 0;
1091
1092    // Dynamic routes in the peer network.
1093    DYNAMIC_PEERING_ROUTE = 1;
1094
1095    // Static routes in the peer network.
1096    STATIC_PEERING_ROUTE = 2;
1097
1098    // Created, updated, and removed automatically by Google Cloud when subnets
1099    // are created, modified, or deleted in the peer network.
1100    SUBNET_PEERING_ROUTE = 3;
1101  }
1102
1103  // The direction of the exchanged routes.
1104  enum Direction {
1105    // Unspecified exchanged routes direction. This is default.
1106    DIRECTION_UNSPECIFIED = 0;
1107
1108    // Routes imported from the peer network.
1109    INCOMING = 1;
1110
1111    // Routes exported to the peer network.
1112    OUTGOING = 2;
1113  }
1114
1115  // Output only. Destination range of the peering route in CIDR notation.
1116  string dest_range = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1117
1118  // Output only. Type of the route in the peer VPC network.
1119  Type type = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
1120
1121  // Output only. Region containing the next hop of the peering route. This
1122  // field only applies to dynamic routes in the peer VPC network.
1123  string next_hop_region = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
1124
1125  // Output only. The priority of the peering route.
1126  int64 priority = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
1127
1128  // Output only. True if the peering route has been imported from a peered
1129  // VPC network; false otherwise. The import happens if the field
1130  // `NetworkPeering.importCustomRoutes` is true for this network,
1131  // `NetworkPeering.exportCustomRoutes` is true for the peer VPC network, and
1132  // the import does not result in a route conflict.
1133  bool imported = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
1134
1135  // Output only. Direction of the routes exchanged with the peer network, from
1136  // the VMware Engine network perspective:
1137  //
1138  // * Routes of direction `INCOMING` are imported from the peer network.
1139  // * Routes of direction `OUTGOING` are exported from the intranet VPC network
1140  // of the VMware Engine network.
1141  Direction direction = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
1142}
1143
1144// Represents a network policy resource. Network policies are regional
1145// resources. You can use a network policy to enable or disable internet access
1146// and external IP access. Network policies are associated with a VMware Engine
1147// network, which might span across regions. For a given region, a network
1148// policy applies to all private clouds in the VMware Engine network associated
1149// with the policy.
1150message NetworkPolicy {
1151  option (google.api.resource) = {
1152    type: "vmwareengine.googleapis.com/NetworkPolicy"
1153    pattern: "projects/{project}/locations/{location}/networkPolicies/{network_policy}"
1154  };
1155
1156  // Represents a network service that is managed by a `NetworkPolicy` resource.
1157  // A network service provides a way to control an aspect of external access to
1158  // VMware workloads. For example, whether the VMware workloads in the
1159  // private clouds governed by a network policy can access or be accessed from
1160  // the internet.
1161  message NetworkService {
1162    // Enum State defines possible states of a network policy controlled
1163    // service.
1164    enum State {
1165      // Unspecified service state. This is the default value.
1166      STATE_UNSPECIFIED = 0;
1167
1168      // Service is not provisioned.
1169      UNPROVISIONED = 1;
1170
1171      // Service is in the process of being provisioned/deprovisioned.
1172      RECONCILING = 2;
1173
1174      // Service is active.
1175      ACTIVE = 3;
1176    }
1177
1178    // True if the service is enabled; false otherwise.
1179    bool enabled = 1;
1180
1181    // Output only. State of the service. New values may be added to this enum
1182    // when appropriate.
1183    State state = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
1184  }
1185
1186  // Output only. The resource name of this network policy.
1187  // Resource names are schemeless URIs that follow the conventions in
1188  // https://cloud.google.com/apis/design/resource_names.
1189  // For example:
1190  // `projects/my-project/locations/us-central1/networkPolicies/my-network-policy`
1191  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1192
1193  // Output only. Creation time of this resource.
1194  google.protobuf.Timestamp create_time = 2
1195      [(google.api.field_behavior) = OUTPUT_ONLY];
1196
1197  // Output only. Last update time of this resource.
1198  google.protobuf.Timestamp update_time = 3
1199      [(google.api.field_behavior) = OUTPUT_ONLY];
1200
1201  // Network service that allows VMware workloads to access the internet.
1202  NetworkService internet_access = 6;
1203
1204  // Network service that allows External IP addresses to be assigned to VMware
1205  // workloads. This service can only be enabled when `internet_access` is also
1206  // enabled.
1207  NetworkService external_ip = 7;
1208
1209  // Required. IP address range in CIDR notation used to create internet access
1210  // and external IP access. An RFC 1918 CIDR block, with a "/26" prefix, is
1211  // required. The range cannot overlap with any prefixes either in the consumer
1212  // VPC network or in use by the private clouds attached to that VPC network.
1213  string edge_services_cidr = 9 [(google.api.field_behavior) = REQUIRED];
1214
1215  // Output only. System-generated unique identifier for the resource.
1216  string uid = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
1217
1218  // Optional. The relative resource name of the VMware Engine network.
1219  // Specify the name in the following form:
1220  // `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
1221  // where `{project}` can either be a project number or a project ID.
1222  string vmware_engine_network = 12 [
1223    (google.api.field_behavior) = OPTIONAL,
1224    (google.api.resource_reference) = {
1225      type: "vmwareengine.googleapis.com/VmwareEngineNetwork"
1226    }
1227  ];
1228
1229  // Optional. User-provided description for this network policy.
1230  string description = 13 [(google.api.field_behavior) = OPTIONAL];
1231
1232  // Output only. The canonical name of the VMware Engine network in the form:
1233  // `projects/{project_number}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
1234  string vmware_engine_network_canonical = 14 [
1235    (google.api.field_behavior) = OUTPUT_ONLY,
1236    (google.api.resource_reference) = {
1237      type: "vmwareengine.googleapis.com/VmwareEngineNetwork"
1238    }
1239  ];
1240}
1241
1242// Represents a binding between a network and the management DNS zone.
1243// A management DNS zone is the Cloud DNS cross-project binding zone that
1244// VMware Engine creates for each private cloud. It contains FQDNs and
1245// corresponding IP addresses for the private cloud's ESXi hosts and management
1246// VM appliances like vCenter and NSX Manager.
1247message ManagementDnsZoneBinding {
1248  option (google.api.resource) = {
1249    type: "vmwareengine.googleapis.com/ManagementDnsZoneBinding"
1250    pattern: "projects/{project}/locations/{location}/privateClouds/{private_cloud}/managementDnsZoneBindings/{management_dns_zone_binding}"
1251  };
1252
1253  // Enum State defines possible states of binding between the consumer VPC
1254  // network and the management DNS zone.
1255  enum State {
1256    // The default value. This value should never be used.
1257    STATE_UNSPECIFIED = 0;
1258
1259    // The binding is ready.
1260    ACTIVE = 1;
1261
1262    // The binding is being created.
1263    CREATING = 2;
1264
1265    // The binding is being updated.
1266    UPDATING = 3;
1267
1268    // The binding is being deleted.
1269    DELETING = 4;
1270
1271    // The binding has failed.
1272    FAILED = 5;
1273  }
1274
1275  // Output only. The resource name of this binding.
1276  // Resource names are schemeless URIs that follow the conventions in
1277  // https://cloud.google.com/apis/design/resource_names.
1278  // For example:
1279  // `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/managementDnsZoneBindings/my-management-dns-zone-binding`
1280  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1281
1282  // Output only. Creation time of this resource.
1283  google.protobuf.Timestamp create_time = 2
1284      [(google.api.field_behavior) = OUTPUT_ONLY];
1285
1286  // Output only. Last update time of this resource.
1287  google.protobuf.Timestamp update_time = 3
1288      [(google.api.field_behavior) = OUTPUT_ONLY];
1289
1290  // Output only. The state of the resource.
1291  State state = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
1292
1293  // User-provided description for this resource.
1294  string description = 13;
1295
1296  // Required. The relative resource name of the network to bind to the
1297  // management DNS zone. This network can be a consumer VPC network or a
1298  // VMware engine network.
1299  oneof bind_network {
1300    // Network to bind is a standard consumer VPC.
1301    // Specify the name in the following form for consumer
1302    // VPC network: `projects/{project}/global/networks/{network_id}`.
1303    // `{project}` can either be a project number or a project ID.
1304    string vpc_network = 14 [(google.api.resource_reference) = {
1305      type: "compute.googleapis.com/Network"
1306    }];
1307
1308    // Network to bind is a VMware Engine network.
1309    // Specify the name in the following form for VMware engine network:
1310    // `projects/{project}/locations/global/vmwareEngineNetworks/{vmware_engine_network_id}`.
1311    // `{project}` can either be a project number or a project ID.
1312    string vmware_engine_network = 15 [(google.api.resource_reference) = {
1313      type: "vmwareengine.googleapis.com/VmwareEngineNetwork"
1314    }];
1315  }
1316
1317  // Output only. System-generated unique identifier for the resource.
1318  string uid = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
1319}
1320
1321// VMware Engine network resource that provides connectivity for VMware Engine
1322// private clouds.
1323message VmwareEngineNetwork {
1324  option (google.api.resource) = {
1325    type: "vmwareengine.googleapis.com/VmwareEngineNetwork"
1326    pattern: "projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network}"
1327  };
1328
1329  // Represents a VMware Engine VPC network that is managed by a
1330  // VMware Engine network resource.
1331  message VpcNetwork {
1332    // Enum Type defines possible types of a VMware Engine network controlled
1333    // service.
1334    enum Type {
1335      // The default value. This value should never be used.
1336      TYPE_UNSPECIFIED = 0;
1337
1338      // VPC network that will be peered with a consumer VPC network or the
1339      // intranet VPC of another VMware Engine network. Access a private cloud
1340      // through Compute Engine VMs on a peered VPC network or an on-premises
1341      // resource connected to a peered consumer VPC network.
1342      INTRANET = 1;
1343
1344      // VPC network used for internet access to and from a private cloud.
1345      INTERNET = 2;
1346
1347      // VPC network used for access to Google Cloud services like
1348      // Cloud Storage.
1349      GOOGLE_CLOUD = 3;
1350    }
1351
1352    // Output only. Type of VPC network (INTRANET, INTERNET, or
1353    // GOOGLE_CLOUD)
1354    Type type = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1355
1356    // Output only. The relative resource name of the service VPC network this
1357    // VMware Engine network is attached to. For example:
1358    // `projects/123123/global/networks/my-network`
1359    string network = 2 [
1360      (google.api.field_behavior) = OUTPUT_ONLY,
1361      (google.api.resource_reference) = {
1362        type: "compute.googleapis.com/Network"
1363      }
1364    ];
1365  }
1366
1367  // Enum State defines possible states of VMware Engine network.
1368  enum State {
1369    // The default value. This value is used if the state is omitted.
1370    STATE_UNSPECIFIED = 0;
1371
1372    // The VMware Engine network is being created.
1373    CREATING = 1;
1374
1375    // The VMware Engine network is ready.
1376    ACTIVE = 2;
1377
1378    // The VMware Engine network is being updated.
1379    UPDATING = 3;
1380
1381    // The VMware Engine network is being deleted.
1382    DELETING = 4;
1383  }
1384
1385  // Enum Type defines possible types of VMware Engine network.
1386  enum Type {
1387    // The default value. This value should never be used.
1388    TYPE_UNSPECIFIED = 0;
1389
1390    // Network type used by private clouds created in projects without a network
1391    // of type `STANDARD`. This network type is no longer used for new VMware
1392    // Engine private cloud deployments.
1393    LEGACY = 1;
1394
1395    // Standard network type used for private cloud connectivity.
1396    STANDARD = 2;
1397  }
1398
1399  // Output only. The resource name of the VMware Engine network.
1400  // Resource names are schemeless URIs that follow the conventions in
1401  // https://cloud.google.com/apis/design/resource_names.
1402  // For example:
1403  // `projects/my-project/locations/global/vmwareEngineNetworks/my-network`
1404  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1405
1406  // Output only. Creation time of this resource.
1407  google.protobuf.Timestamp create_time = 2
1408      [(google.api.field_behavior) = OUTPUT_ONLY];
1409
1410  // Output only. Last update time of this resource.
1411  google.protobuf.Timestamp update_time = 3
1412      [(google.api.field_behavior) = OUTPUT_ONLY];
1413
1414  // User-provided description for this VMware Engine network.
1415  string description = 5;
1416
1417  // Output only. VMware Engine service VPC networks that provide connectivity
1418  // from a private cloud to customer projects, the internet, and other Google
1419  // Cloud services.
1420  repeated VpcNetwork vpc_networks = 6
1421      [(google.api.field_behavior) = OUTPUT_ONLY];
1422
1423  // Output only. State of the VMware Engine network.
1424  State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
1425
1426  // Required. VMware Engine network type.
1427  Type type = 8 [(google.api.field_behavior) = REQUIRED];
1428
1429  // Output only. System-generated unique identifier for the resource.
1430  string uid = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
1431
1432  // Checksum that may be sent on update and delete requests to ensure that the
1433  // user-provided value is up to date before the server processes a request.
1434  // The server computes checksums based on the value of other fields in the
1435  // request.
1436  string etag = 10;
1437}
1438
1439// Private connection resource that provides connectivity for VMware Engine
1440// private clouds.
1441message PrivateConnection {
1442  option (google.api.resource) = {
1443    type: "vmwareengine.googleapis.com/PrivateConnection"
1444    pattern: "projects/{project}/locations/{location}/privateConnections/{private_connection}"
1445  };
1446
1447  // Enum State defines possible states of private connection.
1448  enum State {
1449    // The default value. This value is used if the state is omitted.
1450    STATE_UNSPECIFIED = 0;
1451
1452    // The private connection is being created.
1453    CREATING = 1;
1454
1455    // The private connection is ready.
1456    ACTIVE = 2;
1457
1458    // The private connection is being updated.
1459    UPDATING = 3;
1460
1461    // The private connection is being deleted.
1462    DELETING = 4;
1463
1464    // The private connection is not provisioned, since no private cloud is
1465    // present for which this private connection is needed.
1466    UNPROVISIONED = 5;
1467
1468    // The private connection is in failed state.
1469    FAILED = 6;
1470  }
1471
1472  // Enum Type defines possible types of private connection.
1473  enum Type {
1474    // The default value. This value should never be used.
1475    TYPE_UNSPECIFIED = 0;
1476
1477    // Connection used for establishing [private services
1478    // access](https://cloud.google.com/vpc/docs/private-services-access).
1479    PRIVATE_SERVICE_ACCESS = 1;
1480
1481    // Connection used for connecting to NetApp Cloud Volumes.
1482    NETAPP_CLOUD_VOLUMES = 2;
1483
1484    // Connection used for connecting to Dell PowerScale.
1485    DELL_POWERSCALE = 3;
1486
1487    // Connection used for connecting to third-party services.
1488    THIRD_PARTY_SERVICE = 4;
1489  }
1490
1491  // Possible types for RoutingMode
1492  enum RoutingMode {
1493    // The default value. This value should never be used.
1494    ROUTING_MODE_UNSPECIFIED = 0;
1495
1496    // Global Routing Mode
1497    GLOBAL = 1;
1498
1499    // Regional Routing Mode
1500    REGIONAL = 2;
1501  }
1502
1503  // Enum PeeringState defines the possible states of peering between service
1504  // network and the vpc network peered to service network
1505  enum PeeringState {
1506    // The default value. This value is used if the peering state is omitted or
1507    // unknown.
1508    PEERING_STATE_UNSPECIFIED = 0;
1509
1510    // The peering is in active state.
1511    PEERING_ACTIVE = 1;
1512
1513    // The peering is in inactive state.
1514    PEERING_INACTIVE = 2;
1515  }
1516
1517  // Output only. The resource name of the private connection.
1518  // Resource names are schemeless URIs that follow the conventions in
1519  // https://cloud.google.com/apis/design/resource_names.
1520  // For example:
1521  // `projects/my-project/locations/us-central1/privateConnections/my-connection`
1522  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1523
1524  // Output only. Creation time of this resource.
1525  google.protobuf.Timestamp create_time = 2
1526      [(google.api.field_behavior) = OUTPUT_ONLY];
1527
1528  // Output only. Last update time of this resource.
1529  google.protobuf.Timestamp update_time = 3
1530      [(google.api.field_behavior) = OUTPUT_ONLY];
1531
1532  // Optional. User-provided description for this private connection.
1533  string description = 4 [(google.api.field_behavior) = OPTIONAL];
1534
1535  // Output only. State of the private connection.
1536  State state = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
1537
1538  // Required. The relative resource name of Legacy VMware Engine network.
1539  // Specify the name in the following form:
1540  // `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
1541  // where `{project}`, `{location}` will be same as specified in private
1542  // connection resource name and `{vmware_engine_network_id}` will be in the
1543  // form of `{location}`-default e.g.
1544  // projects/project/locations/us-central1/vmwareEngineNetworks/us-central1-default.
1545  string vmware_engine_network = 8 [
1546    (google.api.field_behavior) = REQUIRED,
1547    (google.api.resource_reference) = {
1548      type: "vmwareengine.googleapis.com/VmwareEngineNetwork"
1549    }
1550  ];
1551
1552  // Output only. The canonical name of the VMware Engine network in the form:
1553  // `projects/{project_number}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
1554  string vmware_engine_network_canonical = 9 [
1555    (google.api.field_behavior) = OUTPUT_ONLY,
1556    (google.api.resource_reference) = {
1557      type: "vmwareengine.googleapis.com/VmwareEngineNetwork"
1558    }
1559  ];
1560
1561  // Required. Private connection type.
1562  Type type = 10 [(google.api.field_behavior) = REQUIRED];
1563
1564  // Output only. VPC network peering id between given network VPC and
1565  // VMwareEngineNetwork.
1566  string peering_id = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
1567
1568  // Optional. Routing Mode.
1569  // Default value is set to GLOBAL.
1570  // For type = PRIVATE_SERVICE_ACCESS, this field can be set to GLOBAL or
1571  // REGIONAL, for other types only GLOBAL is supported.
1572  RoutingMode routing_mode = 13 [(google.api.field_behavior) = OPTIONAL];
1573
1574  // Output only. System-generated unique identifier for the resource.
1575  string uid = 14 [(google.api.field_behavior) = OUTPUT_ONLY];
1576
1577  // Required. Service network to create private connection.
1578  // Specify the name in the following form:
1579  // `projects/{project}/global/networks/{network_id}`
1580  // For type = PRIVATE_SERVICE_ACCESS, this field represents servicenetworking
1581  // VPC, e.g. projects/project-tp/global/networks/servicenetworking.
1582  // For type = NETAPP_CLOUD_VOLUME, this field represents NetApp service VPC,
1583  // e.g. projects/project-tp/global/networks/netapp-tenant-vpc.
1584  // For type = DELL_POWERSCALE, this field represent Dell service VPC, e.g.
1585  // projects/project-tp/global/networks/dell-tenant-vpc.
1586  // For type= THIRD_PARTY_SERVICE, this field could represent a consumer VPC or
1587  // any other producer VPC to which the VMware Engine Network needs to be
1588  // connected, e.g. projects/project/global/networks/vpc.
1589  string service_network = 16 [
1590    (google.api.field_behavior) = REQUIRED,
1591    (google.api.resource_reference) = { type: "compute.googleapis.com/Network" }
1592  ];
1593
1594  // Output only. Peering state between service network and VMware Engine
1595  // network.
1596  PeeringState peering_state = 17 [(google.api.field_behavior) = OUTPUT_ONLY];
1597}
1598
1599// VmwareEngine specific metadata for the given
1600// [google.cloud.location.Location][google.cloud.location.Location]. It is
1601// returned as a content of the `google.cloud.location.Location.metadata` field.
1602message LocationMetadata {
1603  // Capability of a location.
1604  enum Capability {
1605    // The default value. This value is used if the capability is omitted or
1606    // unknown.
1607    CAPABILITY_UNSPECIFIED = 0;
1608
1609    // Stretch clusters are supported in this location.
1610    STRETCHED_CLUSTERS = 1;
1611  }
1612
1613  // Output only. Capabilities of this location.
1614  repeated Capability capabilities = 1
1615      [(google.api.field_behavior) = OUTPUT_ONLY];
1616}
1617
1618// DnsBindPermission resource that contains the accounts having the consumer DNS
1619// bind permission on the corresponding intranet VPC of the consumer project.
1620message DnsBindPermission {
1621  option (google.api.resource) = {
1622    type: "vmwareengine.googleapis.com/DnsBindPermission"
1623    pattern: "projects/{project}/locations/{location}/dnsBindPermission"
1624  };
1625
1626  // Required. Output only. The name of the resource which stores the
1627  // users/service accounts having the permission to bind to the corresponding
1628  // intranet VPC of the consumer project. DnsBindPermission is a global
1629  // resource and location can only be global. Resource names are schemeless
1630  // URIs that follow the conventions in
1631  // https://cloud.google.com/apis/design/resource_names. For example:
1632  // `projects/my-project/locations/global/dnsBindPermission`
1633  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1634
1635  // Output only. Users/Service accounts which have access for binding on the
1636  // intranet VPC project corresponding to the consumer project.
1637  repeated Principal principals = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
1638}
1639
1640// Users/Service accounts which have access for DNS binding on the intranet
1641// VPC corresponding to the consumer project.
1642message Principal {
1643  // The consumer provided user/service account which needs to be
1644  // granted permission to DNS bind with the intranet VPC corresponding to the
1645  // consumer project.
1646  oneof principal {
1647    // The user who needs to be granted permission.
1648    string user = 1;
1649
1650    // The service account which needs to be granted the permission.
1651    string service_account = 2;
1652  }
1653}
1654