Skip to main content

googleapis_tonic_google_cloud_vmwareengine_v1/vec_u8_hash_map/
google.cloud.vmwareengine.v1.rs

1// This file is @generated by prost-build.
2/// Network configuration in the consumer project
3/// with which the peering has to be done.
4#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5pub struct NetworkConfig {
6    /// Required. Management CIDR used by VMware management appliances.
7    #[prost(string, tag = "4")]
8    pub management_cidr: ::prost::alloc::string::String,
9    /// Optional. The relative resource name of the VMware Engine network attached
10    /// to the private cloud. Specify the name in the following form:
11    /// `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
12    /// where `{project}` can either be a project number or a project ID.
13    #[prost(string, tag = "5")]
14    pub vmware_engine_network: ::prost::alloc::string::String,
15    /// Output only. The canonical name of the VMware Engine network in the form:
16    /// `projects/{project_number}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
17    #[prost(string, tag = "6")]
18    pub vmware_engine_network_canonical: ::prost::alloc::string::String,
19    /// Output only. The IP address layout version of the management IP address
20    /// range. Possible versions include:
21    ///
22    /// * `managementIpAddressLayoutVersion=1`: Indicates the legacy IP address
23    ///   layout used by some existing private clouds. This is no longer supported
24    ///   for new private clouds as it does not support all features.
25    /// * `managementIpAddressLayoutVersion=2`: Indicates the latest IP address
26    ///   layout used by all newly created private clouds. This version supports all
27    ///   current features.
28    #[prost(int32, tag = "8")]
29    pub management_ip_address_layout_version: i32,
30    /// Output only. DNS Server IP of the Private Cloud.
31    /// All DNS queries can be forwarded to this address for name resolution of
32    /// Private Cloud's management entities like vCenter, NSX-T Manager and
33    /// ESXi hosts.
34    #[prost(string, tag = "9")]
35    pub dns_server_ip: ::prost::alloc::string::String,
36}
37/// Information about the type and number of nodes associated with the cluster.
38#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
39pub struct NodeTypeConfig {
40    /// Required. The number of nodes of this type in the cluster
41    #[prost(int32, tag = "1")]
42    pub node_count: i32,
43    /// Optional. Customized number of cores available to each node of the type.
44    /// This number must always be one of `nodeType.availableCustomCoreCounts`.
45    /// If zero is provided max value from `nodeType.availableCustomCoreCounts`
46    /// will be used.
47    #[prost(int32, tag = "2")]
48    pub custom_core_count: i32,
49}
50/// Configuration of a stretched cluster.
51#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
52pub struct StretchedClusterConfig {
53    /// Required. Zone that will remain operational when connection between the two
54    /// zones is lost. Specify the resource name of a zone that belongs to the
55    /// region of the private cloud. For example:
56    /// `projects/{project}/locations/europe-west3-a` where `{project}` can either
57    /// be a project number or a project ID.
58    #[prost(string, tag = "1")]
59    pub preferred_location: ::prost::alloc::string::String,
60    /// Required. Additional zone for a higher level of availability and load
61    /// balancing. Specify the resource name of a zone that belongs to the region
62    /// of the private cloud. For example:
63    /// `projects/{project}/locations/europe-west3-b` where `{project}` can either
64    /// be a project number or a project ID.
65    #[prost(string, tag = "2")]
66    pub secondary_location: ::prost::alloc::string::String,
67}
68/// Represents a private cloud resource. Private clouds of type `STANDARD` and
69/// `TIME_LIMITED` are zonal resources, `STRETCHED` private clouds are
70/// regional.
71#[derive(Clone, PartialEq, ::prost::Message)]
72pub struct PrivateCloud {
73    /// Output only. The resource name of this private cloud.
74    /// Resource names are schemeless URIs that follow the conventions in
75    /// <https://cloud.google.com/apis/design/resource_names.>
76    /// For example:
77    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
78    #[prost(string, tag = "1")]
79    pub name: ::prost::alloc::string::String,
80    /// Output only. Creation time of this resource.
81    #[prost(message, optional, tag = "2")]
82    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
83    /// Output only. Last update time of this resource.
84    #[prost(message, optional, tag = "3")]
85    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
86    /// Output only. Time when the resource was scheduled for deletion.
87    #[prost(message, optional, tag = "4")]
88    pub delete_time: ::core::option::Option<::prost_types::Timestamp>,
89    /// Output only. Time when the resource will be irreversibly deleted.
90    #[prost(message, optional, tag = "5")]
91    pub expire_time: ::core::option::Option<::prost_types::Timestamp>,
92    /// Output only. State of the resource. New values may be added to this enum
93    /// when appropriate.
94    #[prost(enumeration = "private_cloud::State", tag = "8")]
95    pub state: i32,
96    /// Required. Network configuration of the private cloud.
97    #[prost(message, optional, tag = "9")]
98    pub network_config: ::core::option::Option<NetworkConfig>,
99    /// Required. Input only. The management cluster for this private cloud.
100    /// This field is required during creation of the private cloud to provide
101    /// details for the default cluster.
102    ///
103    /// The following fields can't be changed after private cloud creation:
104    /// `ManagementCluster.clusterId`, `ManagementCluster.nodeTypeId`.
105    #[prost(message, optional, tag = "10")]
106    pub management_cluster: ::core::option::Option<private_cloud::ManagementCluster>,
107    /// User-provided description for this private cloud.
108    #[prost(string, tag = "11")]
109    pub description: ::prost::alloc::string::String,
110    /// Output only. HCX appliance.
111    #[prost(message, optional, tag = "17")]
112    pub hcx: ::core::option::Option<Hcx>,
113    /// Output only. NSX appliance.
114    #[prost(message, optional, tag = "18")]
115    pub nsx: ::core::option::Option<Nsx>,
116    /// Output only. Vcenter appliance.
117    #[prost(message, optional, tag = "19")]
118    pub vcenter: ::core::option::Option<Vcenter>,
119    /// Output only. System-generated unique identifier for the resource.
120    #[prost(string, tag = "20")]
121    pub uid: ::prost::alloc::string::String,
122    /// Optional. Type of the private cloud. Defaults to STANDARD.
123    #[prost(enumeration = "private_cloud::Type", tag = "22")]
124    pub r#type: i32,
125}
126/// Nested message and enum types in `PrivateCloud`.
127pub mod private_cloud {
128    /// Management cluster configuration.
129    #[derive(Clone, PartialEq, ::prost::Message)]
130    pub struct ManagementCluster {
131        /// Required. The user-provided identifier of the new `Cluster`.
132        /// The identifier must meet the following requirements:
133        ///
134        /// * Only contains 1-63 alphanumeric characters and hyphens
135        /// * Begins with an alphabetical character
136        /// * Ends with a non-hyphen character
137        /// * Not formatted as a UUID
138        /// * Complies with [RFC
139        ///   1034](<https://datatracker.ietf.org/doc/html/rfc1034>) (section 3.5)
140        #[prost(string, tag = "1")]
141        pub cluster_id: ::prost::alloc::string::String,
142        /// Required. The map of cluster node types in this cluster, where the key is
143        /// canonical identifier of the node type (corresponds to the `NodeType`).
144        #[prost(map = "string, message", tag = "7")]
145        pub node_type_configs: ::std::collections::HashMap<
146            ::prost::alloc::string::String,
147            super::NodeTypeConfig,
148        >,
149        /// Optional. Configuration of a stretched cluster. Required for STRETCHED
150        /// private clouds.
151        #[prost(message, optional, tag = "8")]
152        pub stretched_cluster_config: ::core::option::Option<
153            super::StretchedClusterConfig,
154        >,
155    }
156    /// Enum State defines possible states of private clouds.
157    #[derive(
158        Clone,
159        Copy,
160        Debug,
161        PartialEq,
162        Eq,
163        Hash,
164        PartialOrd,
165        Ord,
166        ::prost::Enumeration
167    )]
168    #[repr(i32)]
169    pub enum State {
170        /// The default value. This value should never be used.
171        Unspecified = 0,
172        /// The private cloud is ready.
173        Active = 1,
174        /// The private cloud is being created.
175        Creating = 2,
176        /// The private cloud is being updated.
177        Updating = 3,
178        /// The private cloud is in failed state.
179        Failed = 5,
180        /// The private cloud is scheduled for deletion. The deletion process can be
181        /// cancelled by using the corresponding undelete method.
182        Deleted = 6,
183        /// The private cloud is irreversibly deleted and is being removed from the
184        /// system.
185        Purging = 7,
186    }
187    impl State {
188        /// String value of the enum field names used in the ProtoBuf definition.
189        ///
190        /// The values are not transformed in any way and thus are considered stable
191        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
192        pub fn as_str_name(&self) -> &'static str {
193            match self {
194                Self::Unspecified => "STATE_UNSPECIFIED",
195                Self::Active => "ACTIVE",
196                Self::Creating => "CREATING",
197                Self::Updating => "UPDATING",
198                Self::Failed => "FAILED",
199                Self::Deleted => "DELETED",
200                Self::Purging => "PURGING",
201            }
202        }
203        /// Creates an enum from field names used in the ProtoBuf definition.
204        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
205            match value {
206                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
207                "ACTIVE" => Some(Self::Active),
208                "CREATING" => Some(Self::Creating),
209                "UPDATING" => Some(Self::Updating),
210                "FAILED" => Some(Self::Failed),
211                "DELETED" => Some(Self::Deleted),
212                "PURGING" => Some(Self::Purging),
213                _ => None,
214            }
215        }
216    }
217    /// Enum Type defines private cloud type.
218    #[derive(
219        Clone,
220        Copy,
221        Debug,
222        PartialEq,
223        Eq,
224        Hash,
225        PartialOrd,
226        Ord,
227        ::prost::Enumeration
228    )]
229    #[repr(i32)]
230    pub enum Type {
231        /// Standard private is a zonal resource, with 3+ nodes. Default type.
232        Standard = 0,
233        /// Time limited private cloud is a zonal resource, can have only 1 node and
234        /// has limited life span. Will be deleted after defined period of time,
235        /// can be converted into standard private cloud by expanding it up to 3
236        /// or more nodes.
237        TimeLimited = 1,
238        /// Stretched private cloud is a regional resource with redundancy,
239        /// with a minimum of 6 nodes, nodes count has to be even.
240        Stretched = 2,
241    }
242    impl Type {
243        /// String value of the enum field names used in the ProtoBuf definition.
244        ///
245        /// The values are not transformed in any way and thus are considered stable
246        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
247        pub fn as_str_name(&self) -> &'static str {
248            match self {
249                Self::Standard => "STANDARD",
250                Self::TimeLimited => "TIME_LIMITED",
251                Self::Stretched => "STRETCHED",
252            }
253        }
254        /// Creates an enum from field names used in the ProtoBuf definition.
255        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
256            match value {
257                "STANDARD" => Some(Self::Standard),
258                "TIME_LIMITED" => Some(Self::TimeLimited),
259                "STRETCHED" => Some(Self::Stretched),
260                _ => None,
261            }
262        }
263    }
264}
265/// A cluster in a private cloud.
266#[derive(Clone, PartialEq, ::prost::Message)]
267pub struct Cluster {
268    /// Output only. The resource name of this cluster.
269    /// Resource names are schemeless URIs that follow the conventions in
270    /// <https://cloud.google.com/apis/design/resource_names.>
271    /// For example:
272    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/clusters/my-cluster`
273    #[prost(string, tag = "1")]
274    pub name: ::prost::alloc::string::String,
275    /// Output only. Creation time of this resource.
276    #[prost(message, optional, tag = "2")]
277    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
278    /// Output only. Last update time of this resource.
279    #[prost(message, optional, tag = "3")]
280    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
281    /// Output only. State of the resource.
282    #[prost(enumeration = "cluster::State", tag = "6")]
283    pub state: i32,
284    /// Output only. True if the cluster is a management cluster; false otherwise.
285    /// There can only be one management cluster in a private cloud
286    /// and it has to be the first one.
287    #[prost(bool, tag = "7")]
288    pub management: bool,
289    /// Optional. Configuration of the autoscaling applied to this cluster.
290    #[prost(message, optional, tag = "18")]
291    pub autoscaling_settings: ::core::option::Option<AutoscalingSettings>,
292    /// Output only. System-generated unique identifier for the resource.
293    #[prost(string, tag = "14")]
294    pub uid: ::prost::alloc::string::String,
295    /// Required. The map of cluster node types in this cluster, where the key is
296    /// canonical identifier of the node type (corresponds to the `NodeType`).
297    #[prost(map = "string, message", tag = "16")]
298    pub node_type_configs: ::std::collections::HashMap<
299        ::prost::alloc::string::String,
300        NodeTypeConfig,
301    >,
302    /// Optional. Configuration of a stretched cluster. Required for clusters that
303    /// belong to a STRETCHED private cloud.
304    #[prost(message, optional, tag = "17")]
305    pub stretched_cluster_config: ::core::option::Option<StretchedClusterConfig>,
306}
307/// Nested message and enum types in `Cluster`.
308pub mod cluster {
309    /// Enum State defines possible states of private cloud clusters.
310    #[derive(
311        Clone,
312        Copy,
313        Debug,
314        PartialEq,
315        Eq,
316        Hash,
317        PartialOrd,
318        Ord,
319        ::prost::Enumeration
320    )]
321    #[repr(i32)]
322    pub enum State {
323        /// The default value. This value should never be used.
324        Unspecified = 0,
325        /// The Cluster is operational and can be used by the user.
326        Active = 1,
327        /// The Cluster is being deployed.
328        Creating = 2,
329        /// Adding or removing of a node to the cluster, any other cluster specific
330        /// updates.
331        Updating = 3,
332        /// The Cluster is being deleted.
333        Deleting = 4,
334        /// The Cluster is undergoing maintenance, for example: a failed node is
335        /// getting replaced.
336        Repairing = 5,
337    }
338    impl State {
339        /// String value of the enum field names used in the ProtoBuf definition.
340        ///
341        /// The values are not transformed in any way and thus are considered stable
342        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
343        pub fn as_str_name(&self) -> &'static str {
344            match self {
345                Self::Unspecified => "STATE_UNSPECIFIED",
346                Self::Active => "ACTIVE",
347                Self::Creating => "CREATING",
348                Self::Updating => "UPDATING",
349                Self::Deleting => "DELETING",
350                Self::Repairing => "REPAIRING",
351            }
352        }
353        /// Creates an enum from field names used in the ProtoBuf definition.
354        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
355            match value {
356                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
357                "ACTIVE" => Some(Self::Active),
358                "CREATING" => Some(Self::Creating),
359                "UPDATING" => Some(Self::Updating),
360                "DELETING" => Some(Self::Deleting),
361                "REPAIRING" => Some(Self::Repairing),
362                _ => None,
363            }
364        }
365    }
366}
367/// Node in a cluster.
368#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
369pub struct Node {
370    /// Output only. The resource name of this node.
371    /// Resource names are schemeless URIs that follow the conventions in
372    /// <https://cloud.google.com/apis/design/resource_names.>
373    /// For example:
374    /// projects/my-project/locations/us-central1-a/privateClouds/my-cloud/clusters/my-cluster/nodes/my-node
375    #[prost(string, tag = "1")]
376    pub name: ::prost::alloc::string::String,
377    /// Output only. Fully qualified domain name of the node.
378    #[prost(string, tag = "2")]
379    pub fqdn: ::prost::alloc::string::String,
380    /// Output only. Internal IP address of the node.
381    #[prost(string, tag = "3")]
382    pub internal_ip: ::prost::alloc::string::String,
383    /// Output only. The canonical identifier of the node type (corresponds to the
384    /// `NodeType`).
385    /// For example: standard-72.
386    #[prost(string, tag = "4")]
387    pub node_type_id: ::prost::alloc::string::String,
388    /// Output only. The version number of the VMware ESXi
389    /// management component in this cluster.
390    #[prost(string, tag = "5")]
391    pub version: ::prost::alloc::string::String,
392    /// Output only. Customized number of cores
393    #[prost(int64, tag = "6")]
394    pub custom_core_count: i64,
395    /// Output only. The state of the appliance.
396    #[prost(enumeration = "node::State", tag = "7")]
397    pub state: i32,
398}
399/// Nested message and enum types in `Node`.
400pub mod node {
401    /// Enum State defines possible states of a node in a cluster.
402    #[derive(
403        Clone,
404        Copy,
405        Debug,
406        PartialEq,
407        Eq,
408        Hash,
409        PartialOrd,
410        Ord,
411        ::prost::Enumeration
412    )]
413    #[repr(i32)]
414    pub enum State {
415        /// The default value. This value should never be used.
416        Unspecified = 0,
417        /// Node is operational and can be used by the user.
418        Active = 1,
419        /// Node is being provisioned.
420        Creating = 2,
421        /// Node is in a failed state.
422        Failed = 3,
423        /// Node is undergoing maintenance, e.g.: during private cloud upgrade.
424        Upgrading = 4,
425    }
426    impl State {
427        /// String value of the enum field names used in the ProtoBuf definition.
428        ///
429        /// The values are not transformed in any way and thus are considered stable
430        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
431        pub fn as_str_name(&self) -> &'static str {
432            match self {
433                Self::Unspecified => "STATE_UNSPECIFIED",
434                Self::Active => "ACTIVE",
435                Self::Creating => "CREATING",
436                Self::Failed => "FAILED",
437                Self::Upgrading => "UPGRADING",
438            }
439        }
440        /// Creates an enum from field names used in the ProtoBuf definition.
441        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
442            match value {
443                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
444                "ACTIVE" => Some(Self::Active),
445                "CREATING" => Some(Self::Creating),
446                "FAILED" => Some(Self::Failed),
447                "UPGRADING" => Some(Self::Upgrading),
448                _ => None,
449            }
450        }
451    }
452}
453/// Represents an allocated external IP address and its corresponding internal IP
454/// address in a private cloud.
455#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
456pub struct ExternalAddress {
457    /// Output only. The resource name of this external IP address.
458    /// Resource names are schemeless URIs that follow the conventions in
459    /// <https://cloud.google.com/apis/design/resource_names.>
460    /// For example:
461    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/externalAddresses/my-address`
462    #[prost(string, tag = "1")]
463    pub name: ::prost::alloc::string::String,
464    /// Output only. Creation time of this resource.
465    #[prost(message, optional, tag = "2")]
466    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
467    /// Output only. Last update time of this resource.
468    #[prost(message, optional, tag = "3")]
469    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
470    /// The internal IP address of a workload VM.
471    #[prost(string, tag = "6")]
472    pub internal_ip: ::prost::alloc::string::String,
473    /// Output only. The external IP address of a workload VM.
474    #[prost(string, tag = "7")]
475    pub external_ip: ::prost::alloc::string::String,
476    /// Output only. The state of the resource.
477    #[prost(enumeration = "external_address::State", tag = "8")]
478    pub state: i32,
479    /// Output only. System-generated unique identifier for the resource.
480    #[prost(string, tag = "9")]
481    pub uid: ::prost::alloc::string::String,
482    /// User-provided description for this resource.
483    #[prost(string, tag = "11")]
484    pub description: ::prost::alloc::string::String,
485}
486/// Nested message and enum types in `ExternalAddress`.
487pub mod external_address {
488    /// Enum State defines possible states of external addresses.
489    #[derive(
490        Clone,
491        Copy,
492        Debug,
493        PartialEq,
494        Eq,
495        Hash,
496        PartialOrd,
497        Ord,
498        ::prost::Enumeration
499    )]
500    #[repr(i32)]
501    pub enum State {
502        /// The default value. This value should never be used.
503        Unspecified = 0,
504        /// The address is ready.
505        Active = 1,
506        /// The address is being created.
507        Creating = 2,
508        /// The address is being updated.
509        Updating = 3,
510        /// The address is being deleted.
511        Deleting = 4,
512    }
513    impl State {
514        /// String value of the enum field names used in the ProtoBuf definition.
515        ///
516        /// The values are not transformed in any way and thus are considered stable
517        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
518        pub fn as_str_name(&self) -> &'static str {
519            match self {
520                Self::Unspecified => "STATE_UNSPECIFIED",
521                Self::Active => "ACTIVE",
522                Self::Creating => "CREATING",
523                Self::Updating => "UPDATING",
524                Self::Deleting => "DELETING",
525            }
526        }
527        /// Creates an enum from field names used in the ProtoBuf definition.
528        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
529            match value {
530                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
531                "ACTIVE" => Some(Self::Active),
532                "CREATING" => Some(Self::Creating),
533                "UPDATING" => Some(Self::Updating),
534                "DELETING" => Some(Self::Deleting),
535                _ => None,
536            }
537        }
538    }
539}
540/// Subnet in a private cloud. Either `management` subnets (such as vMotion) that
541/// are read-only, or `userDefined`, which can also be updated.
542#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
543pub struct Subnet {
544    /// Output only. The resource name of this subnet.
545    /// Resource names are schemeless URIs that follow the conventions in
546    /// <https://cloud.google.com/apis/design/resource_names.>
547    /// For example:
548    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/subnets/my-subnet`
549    #[prost(string, tag = "1")]
550    pub name: ::prost::alloc::string::String,
551    /// The IP address range of the subnet in CIDR format '10.0.0.0/24'.
552    #[prost(string, tag = "7")]
553    pub ip_cidr_range: ::prost::alloc::string::String,
554    /// The IP address of the gateway of this subnet.
555    /// Must fall within the IP prefix defined above.
556    #[prost(string, tag = "8")]
557    pub gateway_ip: ::prost::alloc::string::String,
558    /// Output only. The type of the subnet. For example "management" or
559    /// "userDefined".
560    #[prost(string, tag = "11")]
561    pub r#type: ::prost::alloc::string::String,
562    /// Output only. The state of the resource.
563    #[prost(enumeration = "subnet::State", tag = "13")]
564    pub state: i32,
565    /// Output only. VLAN ID of the VLAN on which the subnet is configured
566    #[prost(int32, tag = "16")]
567    pub vlan_id: i32,
568}
569/// Nested message and enum types in `Subnet`.
570pub mod subnet {
571    /// Defines possible states of subnets.
572    #[derive(
573        Clone,
574        Copy,
575        Debug,
576        PartialEq,
577        Eq,
578        Hash,
579        PartialOrd,
580        Ord,
581        ::prost::Enumeration
582    )]
583    #[repr(i32)]
584    pub enum State {
585        /// The default value. This value should never be used.
586        Unspecified = 0,
587        /// The subnet is ready.
588        Active = 1,
589        /// The subnet is being created.
590        Creating = 2,
591        /// The subnet is being updated.
592        Updating = 3,
593        /// The subnet is being deleted.
594        Deleting = 4,
595        /// Changes requested in the last operation are being propagated.
596        Reconciling = 5,
597        /// Last operation on the subnet did not succeed. Subnet's payload is
598        /// reverted back to its most recent working state.
599        Failed = 6,
600    }
601    impl State {
602        /// String value of the enum field names used in the ProtoBuf definition.
603        ///
604        /// The values are not transformed in any way and thus are considered stable
605        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
606        pub fn as_str_name(&self) -> &'static str {
607            match self {
608                Self::Unspecified => "STATE_UNSPECIFIED",
609                Self::Active => "ACTIVE",
610                Self::Creating => "CREATING",
611                Self::Updating => "UPDATING",
612                Self::Deleting => "DELETING",
613                Self::Reconciling => "RECONCILING",
614                Self::Failed => "FAILED",
615            }
616        }
617        /// Creates an enum from field names used in the ProtoBuf definition.
618        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
619            match value {
620                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
621                "ACTIVE" => Some(Self::Active),
622                "CREATING" => Some(Self::Creating),
623                "UPDATING" => Some(Self::Updating),
624                "DELETING" => Some(Self::Deleting),
625                "RECONCILING" => Some(Self::Reconciling),
626                "FAILED" => Some(Self::Failed),
627                _ => None,
628            }
629        }
630    }
631}
632/// External access firewall rules for filtering incoming traffic destined to
633/// `ExternalAddress` resources.
634#[derive(Clone, PartialEq, ::prost::Message)]
635pub struct ExternalAccessRule {
636    /// Output only. The resource name of this external access rule.
637    /// Resource names are schemeless URIs that follow the conventions in
638    /// <https://cloud.google.com/apis/design/resource_names.>
639    /// For example:
640    /// `projects/my-project/locations/us-central1/networkPolicies/my-policy/externalAccessRules/my-rule`
641    #[prost(string, tag = "1")]
642    pub name: ::prost::alloc::string::String,
643    /// Output only. Creation time of this resource.
644    #[prost(message, optional, tag = "2")]
645    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
646    /// Output only. Last update time of this resource.
647    #[prost(message, optional, tag = "3")]
648    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
649    /// User-provided description for this external access rule.
650    #[prost(string, tag = "5")]
651    pub description: ::prost::alloc::string::String,
652    /// External access rule priority, which determines the external access rule to
653    /// use when multiple rules apply. If multiple rules have the same priority,
654    /// their ordering is non-deterministic. If specific ordering is required,
655    /// assign unique priorities to enforce such ordering. The external access rule
656    /// priority is an integer from 100 to 4096, both inclusive. Lower integers
657    /// indicate higher precedence. For example, a rule with priority `100` has
658    /// higher precedence than a rule with priority `101`.
659    #[prost(int32, tag = "6")]
660    pub priority: i32,
661    /// The action that the external access rule performs.
662    #[prost(enumeration = "external_access_rule::Action", tag = "7")]
663    pub action: i32,
664    /// The IP protocol to which the external access rule applies. This value can
665    /// be one of the following three protocol strings (not case-sensitive):
666    /// `tcp`, `udp`, or `icmp`.
667    #[prost(string, tag = "8")]
668    pub ip_protocol: ::prost::alloc::string::String,
669    /// If source ranges are specified, the external access rule applies only to
670    /// traffic that has a source IP address in these ranges. These ranges can
671    /// either be expressed in the CIDR format or as an IP address. As only inbound
672    /// rules are supported, `ExternalAddress` resources cannot be the source IP
673    /// addresses of an external access rule. To match all source addresses,
674    /// specify `0.0.0.0/0`.
675    #[prost(message, repeated, tag = "9")]
676    pub source_ip_ranges: ::prost::alloc::vec::Vec<external_access_rule::IpRange>,
677    /// A list of source ports to which the external access rule applies. This
678    /// field is only applicable for the UDP or TCP protocol.
679    /// Each entry must be either an integer or a range. For example: `\["22"\]`,
680    /// `\["80","443"\]`, or `\["12345-12349"\]`. To match all source ports, specify
681    /// `\["0-65535"\]`.
682    #[prost(string, repeated, tag = "10")]
683    pub source_ports: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
684    /// If destination ranges are specified, the external access rule applies only
685    /// to the traffic that has a destination IP address in these ranges. The
686    /// specified IP addresses must have reserved external IP addresses in the
687    /// scope of the parent network policy. To match all external IP addresses in
688    /// the scope of the parent network policy, specify `0.0.0.0/0`. To match a
689    /// specific external IP address, specify it using the
690    /// `IpRange.external_address` property.
691    #[prost(message, repeated, tag = "11")]
692    pub destination_ip_ranges: ::prost::alloc::vec::Vec<external_access_rule::IpRange>,
693    /// A list of destination ports to which the external access rule applies. This
694    /// field is only applicable for the UDP or TCP protocol.
695    /// Each entry must be either an integer or a range. For example: `\["22"\]`,
696    /// `\["80","443"\]`, or `\["12345-12349"\]`. To match all destination ports,
697    /// specify `\["0-65535"\]`.
698    #[prost(string, repeated, tag = "12")]
699    pub destination_ports: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
700    /// Output only. The state of the resource.
701    #[prost(enumeration = "external_access_rule::State", tag = "13")]
702    pub state: i32,
703    /// Output only. System-generated unique identifier for the resource.
704    #[prost(string, tag = "14")]
705    pub uid: ::prost::alloc::string::String,
706}
707/// Nested message and enum types in `ExternalAccessRule`.
708pub mod external_access_rule {
709    /// An IP range provided in any one of the supported formats.
710    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
711    pub struct IpRange {
712        #[prost(oneof = "ip_range::IpRange", tags = "1, 2, 3")]
713        pub ip_range: ::core::option::Option<ip_range::IpRange>,
714    }
715    /// Nested message and enum types in `IpRange`.
716    pub mod ip_range {
717        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
718        pub enum IpRange {
719            /// A single IP address. For example: `10.0.0.5`.
720            #[prost(string, tag = "1")]
721            IpAddress(::prost::alloc::string::String),
722            /// An IP address range in the CIDR format. For example: `10.0.0.0/24`.
723            #[prost(string, tag = "2")]
724            IpAddressRange(::prost::alloc::string::String),
725            /// The name of an `ExternalAddress` resource. The external address must
726            /// have been reserved in the scope of this external access rule's parent
727            /// network policy.  Provide the external address name in the form of
728            /// `projects/{project}/locations/{location}/privateClouds/{private_cloud}/externalAddresses/{external_address}`.
729            /// For example:
730            /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/externalAddresses/my-address`.
731            #[prost(string, tag = "3")]
732            ExternalAddress(::prost::alloc::string::String),
733        }
734    }
735    /// Action determines whether the external access rule permits or blocks
736    /// traffic, subject to the other components of the rule matching the traffic.
737    #[derive(
738        Clone,
739        Copy,
740        Debug,
741        PartialEq,
742        Eq,
743        Hash,
744        PartialOrd,
745        Ord,
746        ::prost::Enumeration
747    )]
748    #[repr(i32)]
749    pub enum Action {
750        /// Defaults to allow.
751        Unspecified = 0,
752        /// Allows connections that match the other specified components.
753        Allow = 1,
754        /// Blocks connections that match the other specified components.
755        Deny = 2,
756    }
757    impl Action {
758        /// String value of the enum field names used in the ProtoBuf definition.
759        ///
760        /// The values are not transformed in any way and thus are considered stable
761        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
762        pub fn as_str_name(&self) -> &'static str {
763            match self {
764                Self::Unspecified => "ACTION_UNSPECIFIED",
765                Self::Allow => "ALLOW",
766                Self::Deny => "DENY",
767            }
768        }
769        /// Creates an enum from field names used in the ProtoBuf definition.
770        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
771            match value {
772                "ACTION_UNSPECIFIED" => Some(Self::Unspecified),
773                "ALLOW" => Some(Self::Allow),
774                "DENY" => Some(Self::Deny),
775                _ => None,
776            }
777        }
778    }
779    /// Defines possible states of external access firewall rules.
780    #[derive(
781        Clone,
782        Copy,
783        Debug,
784        PartialEq,
785        Eq,
786        Hash,
787        PartialOrd,
788        Ord,
789        ::prost::Enumeration
790    )]
791    #[repr(i32)]
792    pub enum State {
793        /// The default value. This value is used if the state is omitted.
794        Unspecified = 0,
795        /// The rule is ready.
796        Active = 1,
797        /// The rule is being created.
798        Creating = 2,
799        /// The rule is being updated.
800        Updating = 3,
801        /// The rule is being deleted.
802        Deleting = 4,
803    }
804    impl State {
805        /// String value of the enum field names used in the ProtoBuf definition.
806        ///
807        /// The values are not transformed in any way and thus are considered stable
808        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
809        pub fn as_str_name(&self) -> &'static str {
810            match self {
811                Self::Unspecified => "STATE_UNSPECIFIED",
812                Self::Active => "ACTIVE",
813                Self::Creating => "CREATING",
814                Self::Updating => "UPDATING",
815                Self::Deleting => "DELETING",
816            }
817        }
818        /// Creates an enum from field names used in the ProtoBuf definition.
819        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
820            match value {
821                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
822                "ACTIVE" => Some(Self::Active),
823                "CREATING" => Some(Self::Creating),
824                "UPDATING" => Some(Self::Updating),
825                "DELETING" => Some(Self::Deleting),
826                _ => None,
827            }
828        }
829    }
830}
831/// Logging server to receive vCenter or ESXi logs.
832#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
833pub struct LoggingServer {
834    /// Output only. The resource name of this logging server.
835    /// Resource names are schemeless URIs that follow the conventions in
836    /// <https://cloud.google.com/apis/design/resource_names.>
837    /// For example:
838    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/loggingServers/my-logging-server`
839    #[prost(string, tag = "1")]
840    pub name: ::prost::alloc::string::String,
841    /// Output only. Creation time of this resource.
842    #[prost(message, optional, tag = "2")]
843    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
844    /// Output only. Last update time of this resource.
845    #[prost(message, optional, tag = "3")]
846    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
847    /// Required. Fully-qualified domain name (FQDN) or IP Address of the logging
848    /// server.
849    #[prost(string, tag = "5")]
850    pub hostname: ::prost::alloc::string::String,
851    /// Required. Port number at which the logging server receives logs.
852    #[prost(int32, tag = "7")]
853    pub port: i32,
854    /// Required. Protocol used by vCenter to send logs to a logging server.
855    #[prost(enumeration = "logging_server::Protocol", tag = "6")]
856    pub protocol: i32,
857    /// Required. The type of component that produces logs that will be forwarded
858    /// to this logging server.
859    #[prost(enumeration = "logging_server::SourceType", tag = "10")]
860    pub source_type: i32,
861    /// Output only. System-generated unique identifier for the resource.
862    #[prost(string, tag = "8")]
863    pub uid: ::prost::alloc::string::String,
864}
865/// Nested message and enum types in `LoggingServer`.
866pub mod logging_server {
867    /// Defines possible protocols used to send logs to
868    /// a logging server.
869    #[derive(
870        Clone,
871        Copy,
872        Debug,
873        PartialEq,
874        Eq,
875        Hash,
876        PartialOrd,
877        Ord,
878        ::prost::Enumeration
879    )]
880    #[repr(i32)]
881    pub enum Protocol {
882        /// Unspecified communications protocol. This is the default value.
883        Unspecified = 0,
884        /// UDP
885        Udp = 1,
886        /// TCP
887        Tcp = 2,
888        /// TLS
889        Tls = 3,
890        /// SSL
891        Ssl = 4,
892        /// RELP
893        Relp = 5,
894    }
895    impl Protocol {
896        /// String value of the enum field names used in the ProtoBuf definition.
897        ///
898        /// The values are not transformed in any way and thus are considered stable
899        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
900        pub fn as_str_name(&self) -> &'static str {
901            match self {
902                Self::Unspecified => "PROTOCOL_UNSPECIFIED",
903                Self::Udp => "UDP",
904                Self::Tcp => "TCP",
905                Self::Tls => "TLS",
906                Self::Ssl => "SSL",
907                Self::Relp => "RELP",
908            }
909        }
910        /// Creates an enum from field names used in the ProtoBuf definition.
911        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
912            match value {
913                "PROTOCOL_UNSPECIFIED" => Some(Self::Unspecified),
914                "UDP" => Some(Self::Udp),
915                "TCP" => Some(Self::Tcp),
916                "TLS" => Some(Self::Tls),
917                "SSL" => Some(Self::Ssl),
918                "RELP" => Some(Self::Relp),
919                _ => None,
920            }
921        }
922    }
923    /// Defines possible types of component that produces logs.
924    #[derive(
925        Clone,
926        Copy,
927        Debug,
928        PartialEq,
929        Eq,
930        Hash,
931        PartialOrd,
932        Ord,
933        ::prost::Enumeration
934    )]
935    #[repr(i32)]
936    pub enum SourceType {
937        /// The default value. This value should never be used.
938        Unspecified = 0,
939        /// Logs produced by ESXI hosts
940        Esxi = 1,
941        /// Logs produced by vCenter server
942        Vcsa = 2,
943    }
944    impl SourceType {
945        /// String value of the enum field names used in the ProtoBuf definition.
946        ///
947        /// The values are not transformed in any way and thus are considered stable
948        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
949        pub fn as_str_name(&self) -> &'static str {
950            match self {
951                Self::Unspecified => "SOURCE_TYPE_UNSPECIFIED",
952                Self::Esxi => "ESXI",
953                Self::Vcsa => "VCSA",
954            }
955        }
956        /// Creates an enum from field names used in the ProtoBuf definition.
957        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
958            match value {
959                "SOURCE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
960                "ESXI" => Some(Self::Esxi),
961                "VCSA" => Some(Self::Vcsa),
962                _ => None,
963            }
964        }
965    }
966}
967/// Describes node type.
968#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
969pub struct NodeType {
970    /// Output only. The resource name of this node type.
971    /// Resource names are schemeless URIs that follow the conventions in
972    /// <https://cloud.google.com/apis/design/resource_names.>
973    /// For example:
974    /// `projects/my-proj/locations/us-central1-a/nodeTypes/standard-72`
975    #[prost(string, tag = "1")]
976    pub name: ::prost::alloc::string::String,
977    /// Output only. The canonical identifier of the node type
978    /// (corresponds to the `NodeType`). For example: standard-72.
979    #[prost(string, tag = "2")]
980    pub node_type_id: ::prost::alloc::string::String,
981    /// Output only. The friendly name for this node type.
982    /// For example: ve1-standard-72
983    #[prost(string, tag = "3")]
984    pub display_name: ::prost::alloc::string::String,
985    /// Output only. The total number of virtual CPUs in a single node.
986    #[prost(int32, tag = "4")]
987    pub virtual_cpu_count: i32,
988    /// Output only. The total number of CPU cores in a single node.
989    #[prost(int32, tag = "5")]
990    pub total_core_count: i32,
991    /// Output only. The amount of physical memory available, defined in GB.
992    #[prost(int32, tag = "7")]
993    pub memory_gb: i32,
994    /// Output only. The amount of storage available, defined in GB.
995    #[prost(int32, tag = "8")]
996    pub disk_size_gb: i32,
997    /// Output only. List of possible values of custom core count.
998    #[prost(int32, repeated, packed = "false", tag = "11")]
999    pub available_custom_core_counts: ::prost::alloc::vec::Vec<i32>,
1000    /// Output only. The type of the resource.
1001    #[prost(enumeration = "node_type::Kind", tag = "12")]
1002    pub kind: i32,
1003    /// Output only. Families of the node type.
1004    /// For node types to be in the same cluster
1005    /// they must share at least one element in the `families`.
1006    #[prost(string, repeated, tag = "13")]
1007    pub families: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1008    /// Output only. Capabilities of this node type.
1009    #[prost(
1010        enumeration = "node_type::Capability",
1011        repeated,
1012        packed = "false",
1013        tag = "14"
1014    )]
1015    pub capabilities: ::prost::alloc::vec::Vec<i32>,
1016}
1017/// Nested message and enum types in `NodeType`.
1018pub mod node_type {
1019    /// Enum Kind defines possible types of a NodeType.
1020    #[derive(
1021        Clone,
1022        Copy,
1023        Debug,
1024        PartialEq,
1025        Eq,
1026        Hash,
1027        PartialOrd,
1028        Ord,
1029        ::prost::Enumeration
1030    )]
1031    #[repr(i32)]
1032    pub enum Kind {
1033        /// The default value. This value should never be used.
1034        Unspecified = 0,
1035        /// Standard HCI node.
1036        Standard = 1,
1037        /// Storage only Node.
1038        StorageOnly = 2,
1039    }
1040    impl Kind {
1041        /// String value of the enum field names used in the ProtoBuf definition.
1042        ///
1043        /// The values are not transformed in any way and thus are considered stable
1044        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1045        pub fn as_str_name(&self) -> &'static str {
1046            match self {
1047                Self::Unspecified => "KIND_UNSPECIFIED",
1048                Self::Standard => "STANDARD",
1049                Self::StorageOnly => "STORAGE_ONLY",
1050            }
1051        }
1052        /// Creates an enum from field names used in the ProtoBuf definition.
1053        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1054            match value {
1055                "KIND_UNSPECIFIED" => Some(Self::Unspecified),
1056                "STANDARD" => Some(Self::Standard),
1057                "STORAGE_ONLY" => Some(Self::StorageOnly),
1058                _ => None,
1059            }
1060        }
1061    }
1062    /// Capability of a node type.
1063    #[derive(
1064        Clone,
1065        Copy,
1066        Debug,
1067        PartialEq,
1068        Eq,
1069        Hash,
1070        PartialOrd,
1071        Ord,
1072        ::prost::Enumeration
1073    )]
1074    #[repr(i32)]
1075    pub enum Capability {
1076        /// The default value. This value is used if the capability is omitted or
1077        /// unknown.
1078        Unspecified = 0,
1079        /// This node type supports stretch clusters.
1080        StretchedClusters = 1,
1081    }
1082    impl Capability {
1083        /// String value of the enum field names used in the ProtoBuf definition.
1084        ///
1085        /// The values are not transformed in any way and thus are considered stable
1086        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1087        pub fn as_str_name(&self) -> &'static str {
1088            match self {
1089                Self::Unspecified => "CAPABILITY_UNSPECIFIED",
1090                Self::StretchedClusters => "STRETCHED_CLUSTERS",
1091            }
1092        }
1093        /// Creates an enum from field names used in the ProtoBuf definition.
1094        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1095            match value {
1096                "CAPABILITY_UNSPECIFIED" => Some(Self::Unspecified),
1097                "STRETCHED_CLUSTERS" => Some(Self::StretchedClusters),
1098                _ => None,
1099            }
1100        }
1101    }
1102}
1103/// Credentials for a private cloud.
1104#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1105pub struct Credentials {
1106    /// Initial username.
1107    #[prost(string, tag = "1")]
1108    pub username: ::prost::alloc::string::String,
1109    /// Initial password.
1110    #[prost(string, tag = "2")]
1111    pub password: ::prost::alloc::string::String,
1112}
1113/// HCX activation key. A default key is created during
1114/// private cloud provisioning, but this behavior is subject to change
1115/// and you should always verify active keys.
1116/// Use
1117/// \[VmwareEngine.ListHcxActivationKeys\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListHcxActivationKeys\]
1118/// to retrieve existing keys and
1119/// \[VmwareEngine.CreateHcxActivationKey\]\[google.cloud.vmwareengine.v1.VmwareEngine.CreateHcxActivationKey\]
1120/// to create new ones.
1121#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1122pub struct HcxActivationKey {
1123    /// Output only. The resource name of this HcxActivationKey.
1124    /// Resource names are schemeless URIs that follow the conventions in
1125    /// <https://cloud.google.com/apis/design/resource_names.>
1126    /// For example:
1127    /// `projects/my-project/locations/us-central1/privateClouds/my-cloud/hcxActivationKeys/my-key`
1128    #[prost(string, tag = "1")]
1129    pub name: ::prost::alloc::string::String,
1130    /// Output only. Creation time of HCX activation key.
1131    #[prost(message, optional, tag = "2")]
1132    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
1133    /// Output only. State of HCX activation key.
1134    #[prost(enumeration = "hcx_activation_key::State", tag = "3")]
1135    pub state: i32,
1136    /// Output only. HCX activation key.
1137    #[prost(string, tag = "4")]
1138    pub activation_key: ::prost::alloc::string::String,
1139    /// Output only. System-generated unique identifier for the resource.
1140    #[prost(string, tag = "5")]
1141    pub uid: ::prost::alloc::string::String,
1142}
1143/// Nested message and enum types in `HcxActivationKey`.
1144pub mod hcx_activation_key {
1145    /// State of HCX activation key
1146    #[derive(
1147        Clone,
1148        Copy,
1149        Debug,
1150        PartialEq,
1151        Eq,
1152        Hash,
1153        PartialOrd,
1154        Ord,
1155        ::prost::Enumeration
1156    )]
1157    #[repr(i32)]
1158    pub enum State {
1159        /// Unspecified state.
1160        Unspecified = 0,
1161        /// State of a newly generated activation key.
1162        Available = 1,
1163        /// State of key when it has been used to activate HCX appliance.
1164        Consumed = 2,
1165        /// State of key when it is being created.
1166        Creating = 3,
1167    }
1168    impl State {
1169        /// String value of the enum field names used in the ProtoBuf definition.
1170        ///
1171        /// The values are not transformed in any way and thus are considered stable
1172        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1173        pub fn as_str_name(&self) -> &'static str {
1174            match self {
1175                Self::Unspecified => "STATE_UNSPECIFIED",
1176                Self::Available => "AVAILABLE",
1177                Self::Consumed => "CONSUMED",
1178                Self::Creating => "CREATING",
1179            }
1180        }
1181        /// Creates an enum from field names used in the ProtoBuf definition.
1182        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1183            match value {
1184                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
1185                "AVAILABLE" => Some(Self::Available),
1186                "CONSUMED" => Some(Self::Consumed),
1187                "CREATING" => Some(Self::Creating),
1188                _ => None,
1189            }
1190        }
1191    }
1192}
1193/// Details about a HCX Cloud Manager appliance.
1194#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1195pub struct Hcx {
1196    /// Internal IP address of the appliance.
1197    #[prost(string, tag = "2")]
1198    pub internal_ip: ::prost::alloc::string::String,
1199    /// Version of the appliance.
1200    #[prost(string, tag = "4")]
1201    pub version: ::prost::alloc::string::String,
1202    /// Output only. The state of the appliance.
1203    #[prost(enumeration = "hcx::State", tag = "5")]
1204    pub state: i32,
1205    /// Fully qualified domain name of the appliance.
1206    #[prost(string, tag = "6")]
1207    pub fqdn: ::prost::alloc::string::String,
1208}
1209/// Nested message and enum types in `Hcx`.
1210pub mod hcx {
1211    /// State of the appliance
1212    #[derive(
1213        Clone,
1214        Copy,
1215        Debug,
1216        PartialEq,
1217        Eq,
1218        Hash,
1219        PartialOrd,
1220        Ord,
1221        ::prost::Enumeration
1222    )]
1223    #[repr(i32)]
1224    pub enum State {
1225        /// Unspecified appliance state. This is the default value.
1226        Unspecified = 0,
1227        /// The appliance is operational and can be used.
1228        Active = 1,
1229        /// The appliance is being deployed.
1230        Creating = 2,
1231        /// The appliance is being activated.
1232        Activating = 3,
1233    }
1234    impl State {
1235        /// String value of the enum field names used in the ProtoBuf definition.
1236        ///
1237        /// The values are not transformed in any way and thus are considered stable
1238        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1239        pub fn as_str_name(&self) -> &'static str {
1240            match self {
1241                Self::Unspecified => "STATE_UNSPECIFIED",
1242                Self::Active => "ACTIVE",
1243                Self::Creating => "CREATING",
1244                Self::Activating => "ACTIVATING",
1245            }
1246        }
1247        /// Creates an enum from field names used in the ProtoBuf definition.
1248        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1249            match value {
1250                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
1251                "ACTIVE" => Some(Self::Active),
1252                "CREATING" => Some(Self::Creating),
1253                "ACTIVATING" => Some(Self::Activating),
1254                _ => None,
1255            }
1256        }
1257    }
1258}
1259/// Details about a NSX Manager appliance.
1260#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1261pub struct Nsx {
1262    /// Internal IP address of the appliance.
1263    #[prost(string, tag = "2")]
1264    pub internal_ip: ::prost::alloc::string::String,
1265    /// Version of the appliance.
1266    #[prost(string, tag = "4")]
1267    pub version: ::prost::alloc::string::String,
1268    /// Output only. The state of the appliance.
1269    #[prost(enumeration = "nsx::State", tag = "5")]
1270    pub state: i32,
1271    /// Fully qualified domain name of the appliance.
1272    #[prost(string, tag = "6")]
1273    pub fqdn: ::prost::alloc::string::String,
1274}
1275/// Nested message and enum types in `Nsx`.
1276pub mod nsx {
1277    /// State of the appliance
1278    #[derive(
1279        Clone,
1280        Copy,
1281        Debug,
1282        PartialEq,
1283        Eq,
1284        Hash,
1285        PartialOrd,
1286        Ord,
1287        ::prost::Enumeration
1288    )]
1289    #[repr(i32)]
1290    pub enum State {
1291        /// Unspecified appliance state. This is the default value.
1292        Unspecified = 0,
1293        /// The appliance is operational and can be used.
1294        Active = 1,
1295        /// The appliance is being deployed.
1296        Creating = 2,
1297    }
1298    impl State {
1299        /// String value of the enum field names used in the ProtoBuf definition.
1300        ///
1301        /// The values are not transformed in any way and thus are considered stable
1302        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1303        pub fn as_str_name(&self) -> &'static str {
1304            match self {
1305                Self::Unspecified => "STATE_UNSPECIFIED",
1306                Self::Active => "ACTIVE",
1307                Self::Creating => "CREATING",
1308            }
1309        }
1310        /// Creates an enum from field names used in the ProtoBuf definition.
1311        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1312            match value {
1313                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
1314                "ACTIVE" => Some(Self::Active),
1315                "CREATING" => Some(Self::Creating),
1316                _ => None,
1317            }
1318        }
1319    }
1320}
1321/// Details about a vCenter Server management appliance.
1322#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1323pub struct Vcenter {
1324    /// Internal IP address of the appliance.
1325    #[prost(string, tag = "2")]
1326    pub internal_ip: ::prost::alloc::string::String,
1327    /// Version of the appliance.
1328    #[prost(string, tag = "4")]
1329    pub version: ::prost::alloc::string::String,
1330    /// Output only. The state of the appliance.
1331    #[prost(enumeration = "vcenter::State", tag = "5")]
1332    pub state: i32,
1333    /// Fully qualified domain name of the appliance.
1334    #[prost(string, tag = "6")]
1335    pub fqdn: ::prost::alloc::string::String,
1336}
1337/// Nested message and enum types in `Vcenter`.
1338pub mod vcenter {
1339    /// State of the appliance
1340    #[derive(
1341        Clone,
1342        Copy,
1343        Debug,
1344        PartialEq,
1345        Eq,
1346        Hash,
1347        PartialOrd,
1348        Ord,
1349        ::prost::Enumeration
1350    )]
1351    #[repr(i32)]
1352    pub enum State {
1353        /// Unspecified appliance state. This is the default value.
1354        Unspecified = 0,
1355        /// The appliance is operational and can be used.
1356        Active = 1,
1357        /// The appliance is being deployed.
1358        Creating = 2,
1359    }
1360    impl State {
1361        /// String value of the enum field names used in the ProtoBuf definition.
1362        ///
1363        /// The values are not transformed in any way and thus are considered stable
1364        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1365        pub fn as_str_name(&self) -> &'static str {
1366            match self {
1367                Self::Unspecified => "STATE_UNSPECIFIED",
1368                Self::Active => "ACTIVE",
1369                Self::Creating => "CREATING",
1370            }
1371        }
1372        /// Creates an enum from field names used in the ProtoBuf definition.
1373        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1374            match value {
1375                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
1376                "ACTIVE" => Some(Self::Active),
1377                "CREATING" => Some(Self::Creating),
1378                _ => None,
1379            }
1380        }
1381    }
1382}
1383/// Autoscaling settings define the rules used by VMware Engine to
1384/// automatically scale-out and scale-in the clusters in a private cloud.
1385#[derive(Clone, PartialEq, ::prost::Message)]
1386pub struct AutoscalingSettings {
1387    /// Required. The map with autoscaling policies applied to the cluster.
1388    /// The key is the identifier of the policy.
1389    /// It must meet the following requirements:
1390    ///
1391    /// * Only contains 1-63 alphanumeric characters and hyphens
1392    /// * Begins with an alphabetical character
1393    /// * Ends with a non-hyphen character
1394    /// * Not formatted as a UUID
1395    /// * Complies with [RFC
1396    ///   1034](<https://datatracker.ietf.org/doc/html/rfc1034>) (section 3.5)
1397    ///
1398    /// Currently there map must contain only one element
1399    /// that describes the autoscaling policy for compute nodes.
1400    #[prost(map = "string, message", tag = "1")]
1401    pub autoscaling_policies: ::std::collections::HashMap<
1402        ::prost::alloc::string::String,
1403        autoscaling_settings::AutoscalingPolicy,
1404    >,
1405    /// Optional. Minimum number of nodes of any type in a cluster.
1406    /// If not specified the default limits apply.
1407    #[prost(int32, tag = "2")]
1408    pub min_cluster_node_count: i32,
1409    /// Optional. Maximum number of nodes of any type in a cluster.
1410    /// If not specified the default limits apply.
1411    #[prost(int32, tag = "3")]
1412    pub max_cluster_node_count: i32,
1413    /// Optional. The minimum duration between consecutive autoscale operations.
1414    /// It starts once addition or removal of nodes is fully completed.
1415    /// Defaults to 30 minutes if not specified. Cool down period must be in whole
1416    /// minutes (for example, 30, 31, 50, 180 minutes).
1417    #[prost(message, optional, tag = "4")]
1418    pub cool_down_period: ::core::option::Option<::prost_types::Duration>,
1419}
1420/// Nested message and enum types in `AutoscalingSettings`.
1421pub mod autoscaling_settings {
1422    /// Thresholds define the utilization of resources triggering
1423    /// scale-out and scale-in operations.
1424    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1425    pub struct Thresholds {
1426        /// Required. The utilization triggering the scale-out operation in percent.
1427        #[prost(int32, tag = "1")]
1428        pub scale_out: i32,
1429        /// Required. The utilization triggering the scale-in operation in percent.
1430        #[prost(int32, tag = "2")]
1431        pub scale_in: i32,
1432    }
1433    /// Autoscaling policy describes the behavior of the autoscaling
1434    /// with respect to the resource utilization.
1435    /// The scale-out operation is initiated if the utilization
1436    /// exceeds ANY of the respective thresholds.
1437    /// The scale-in operation is initiated if the utilization
1438    /// is below ALL of the respective thresholds.
1439    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1440    pub struct AutoscalingPolicy {
1441        /// Required. The canonical identifier of the node type to add or remove.
1442        /// Corresponds to the `NodeType`.
1443        #[prost(string, tag = "1")]
1444        pub node_type_id: ::prost::alloc::string::String,
1445        /// Required. Number of nodes to add to a cluster during a scale-out
1446        /// operation. Must be divisible by 2 for stretched clusters. During a
1447        /// scale-in operation only one node (or 2 for stretched clusters) are
1448        /// removed in a single iteration.
1449        #[prost(int32, tag = "2")]
1450        pub scale_out_size: i32,
1451        /// Optional. Utilization thresholds pertaining to CPU utilization.
1452        #[prost(message, optional, tag = "11")]
1453        pub cpu_thresholds: ::core::option::Option<Thresholds>,
1454        /// Optional. Utilization thresholds pertaining to amount of granted memory.
1455        #[prost(message, optional, tag = "12")]
1456        pub granted_memory_thresholds: ::core::option::Option<Thresholds>,
1457        /// Optional. Utilization thresholds pertaining to amount of consumed memory.
1458        #[prost(message, optional, tag = "13")]
1459        pub consumed_memory_thresholds: ::core::option::Option<Thresholds>,
1460        /// Optional. Utilization thresholds pertaining to amount of consumed
1461        /// storage.
1462        #[prost(message, optional, tag = "14")]
1463        pub storage_thresholds: ::core::option::Option<Thresholds>,
1464    }
1465}
1466/// DNS forwarding config.
1467/// This config defines a list of domain to name server mappings,
1468/// and is attached to the private cloud for custom domain resolution.
1469#[derive(Clone, PartialEq, ::prost::Message)]
1470pub struct DnsForwarding {
1471    /// Output only. The resource name of this DNS profile.
1472    /// Resource names are schemeless URIs that follow the conventions in
1473    /// <https://cloud.google.com/apis/design/resource_names.>
1474    /// For example:
1475    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/dnsForwarding`
1476    #[prost(string, tag = "1")]
1477    pub name: ::prost::alloc::string::String,
1478    /// Output only. Creation time of this resource.
1479    #[prost(message, optional, tag = "2")]
1480    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
1481    /// Output only. Last update time of this resource.
1482    #[prost(message, optional, tag = "3")]
1483    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
1484    /// Required. List of domain mappings to configure
1485    #[prost(message, repeated, tag = "4")]
1486    pub forwarding_rules: ::prost::alloc::vec::Vec<dns_forwarding::ForwardingRule>,
1487}
1488/// Nested message and enum types in `DnsForwarding`.
1489pub mod dns_forwarding {
1490    /// A forwarding rule is a mapping of a `domain` to `name_servers`.
1491    /// This mapping allows VMware Engine to resolve domains for attached private
1492    /// clouds by forwarding DNS requests for a given domain to the specified
1493    /// nameservers.
1494    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1495    pub struct ForwardingRule {
1496        /// Required. Domain used to resolve a `name_servers` list.
1497        #[prost(string, tag = "1")]
1498        pub domain: ::prost::alloc::string::String,
1499        /// Required. List of DNS servers to use for domain resolution
1500        #[prost(string, repeated, tag = "2")]
1501        pub name_servers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1502    }
1503}
1504/// Details of a network peering.
1505#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1506pub struct NetworkPeering {
1507    /// Output only. The resource name of the network peering. NetworkPeering is a
1508    /// global resource and location can only be global. Resource names are
1509    /// scheme-less URIs that follow the conventions in
1510    /// <https://cloud.google.com/apis/design/resource_names.>
1511    /// For example:
1512    /// `projects/my-project/locations/global/networkPeerings/my-peering`
1513    #[prost(string, tag = "1")]
1514    pub name: ::prost::alloc::string::String,
1515    /// Output only. Creation time of this resource.
1516    #[prost(message, optional, tag = "2")]
1517    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
1518    /// Output only. Last update time of this resource.
1519    #[prost(message, optional, tag = "3")]
1520    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
1521    /// Required. The relative resource name of the network to peer with
1522    /// a standard VMware Engine network. The provided network can be a
1523    /// consumer VPC network or another standard VMware Engine network. If the
1524    /// `peer_network_type` is VMWARE_ENGINE_NETWORK, specify the name in the form:
1525    /// `projects/{project}/locations/global/vmwareEngineNetworks/{vmware_engine_network_id}`.
1526    /// Otherwise specify the name in the form:
1527    /// `projects/{project}/global/networks/{network_id}`, where
1528    /// `{project}` can either be a project number or a project ID.
1529    #[prost(string, tag = "5")]
1530    pub peer_network: ::prost::alloc::string::String,
1531    /// Optional. True if custom routes are exported to the peered network;
1532    /// false otherwise. The default value is true.
1533    #[prost(bool, optional, tag = "8")]
1534    pub export_custom_routes: ::core::option::Option<bool>,
1535    /// Optional. True if custom routes are imported from the peered network;
1536    /// false otherwise. The default value is true.
1537    #[prost(bool, optional, tag = "9")]
1538    pub import_custom_routes: ::core::option::Option<bool>,
1539    /// Optional. True if full mesh connectivity is created and managed
1540    /// automatically between peered networks; false otherwise. Currently this
1541    /// field is always true because Google Compute Engine automatically creates
1542    /// and manages subnetwork routes between two VPC networks when peering state
1543    /// is 'ACTIVE'.
1544    #[prost(bool, optional, tag = "10")]
1545    pub exchange_subnet_routes: ::core::option::Option<bool>,
1546    /// Optional. True if all subnet routes with a public IP address range are
1547    /// exported; false otherwise. The default value is true. IPv4 special-use
1548    /// ranges (<https://en.wikipedia.org/wiki/IPv4#Special_addresses>) are always
1549    /// exported to peers and are not controlled by this field.
1550    #[prost(bool, optional, tag = "11")]
1551    pub export_custom_routes_with_public_ip: ::core::option::Option<bool>,
1552    /// Optional. True if all subnet routes with public IP address range are
1553    /// imported; false otherwise. The default value is true. IPv4 special-use
1554    /// ranges (<https://en.wikipedia.org/wiki/IPv4#Special_addresses>) are always
1555    /// imported to peers and are not controlled by this field.
1556    #[prost(bool, optional, tag = "12")]
1557    pub import_custom_routes_with_public_ip: ::core::option::Option<bool>,
1558    /// Output only. State of the network peering. This field
1559    /// has a value of 'ACTIVE' when there's a matching configuration in the peer
1560    /// network. New values may be added to this enum when appropriate.
1561    #[prost(enumeration = "network_peering::State", tag = "13")]
1562    pub state: i32,
1563    /// Output only. Output Only. Details about the current state of the network
1564    /// peering.
1565    #[prost(string, tag = "7")]
1566    pub state_details: ::prost::alloc::string::String,
1567    /// Optional. Maximum transmission unit (MTU) in bytes.
1568    /// The default value is `1500`. If a value of `0` is provided for this field,
1569    /// VMware Engine uses the default value instead.
1570    #[prost(int32, tag = "14")]
1571    pub peer_mtu: i32,
1572    /// Required. The type of the network to peer with the VMware Engine network.
1573    #[prost(enumeration = "network_peering::PeerNetworkType", tag = "16")]
1574    pub peer_network_type: i32,
1575    /// Output only. System-generated unique identifier for the resource.
1576    #[prost(string, tag = "17")]
1577    pub uid: ::prost::alloc::string::String,
1578    /// Required. The relative resource name of the VMware Engine network.
1579    /// Specify the name in the following form:
1580    /// `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
1581    /// where `{project}` can either be a project number or a project ID.
1582    #[prost(string, tag = "20")]
1583    pub vmware_engine_network: ::prost::alloc::string::String,
1584    /// Optional. User-provided description for this network peering.
1585    #[prost(string, tag = "21")]
1586    pub description: ::prost::alloc::string::String,
1587}
1588/// Nested message and enum types in `NetworkPeering`.
1589pub mod network_peering {
1590    /// Possible states of a network peering.
1591    #[derive(
1592        Clone,
1593        Copy,
1594        Debug,
1595        PartialEq,
1596        Eq,
1597        Hash,
1598        PartialOrd,
1599        Ord,
1600        ::prost::Enumeration
1601    )]
1602    #[repr(i32)]
1603    pub enum State {
1604        /// Unspecified network peering state. This is the default value.
1605        Unspecified = 0,
1606        /// The peering is not active.
1607        Inactive = 1,
1608        /// The peering is active.
1609        Active = 2,
1610        /// The peering is being created.
1611        Creating = 3,
1612        /// The peering is being deleted.
1613        Deleting = 4,
1614    }
1615    impl State {
1616        /// String value of the enum field names used in the ProtoBuf definition.
1617        ///
1618        /// The values are not transformed in any way and thus are considered stable
1619        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1620        pub fn as_str_name(&self) -> &'static str {
1621            match self {
1622                Self::Unspecified => "STATE_UNSPECIFIED",
1623                Self::Inactive => "INACTIVE",
1624                Self::Active => "ACTIVE",
1625                Self::Creating => "CREATING",
1626                Self::Deleting => "DELETING",
1627            }
1628        }
1629        /// Creates an enum from field names used in the ProtoBuf definition.
1630        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1631            match value {
1632                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
1633                "INACTIVE" => Some(Self::Inactive),
1634                "ACTIVE" => Some(Self::Active),
1635                "CREATING" => Some(Self::Creating),
1636                "DELETING" => Some(Self::Deleting),
1637                _ => None,
1638            }
1639        }
1640    }
1641    /// Type or purpose of the network peering connection.
1642    #[derive(
1643        Clone,
1644        Copy,
1645        Debug,
1646        PartialEq,
1647        Eq,
1648        Hash,
1649        PartialOrd,
1650        Ord,
1651        ::prost::Enumeration
1652    )]
1653    #[repr(i32)]
1654    pub enum PeerNetworkType {
1655        /// Unspecified
1656        Unspecified = 0,
1657        /// Peering connection used for connecting to another VPC network established
1658        /// by the same user. For example, a peering connection to another VPC
1659        /// network in the same project or to an on-premises network.
1660        Standard = 1,
1661        /// Peering connection used for connecting to another VMware Engine network.
1662        VmwareEngineNetwork = 2,
1663        /// Peering connection used for establishing [private services
1664        /// access](<https://cloud.google.com/vpc/docs/private-services-access>).
1665        PrivateServicesAccess = 3,
1666        /// Peering connection used for connecting to NetApp Cloud Volumes.
1667        NetappCloudVolumes = 4,
1668        /// Peering connection used for connecting to third-party services. Most
1669        /// third-party services require manual setup of reverse peering on the VPC
1670        /// network associated with the third-party service.
1671        ThirdPartyService = 5,
1672        /// Peering connection used for connecting to Dell PowerScale Filers
1673        DellPowerscale = 6,
1674        /// Peering connection used for connecting to Google Cloud NetApp Volumes.
1675        GoogleCloudNetappVolumes = 7,
1676    }
1677    impl PeerNetworkType {
1678        /// String value of the enum field names used in the ProtoBuf definition.
1679        ///
1680        /// The values are not transformed in any way and thus are considered stable
1681        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1682        pub fn as_str_name(&self) -> &'static str {
1683            match self {
1684                Self::Unspecified => "PEER_NETWORK_TYPE_UNSPECIFIED",
1685                Self::Standard => "STANDARD",
1686                Self::VmwareEngineNetwork => "VMWARE_ENGINE_NETWORK",
1687                Self::PrivateServicesAccess => "PRIVATE_SERVICES_ACCESS",
1688                Self::NetappCloudVolumes => "NETAPP_CLOUD_VOLUMES",
1689                Self::ThirdPartyService => "THIRD_PARTY_SERVICE",
1690                Self::DellPowerscale => "DELL_POWERSCALE",
1691                Self::GoogleCloudNetappVolumes => "GOOGLE_CLOUD_NETAPP_VOLUMES",
1692            }
1693        }
1694        /// Creates an enum from field names used in the ProtoBuf definition.
1695        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1696            match value {
1697                "PEER_NETWORK_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1698                "STANDARD" => Some(Self::Standard),
1699                "VMWARE_ENGINE_NETWORK" => Some(Self::VmwareEngineNetwork),
1700                "PRIVATE_SERVICES_ACCESS" => Some(Self::PrivateServicesAccess),
1701                "NETAPP_CLOUD_VOLUMES" => Some(Self::NetappCloudVolumes),
1702                "THIRD_PARTY_SERVICE" => Some(Self::ThirdPartyService),
1703                "DELL_POWERSCALE" => Some(Self::DellPowerscale),
1704                "GOOGLE_CLOUD_NETAPP_VOLUMES" => Some(Self::GoogleCloudNetappVolumes),
1705                _ => None,
1706            }
1707        }
1708    }
1709}
1710/// Exchanged network peering route.
1711#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1712pub struct PeeringRoute {
1713    /// Output only. Destination range of the peering route in CIDR notation.
1714    #[prost(string, tag = "1")]
1715    pub dest_range: ::prost::alloc::string::String,
1716    /// Output only. Type of the route in the peer VPC network.
1717    #[prost(enumeration = "peering_route::Type", tag = "2")]
1718    pub r#type: i32,
1719    /// Output only. Region containing the next hop of the peering route. This
1720    /// field only applies to dynamic routes in the peer VPC network.
1721    #[prost(string, tag = "3")]
1722    pub next_hop_region: ::prost::alloc::string::String,
1723    /// Output only. The priority of the peering route.
1724    #[prost(int64, tag = "4")]
1725    pub priority: i64,
1726    /// Output only. True if the peering route has been imported from a peered
1727    /// VPC network; false otherwise. The import happens if the field
1728    /// `NetworkPeering.importCustomRoutes` is true for this network,
1729    /// `NetworkPeering.exportCustomRoutes` is true for the peer VPC network, and
1730    /// the import does not result in a route conflict.
1731    #[prost(bool, tag = "5")]
1732    pub imported: bool,
1733    /// Output only. Direction of the routes exchanged with the peer network, from
1734    /// the VMware Engine network perspective:
1735    ///
1736    /// * Routes of direction `INCOMING` are imported from the peer network.
1737    /// * Routes of direction `OUTGOING` are exported from the intranet VPC network
1738    ///   of the VMware Engine network.
1739    #[prost(enumeration = "peering_route::Direction", tag = "6")]
1740    pub direction: i32,
1741}
1742/// Nested message and enum types in `PeeringRoute`.
1743pub mod peering_route {
1744    /// The type of the peering route.
1745    #[derive(
1746        Clone,
1747        Copy,
1748        Debug,
1749        PartialEq,
1750        Eq,
1751        Hash,
1752        PartialOrd,
1753        Ord,
1754        ::prost::Enumeration
1755    )]
1756    #[repr(i32)]
1757    pub enum Type {
1758        /// Unspecified peering route type. This is the default value.
1759        Unspecified = 0,
1760        /// Dynamic routes in the peer network.
1761        DynamicPeeringRoute = 1,
1762        /// Static routes in the peer network.
1763        StaticPeeringRoute = 2,
1764        /// Created, updated, and removed automatically by Google Cloud when subnets
1765        /// are created, modified, or deleted in the peer network.
1766        SubnetPeeringRoute = 3,
1767    }
1768    impl Type {
1769        /// String value of the enum field names used in the ProtoBuf definition.
1770        ///
1771        /// The values are not transformed in any way and thus are considered stable
1772        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1773        pub fn as_str_name(&self) -> &'static str {
1774            match self {
1775                Self::Unspecified => "TYPE_UNSPECIFIED",
1776                Self::DynamicPeeringRoute => "DYNAMIC_PEERING_ROUTE",
1777                Self::StaticPeeringRoute => "STATIC_PEERING_ROUTE",
1778                Self::SubnetPeeringRoute => "SUBNET_PEERING_ROUTE",
1779            }
1780        }
1781        /// Creates an enum from field names used in the ProtoBuf definition.
1782        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1783            match value {
1784                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1785                "DYNAMIC_PEERING_ROUTE" => Some(Self::DynamicPeeringRoute),
1786                "STATIC_PEERING_ROUTE" => Some(Self::StaticPeeringRoute),
1787                "SUBNET_PEERING_ROUTE" => Some(Self::SubnetPeeringRoute),
1788                _ => None,
1789            }
1790        }
1791    }
1792    /// The direction of the exchanged routes.
1793    #[derive(
1794        Clone,
1795        Copy,
1796        Debug,
1797        PartialEq,
1798        Eq,
1799        Hash,
1800        PartialOrd,
1801        Ord,
1802        ::prost::Enumeration
1803    )]
1804    #[repr(i32)]
1805    pub enum Direction {
1806        /// Unspecified exchanged routes direction. This is default.
1807        Unspecified = 0,
1808        /// Routes imported from the peer network.
1809        Incoming = 1,
1810        /// Routes exported to the peer network.
1811        Outgoing = 2,
1812    }
1813    impl Direction {
1814        /// String value of the enum field names used in the ProtoBuf definition.
1815        ///
1816        /// The values are not transformed in any way and thus are considered stable
1817        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1818        pub fn as_str_name(&self) -> &'static str {
1819            match self {
1820                Self::Unspecified => "DIRECTION_UNSPECIFIED",
1821                Self::Incoming => "INCOMING",
1822                Self::Outgoing => "OUTGOING",
1823            }
1824        }
1825        /// Creates an enum from field names used in the ProtoBuf definition.
1826        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1827            match value {
1828                "DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
1829                "INCOMING" => Some(Self::Incoming),
1830                "OUTGOING" => Some(Self::Outgoing),
1831                _ => None,
1832            }
1833        }
1834    }
1835}
1836/// Represents a network policy resource. Network policies are regional
1837/// resources. You can use a network policy to enable or disable internet access
1838/// and external IP access. Network policies are associated with a VMware Engine
1839/// network, which might span across regions. For a given region, a network
1840/// policy applies to all private clouds in the VMware Engine network associated
1841/// with the policy.
1842#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1843pub struct NetworkPolicy {
1844    /// Output only. The resource name of this network policy.
1845    /// Resource names are schemeless URIs that follow the conventions in
1846    /// <https://cloud.google.com/apis/design/resource_names.>
1847    /// For example:
1848    /// `projects/my-project/locations/us-central1/networkPolicies/my-network-policy`
1849    #[prost(string, tag = "1")]
1850    pub name: ::prost::alloc::string::String,
1851    /// Output only. Creation time of this resource.
1852    #[prost(message, optional, tag = "2")]
1853    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
1854    /// Output only. Last update time of this resource.
1855    #[prost(message, optional, tag = "3")]
1856    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
1857    /// Network service that allows VMware workloads to access the internet.
1858    #[prost(message, optional, tag = "6")]
1859    pub internet_access: ::core::option::Option<network_policy::NetworkService>,
1860    /// Network service that allows External IP addresses to be assigned to VMware
1861    /// workloads. This service can only be enabled when `internet_access` is also
1862    /// enabled.
1863    #[prost(message, optional, tag = "7")]
1864    pub external_ip: ::core::option::Option<network_policy::NetworkService>,
1865    /// Required. IP address range in CIDR notation used to create internet access
1866    /// and external IP access. An RFC 1918 CIDR block, with a "/26" prefix, is
1867    /// required. The range cannot overlap with any prefixes either in the consumer
1868    /// VPC network or in use by the private clouds attached to that VPC network.
1869    #[prost(string, tag = "9")]
1870    pub edge_services_cidr: ::prost::alloc::string::String,
1871    /// Output only. System-generated unique identifier for the resource.
1872    #[prost(string, tag = "10")]
1873    pub uid: ::prost::alloc::string::String,
1874    /// Optional. The relative resource name of the VMware Engine network.
1875    /// Specify the name in the following form:
1876    /// `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
1877    /// where `{project}` can either be a project number or a project ID.
1878    #[prost(string, tag = "12")]
1879    pub vmware_engine_network: ::prost::alloc::string::String,
1880    /// Optional. User-provided description for this network policy.
1881    #[prost(string, tag = "13")]
1882    pub description: ::prost::alloc::string::String,
1883    /// Output only. The canonical name of the VMware Engine network in the form:
1884    /// `projects/{project_number}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
1885    #[prost(string, tag = "14")]
1886    pub vmware_engine_network_canonical: ::prost::alloc::string::String,
1887}
1888/// Nested message and enum types in `NetworkPolicy`.
1889pub mod network_policy {
1890    /// Represents a network service that is managed by a `NetworkPolicy` resource.
1891    /// A network service provides a way to control an aspect of external access to
1892    /// VMware workloads. For example, whether the VMware workloads in the
1893    /// private clouds governed by a network policy can access or be accessed from
1894    /// the internet.
1895    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1896    pub struct NetworkService {
1897        /// True if the service is enabled; false otherwise.
1898        #[prost(bool, tag = "1")]
1899        pub enabled: bool,
1900        /// Output only. State of the service. New values may be added to this enum
1901        /// when appropriate.
1902        #[prost(enumeration = "network_service::State", tag = "2")]
1903        pub state: i32,
1904    }
1905    /// Nested message and enum types in `NetworkService`.
1906    pub mod network_service {
1907        /// Enum State defines possible states of a network policy controlled
1908        /// service.
1909        #[derive(
1910            Clone,
1911            Copy,
1912            Debug,
1913            PartialEq,
1914            Eq,
1915            Hash,
1916            PartialOrd,
1917            Ord,
1918            ::prost::Enumeration
1919        )]
1920        #[repr(i32)]
1921        pub enum State {
1922            /// Unspecified service state. This is the default value.
1923            Unspecified = 0,
1924            /// Service is not provisioned.
1925            Unprovisioned = 1,
1926            /// Service is in the process of being provisioned/deprovisioned.
1927            Reconciling = 2,
1928            /// Service is active.
1929            Active = 3,
1930        }
1931        impl State {
1932            /// String value of the enum field names used in the ProtoBuf definition.
1933            ///
1934            /// The values are not transformed in any way and thus are considered stable
1935            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1936            pub fn as_str_name(&self) -> &'static str {
1937                match self {
1938                    Self::Unspecified => "STATE_UNSPECIFIED",
1939                    Self::Unprovisioned => "UNPROVISIONED",
1940                    Self::Reconciling => "RECONCILING",
1941                    Self::Active => "ACTIVE",
1942                }
1943            }
1944            /// Creates an enum from field names used in the ProtoBuf definition.
1945            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1946                match value {
1947                    "STATE_UNSPECIFIED" => Some(Self::Unspecified),
1948                    "UNPROVISIONED" => Some(Self::Unprovisioned),
1949                    "RECONCILING" => Some(Self::Reconciling),
1950                    "ACTIVE" => Some(Self::Active),
1951                    _ => None,
1952                }
1953            }
1954        }
1955    }
1956}
1957/// Represents a binding between a network and the management DNS zone.
1958/// A management DNS zone is the Cloud DNS cross-project binding zone that
1959/// VMware Engine creates for each private cloud. It contains FQDNs and
1960/// corresponding IP addresses for the private cloud's ESXi hosts and management
1961/// VM appliances like vCenter and NSX Manager.
1962#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1963pub struct ManagementDnsZoneBinding {
1964    /// Output only. The resource name of this binding.
1965    /// Resource names are schemeless URIs that follow the conventions in
1966    /// <https://cloud.google.com/apis/design/resource_names.>
1967    /// For example:
1968    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/managementDnsZoneBindings/my-management-dns-zone-binding`
1969    #[prost(string, tag = "1")]
1970    pub name: ::prost::alloc::string::String,
1971    /// Output only. Creation time of this resource.
1972    #[prost(message, optional, tag = "2")]
1973    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
1974    /// Output only. Last update time of this resource.
1975    #[prost(message, optional, tag = "3")]
1976    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
1977    /// Output only. The state of the resource.
1978    #[prost(enumeration = "management_dns_zone_binding::State", tag = "8")]
1979    pub state: i32,
1980    /// User-provided description for this resource.
1981    #[prost(string, tag = "13")]
1982    pub description: ::prost::alloc::string::String,
1983    /// Output only. System-generated unique identifier for the resource.
1984    #[prost(string, tag = "9")]
1985    pub uid: ::prost::alloc::string::String,
1986    /// Required. The relative resource name of the network to bind to the
1987    /// management DNS zone. This network can be a consumer VPC network or a
1988    /// VMware engine network.
1989    #[prost(oneof = "management_dns_zone_binding::BindNetwork", tags = "14, 15")]
1990    pub bind_network: ::core::option::Option<management_dns_zone_binding::BindNetwork>,
1991}
1992/// Nested message and enum types in `ManagementDnsZoneBinding`.
1993pub mod management_dns_zone_binding {
1994    /// Enum State defines possible states of binding between the consumer VPC
1995    /// network and the management DNS zone.
1996    #[derive(
1997        Clone,
1998        Copy,
1999        Debug,
2000        PartialEq,
2001        Eq,
2002        Hash,
2003        PartialOrd,
2004        Ord,
2005        ::prost::Enumeration
2006    )]
2007    #[repr(i32)]
2008    pub enum State {
2009        /// The default value. This value should never be used.
2010        Unspecified = 0,
2011        /// The binding is ready.
2012        Active = 1,
2013        /// The binding is being created.
2014        Creating = 2,
2015        /// The binding is being updated.
2016        Updating = 3,
2017        /// The binding is being deleted.
2018        Deleting = 4,
2019        /// The binding has failed.
2020        Failed = 5,
2021    }
2022    impl State {
2023        /// String value of the enum field names used in the ProtoBuf definition.
2024        ///
2025        /// The values are not transformed in any way and thus are considered stable
2026        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2027        pub fn as_str_name(&self) -> &'static str {
2028            match self {
2029                Self::Unspecified => "STATE_UNSPECIFIED",
2030                Self::Active => "ACTIVE",
2031                Self::Creating => "CREATING",
2032                Self::Updating => "UPDATING",
2033                Self::Deleting => "DELETING",
2034                Self::Failed => "FAILED",
2035            }
2036        }
2037        /// Creates an enum from field names used in the ProtoBuf definition.
2038        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2039            match value {
2040                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
2041                "ACTIVE" => Some(Self::Active),
2042                "CREATING" => Some(Self::Creating),
2043                "UPDATING" => Some(Self::Updating),
2044                "DELETING" => Some(Self::Deleting),
2045                "FAILED" => Some(Self::Failed),
2046                _ => None,
2047            }
2048        }
2049    }
2050    /// Required. The relative resource name of the network to bind to the
2051    /// management DNS zone. This network can be a consumer VPC network or a
2052    /// VMware engine network.
2053    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2054    pub enum BindNetwork {
2055        /// Network to bind is a standard consumer VPC.
2056        /// Specify the name in the following form for consumer
2057        /// VPC network: `projects/{project}/global/networks/{network_id}`.
2058        /// `{project}` can either be a project number or a project ID.
2059        #[prost(string, tag = "14")]
2060        VpcNetwork(::prost::alloc::string::String),
2061        /// Network to bind is a VMware Engine network.
2062        /// Specify the name in the following form for VMware engine network:
2063        /// `projects/{project}/locations/global/vmwareEngineNetworks/{vmware_engine_network_id}`.
2064        /// `{project}` can either be a project number or a project ID.
2065        #[prost(string, tag = "15")]
2066        VmwareEngineNetwork(::prost::alloc::string::String),
2067    }
2068}
2069/// VMware Engine network resource that provides connectivity for VMware Engine
2070/// private clouds.
2071#[derive(Clone, PartialEq, ::prost::Message)]
2072pub struct VmwareEngineNetwork {
2073    /// Output only. The resource name of the VMware Engine network.
2074    /// Resource names are schemeless URIs that follow the conventions in
2075    /// <https://cloud.google.com/apis/design/resource_names.>
2076    /// For example:
2077    /// `projects/my-project/locations/global/vmwareEngineNetworks/my-network`
2078    #[prost(string, tag = "1")]
2079    pub name: ::prost::alloc::string::String,
2080    /// Output only. Creation time of this resource.
2081    #[prost(message, optional, tag = "2")]
2082    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
2083    /// Output only. Last update time of this resource.
2084    #[prost(message, optional, tag = "3")]
2085    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
2086    /// User-provided description for this VMware Engine network.
2087    #[prost(string, tag = "5")]
2088    pub description: ::prost::alloc::string::String,
2089    /// Output only. VMware Engine service VPC networks that provide connectivity
2090    /// from a private cloud to customer projects, the internet, and other Google
2091    /// Cloud services.
2092    #[prost(message, repeated, tag = "6")]
2093    pub vpc_networks: ::prost::alloc::vec::Vec<vmware_engine_network::VpcNetwork>,
2094    /// Output only. State of the VMware Engine network.
2095    #[prost(enumeration = "vmware_engine_network::State", tag = "7")]
2096    pub state: i32,
2097    /// Required. VMware Engine network type.
2098    #[prost(enumeration = "vmware_engine_network::Type", tag = "8")]
2099    pub r#type: i32,
2100    /// Output only. System-generated unique identifier for the resource.
2101    #[prost(string, tag = "9")]
2102    pub uid: ::prost::alloc::string::String,
2103    /// Checksum that may be sent on update and delete requests to ensure that the
2104    /// user-provided value is up to date before the server processes a request.
2105    /// The server computes checksums based on the value of other fields in the
2106    /// request.
2107    #[prost(string, tag = "10")]
2108    pub etag: ::prost::alloc::string::String,
2109}
2110/// Nested message and enum types in `VmwareEngineNetwork`.
2111pub mod vmware_engine_network {
2112    /// Represents a VMware Engine VPC network that is managed by a
2113    /// VMware Engine network resource.
2114    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2115    pub struct VpcNetwork {
2116        /// Output only. Type of VPC network (INTRANET, INTERNET, or
2117        /// GOOGLE_CLOUD)
2118        #[prost(enumeration = "vpc_network::Type", tag = "1")]
2119        pub r#type: i32,
2120        /// Output only. The relative resource name of the service VPC network this
2121        /// VMware Engine network is attached to. For example:
2122        /// `projects/123123/global/networks/my-network`
2123        #[prost(string, tag = "2")]
2124        pub network: ::prost::alloc::string::String,
2125    }
2126    /// Nested message and enum types in `VpcNetwork`.
2127    pub mod vpc_network {
2128        /// Enum Type defines possible types of a VMware Engine network controlled
2129        /// service.
2130        #[derive(
2131            Clone,
2132            Copy,
2133            Debug,
2134            PartialEq,
2135            Eq,
2136            Hash,
2137            PartialOrd,
2138            Ord,
2139            ::prost::Enumeration
2140        )]
2141        #[repr(i32)]
2142        pub enum Type {
2143            /// The default value. This value should never be used.
2144            Unspecified = 0,
2145            /// VPC network that will be peered with a consumer VPC network or the
2146            /// intranet VPC of another VMware Engine network. Access a private cloud
2147            /// through Compute Engine VMs on a peered VPC network or an on-premises
2148            /// resource connected to a peered consumer VPC network.
2149            Intranet = 1,
2150            /// VPC network used for internet access to and from a private cloud.
2151            Internet = 2,
2152            /// VPC network used for access to Google Cloud services like
2153            /// Cloud Storage.
2154            GoogleCloud = 3,
2155        }
2156        impl Type {
2157            /// String value of the enum field names used in the ProtoBuf definition.
2158            ///
2159            /// The values are not transformed in any way and thus are considered stable
2160            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2161            pub fn as_str_name(&self) -> &'static str {
2162                match self {
2163                    Self::Unspecified => "TYPE_UNSPECIFIED",
2164                    Self::Intranet => "INTRANET",
2165                    Self::Internet => "INTERNET",
2166                    Self::GoogleCloud => "GOOGLE_CLOUD",
2167                }
2168            }
2169            /// Creates an enum from field names used in the ProtoBuf definition.
2170            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2171                match value {
2172                    "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
2173                    "INTRANET" => Some(Self::Intranet),
2174                    "INTERNET" => Some(Self::Internet),
2175                    "GOOGLE_CLOUD" => Some(Self::GoogleCloud),
2176                    _ => None,
2177                }
2178            }
2179        }
2180    }
2181    /// Enum State defines possible states of VMware Engine network.
2182    #[derive(
2183        Clone,
2184        Copy,
2185        Debug,
2186        PartialEq,
2187        Eq,
2188        Hash,
2189        PartialOrd,
2190        Ord,
2191        ::prost::Enumeration
2192    )]
2193    #[repr(i32)]
2194    pub enum State {
2195        /// The default value. This value is used if the state is omitted.
2196        Unspecified = 0,
2197        /// The VMware Engine network is being created.
2198        Creating = 1,
2199        /// The VMware Engine network is ready.
2200        Active = 2,
2201        /// The VMware Engine network is being updated.
2202        Updating = 3,
2203        /// The VMware Engine network is being deleted.
2204        Deleting = 4,
2205    }
2206    impl State {
2207        /// String value of the enum field names used in the ProtoBuf definition.
2208        ///
2209        /// The values are not transformed in any way and thus are considered stable
2210        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2211        pub fn as_str_name(&self) -> &'static str {
2212            match self {
2213                Self::Unspecified => "STATE_UNSPECIFIED",
2214                Self::Creating => "CREATING",
2215                Self::Active => "ACTIVE",
2216                Self::Updating => "UPDATING",
2217                Self::Deleting => "DELETING",
2218            }
2219        }
2220        /// Creates an enum from field names used in the ProtoBuf definition.
2221        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2222            match value {
2223                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
2224                "CREATING" => Some(Self::Creating),
2225                "ACTIVE" => Some(Self::Active),
2226                "UPDATING" => Some(Self::Updating),
2227                "DELETING" => Some(Self::Deleting),
2228                _ => None,
2229            }
2230        }
2231    }
2232    /// Enum Type defines possible types of VMware Engine network.
2233    #[derive(
2234        Clone,
2235        Copy,
2236        Debug,
2237        PartialEq,
2238        Eq,
2239        Hash,
2240        PartialOrd,
2241        Ord,
2242        ::prost::Enumeration
2243    )]
2244    #[repr(i32)]
2245    pub enum Type {
2246        /// The default value. This value should never be used.
2247        Unspecified = 0,
2248        /// Network type used by private clouds created in projects without a network
2249        /// of type `STANDARD`. This network type is no longer used for new VMware
2250        /// Engine private cloud deployments.
2251        Legacy = 1,
2252        /// Standard network type used for private cloud connectivity.
2253        Standard = 2,
2254    }
2255    impl Type {
2256        /// String value of the enum field names used in the ProtoBuf definition.
2257        ///
2258        /// The values are not transformed in any way and thus are considered stable
2259        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2260        pub fn as_str_name(&self) -> &'static str {
2261            match self {
2262                Self::Unspecified => "TYPE_UNSPECIFIED",
2263                Self::Legacy => "LEGACY",
2264                Self::Standard => "STANDARD",
2265            }
2266        }
2267        /// Creates an enum from field names used in the ProtoBuf definition.
2268        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2269            match value {
2270                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
2271                "LEGACY" => Some(Self::Legacy),
2272                "STANDARD" => Some(Self::Standard),
2273                _ => None,
2274            }
2275        }
2276    }
2277}
2278/// Private connection resource that provides connectivity for VMware Engine
2279/// private clouds.
2280#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2281pub struct PrivateConnection {
2282    /// Output only. The resource name of the private connection.
2283    /// Resource names are schemeless URIs that follow the conventions in
2284    /// <https://cloud.google.com/apis/design/resource_names.>
2285    /// For example:
2286    /// `projects/my-project/locations/us-central1/privateConnections/my-connection`
2287    #[prost(string, tag = "1")]
2288    pub name: ::prost::alloc::string::String,
2289    /// Output only. Creation time of this resource.
2290    #[prost(message, optional, tag = "2")]
2291    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
2292    /// Output only. Last update time of this resource.
2293    #[prost(message, optional, tag = "3")]
2294    pub update_time: ::core::option::Option<::prost_types::Timestamp>,
2295    /// Optional. User-provided description for this private connection.
2296    #[prost(string, tag = "4")]
2297    pub description: ::prost::alloc::string::String,
2298    /// Output only. State of the private connection.
2299    #[prost(enumeration = "private_connection::State", tag = "5")]
2300    pub state: i32,
2301    /// Required. The relative resource name of Legacy VMware Engine network.
2302    /// Specify the name in the following form:
2303    /// `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
2304    /// where `{project}`, `{location}` will be same as specified in private
2305    /// connection resource name and `{vmware_engine_network_id}` will be in the
2306    /// form of `{location}`-default e.g.
2307    /// projects/project/locations/us-central1/vmwareEngineNetworks/us-central1-default.
2308    #[prost(string, tag = "8")]
2309    pub vmware_engine_network: ::prost::alloc::string::String,
2310    /// Output only. The canonical name of the VMware Engine network in the form:
2311    /// `projects/{project_number}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`
2312    #[prost(string, tag = "9")]
2313    pub vmware_engine_network_canonical: ::prost::alloc::string::String,
2314    /// Required. Private connection type.
2315    #[prost(enumeration = "private_connection::Type", tag = "10")]
2316    pub r#type: i32,
2317    /// Output only. VPC network peering id between given network VPC and
2318    /// VMwareEngineNetwork.
2319    #[prost(string, tag = "12")]
2320    pub peering_id: ::prost::alloc::string::String,
2321    /// Optional. Routing Mode.
2322    /// Default value is set to GLOBAL.
2323    /// For type = PRIVATE_SERVICE_ACCESS, this field can be set to GLOBAL or
2324    /// REGIONAL, for other types only GLOBAL is supported.
2325    #[prost(enumeration = "private_connection::RoutingMode", tag = "13")]
2326    pub routing_mode: i32,
2327    /// Output only. System-generated unique identifier for the resource.
2328    #[prost(string, tag = "14")]
2329    pub uid: ::prost::alloc::string::String,
2330    /// Required. Service network to create private connection.
2331    /// Specify the name in the following form:
2332    /// `projects/{project}/global/networks/{network_id}`
2333    /// For type = PRIVATE_SERVICE_ACCESS, this field represents servicenetworking
2334    /// VPC, e.g. projects/project-tp/global/networks/servicenetworking.
2335    /// For type = NETAPP_CLOUD_VOLUME, this field represents NetApp service VPC,
2336    /// e.g. projects/project-tp/global/networks/netapp-tenant-vpc.
2337    /// For type = DELL_POWERSCALE, this field represent Dell service VPC, e.g.
2338    /// projects/project-tp/global/networks/dell-tenant-vpc.
2339    /// For type= THIRD_PARTY_SERVICE, this field could represent a consumer VPC or
2340    /// any other producer VPC to which the VMware Engine Network needs to be
2341    /// connected, e.g. projects/project/global/networks/vpc.
2342    #[prost(string, tag = "16")]
2343    pub service_network: ::prost::alloc::string::String,
2344    /// Output only. Peering state between service network and VMware Engine
2345    /// network.
2346    #[prost(enumeration = "private_connection::PeeringState", tag = "17")]
2347    pub peering_state: i32,
2348}
2349/// Nested message and enum types in `PrivateConnection`.
2350pub mod private_connection {
2351    /// Enum State defines possible states of private connection.
2352    #[derive(
2353        Clone,
2354        Copy,
2355        Debug,
2356        PartialEq,
2357        Eq,
2358        Hash,
2359        PartialOrd,
2360        Ord,
2361        ::prost::Enumeration
2362    )]
2363    #[repr(i32)]
2364    pub enum State {
2365        /// The default value. This value is used if the state is omitted.
2366        Unspecified = 0,
2367        /// The private connection is being created.
2368        Creating = 1,
2369        /// The private connection is ready.
2370        Active = 2,
2371        /// The private connection is being updated.
2372        Updating = 3,
2373        /// The private connection is being deleted.
2374        Deleting = 4,
2375        /// The private connection is not provisioned, since no private cloud is
2376        /// present for which this private connection is needed.
2377        Unprovisioned = 5,
2378        /// The private connection is in failed state.
2379        Failed = 6,
2380    }
2381    impl State {
2382        /// String value of the enum field names used in the ProtoBuf definition.
2383        ///
2384        /// The values are not transformed in any way and thus are considered stable
2385        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2386        pub fn as_str_name(&self) -> &'static str {
2387            match self {
2388                Self::Unspecified => "STATE_UNSPECIFIED",
2389                Self::Creating => "CREATING",
2390                Self::Active => "ACTIVE",
2391                Self::Updating => "UPDATING",
2392                Self::Deleting => "DELETING",
2393                Self::Unprovisioned => "UNPROVISIONED",
2394                Self::Failed => "FAILED",
2395            }
2396        }
2397        /// Creates an enum from field names used in the ProtoBuf definition.
2398        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2399            match value {
2400                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
2401                "CREATING" => Some(Self::Creating),
2402                "ACTIVE" => Some(Self::Active),
2403                "UPDATING" => Some(Self::Updating),
2404                "DELETING" => Some(Self::Deleting),
2405                "UNPROVISIONED" => Some(Self::Unprovisioned),
2406                "FAILED" => Some(Self::Failed),
2407                _ => None,
2408            }
2409        }
2410    }
2411    /// Enum Type defines possible types of private connection.
2412    #[derive(
2413        Clone,
2414        Copy,
2415        Debug,
2416        PartialEq,
2417        Eq,
2418        Hash,
2419        PartialOrd,
2420        Ord,
2421        ::prost::Enumeration
2422    )]
2423    #[repr(i32)]
2424    pub enum Type {
2425        /// The default value. This value should never be used.
2426        Unspecified = 0,
2427        /// Connection used for establishing [private services
2428        /// access](<https://cloud.google.com/vpc/docs/private-services-access>).
2429        PrivateServiceAccess = 1,
2430        /// Connection used for connecting to NetApp Cloud Volumes.
2431        NetappCloudVolumes = 2,
2432        /// Connection used for connecting to Dell PowerScale.
2433        DellPowerscale = 3,
2434        /// Connection used for connecting to third-party services.
2435        ThirdPartyService = 4,
2436    }
2437    impl Type {
2438        /// String value of the enum field names used in the ProtoBuf definition.
2439        ///
2440        /// The values are not transformed in any way and thus are considered stable
2441        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2442        pub fn as_str_name(&self) -> &'static str {
2443            match self {
2444                Self::Unspecified => "TYPE_UNSPECIFIED",
2445                Self::PrivateServiceAccess => "PRIVATE_SERVICE_ACCESS",
2446                Self::NetappCloudVolumes => "NETAPP_CLOUD_VOLUMES",
2447                Self::DellPowerscale => "DELL_POWERSCALE",
2448                Self::ThirdPartyService => "THIRD_PARTY_SERVICE",
2449            }
2450        }
2451        /// Creates an enum from field names used in the ProtoBuf definition.
2452        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2453            match value {
2454                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
2455                "PRIVATE_SERVICE_ACCESS" => Some(Self::PrivateServiceAccess),
2456                "NETAPP_CLOUD_VOLUMES" => Some(Self::NetappCloudVolumes),
2457                "DELL_POWERSCALE" => Some(Self::DellPowerscale),
2458                "THIRD_PARTY_SERVICE" => Some(Self::ThirdPartyService),
2459                _ => None,
2460            }
2461        }
2462    }
2463    /// Possible types for RoutingMode
2464    #[derive(
2465        Clone,
2466        Copy,
2467        Debug,
2468        PartialEq,
2469        Eq,
2470        Hash,
2471        PartialOrd,
2472        Ord,
2473        ::prost::Enumeration
2474    )]
2475    #[repr(i32)]
2476    pub enum RoutingMode {
2477        /// The default value. This value should never be used.
2478        Unspecified = 0,
2479        /// Global Routing Mode
2480        Global = 1,
2481        /// Regional Routing Mode
2482        Regional = 2,
2483    }
2484    impl RoutingMode {
2485        /// String value of the enum field names used in the ProtoBuf definition.
2486        ///
2487        /// The values are not transformed in any way and thus are considered stable
2488        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2489        pub fn as_str_name(&self) -> &'static str {
2490            match self {
2491                Self::Unspecified => "ROUTING_MODE_UNSPECIFIED",
2492                Self::Global => "GLOBAL",
2493                Self::Regional => "REGIONAL",
2494            }
2495        }
2496        /// Creates an enum from field names used in the ProtoBuf definition.
2497        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2498            match value {
2499                "ROUTING_MODE_UNSPECIFIED" => Some(Self::Unspecified),
2500                "GLOBAL" => Some(Self::Global),
2501                "REGIONAL" => Some(Self::Regional),
2502                _ => None,
2503            }
2504        }
2505    }
2506    /// Enum PeeringState defines the possible states of peering between service
2507    /// network and the vpc network peered to service network
2508    #[derive(
2509        Clone,
2510        Copy,
2511        Debug,
2512        PartialEq,
2513        Eq,
2514        Hash,
2515        PartialOrd,
2516        Ord,
2517        ::prost::Enumeration
2518    )]
2519    #[repr(i32)]
2520    pub enum PeeringState {
2521        /// The default value. This value is used if the peering state is omitted or
2522        /// unknown.
2523        Unspecified = 0,
2524        /// The peering is in active state.
2525        PeeringActive = 1,
2526        /// The peering is in inactive state.
2527        PeeringInactive = 2,
2528    }
2529    impl PeeringState {
2530        /// String value of the enum field names used in the ProtoBuf definition.
2531        ///
2532        /// The values are not transformed in any way and thus are considered stable
2533        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2534        pub fn as_str_name(&self) -> &'static str {
2535            match self {
2536                Self::Unspecified => "PEERING_STATE_UNSPECIFIED",
2537                Self::PeeringActive => "PEERING_ACTIVE",
2538                Self::PeeringInactive => "PEERING_INACTIVE",
2539            }
2540        }
2541        /// Creates an enum from field names used in the ProtoBuf definition.
2542        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2543            match value {
2544                "PEERING_STATE_UNSPECIFIED" => Some(Self::Unspecified),
2545                "PEERING_ACTIVE" => Some(Self::PeeringActive),
2546                "PEERING_INACTIVE" => Some(Self::PeeringInactive),
2547                _ => None,
2548            }
2549        }
2550    }
2551}
2552/// VmwareEngine specific metadata for the given
2553/// \[google.cloud.location.Location\]\[google.cloud.location.Location\]. It is
2554/// returned as a content of the `google.cloud.location.Location.metadata` field.
2555#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2556pub struct LocationMetadata {
2557    /// Output only. Capabilities of this location.
2558    #[prost(
2559        enumeration = "location_metadata::Capability",
2560        repeated,
2561        packed = "false",
2562        tag = "1"
2563    )]
2564    pub capabilities: ::prost::alloc::vec::Vec<i32>,
2565}
2566/// Nested message and enum types in `LocationMetadata`.
2567pub mod location_metadata {
2568    /// Capability of a location.
2569    #[derive(
2570        Clone,
2571        Copy,
2572        Debug,
2573        PartialEq,
2574        Eq,
2575        Hash,
2576        PartialOrd,
2577        Ord,
2578        ::prost::Enumeration
2579    )]
2580    #[repr(i32)]
2581    pub enum Capability {
2582        /// The default value. This value is used if the capability is omitted or
2583        /// unknown.
2584        Unspecified = 0,
2585        /// Stretch clusters are supported in this location.
2586        StretchedClusters = 1,
2587    }
2588    impl Capability {
2589        /// String value of the enum field names used in the ProtoBuf definition.
2590        ///
2591        /// The values are not transformed in any way and thus are considered stable
2592        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2593        pub fn as_str_name(&self) -> &'static str {
2594            match self {
2595                Self::Unspecified => "CAPABILITY_UNSPECIFIED",
2596                Self::StretchedClusters => "STRETCHED_CLUSTERS",
2597            }
2598        }
2599        /// Creates an enum from field names used in the ProtoBuf definition.
2600        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2601            match value {
2602                "CAPABILITY_UNSPECIFIED" => Some(Self::Unspecified),
2603                "STRETCHED_CLUSTERS" => Some(Self::StretchedClusters),
2604                _ => None,
2605            }
2606        }
2607    }
2608}
2609/// DnsBindPermission resource that contains the accounts having the consumer DNS
2610/// bind permission on the corresponding intranet VPC of the consumer project.
2611#[derive(Clone, PartialEq, ::prost::Message)]
2612pub struct DnsBindPermission {
2613    /// Required. Output only. The name of the resource which stores the
2614    /// users/service accounts having the permission to bind to the corresponding
2615    /// intranet VPC of the consumer project. DnsBindPermission is a global
2616    /// resource and location can only be global. Resource names are schemeless
2617    /// URIs that follow the conventions in
2618    /// <https://cloud.google.com/apis/design/resource_names.> For example:
2619    /// `projects/my-project/locations/global/dnsBindPermission`
2620    #[prost(string, tag = "1")]
2621    pub name: ::prost::alloc::string::String,
2622    /// Output only. Users/Service accounts which have access for binding on the
2623    /// intranet VPC project corresponding to the consumer project.
2624    #[prost(message, repeated, tag = "2")]
2625    pub principals: ::prost::alloc::vec::Vec<Principal>,
2626}
2627/// Users/Service accounts which have access for DNS binding on the intranet
2628/// VPC corresponding to the consumer project.
2629#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2630pub struct Principal {
2631    /// The consumer provided user/service account which needs to be
2632    /// granted permission to DNS bind with the intranet VPC corresponding to the
2633    /// consumer project.
2634    #[prost(oneof = "principal::Principal", tags = "1, 2")]
2635    pub principal: ::core::option::Option<principal::Principal>,
2636}
2637/// Nested message and enum types in `Principal`.
2638pub mod principal {
2639    /// The consumer provided user/service account which needs to be
2640    /// granted permission to DNS bind with the intranet VPC corresponding to the
2641    /// consumer project.
2642    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2643    pub enum Principal {
2644        /// The user who needs to be granted permission.
2645        #[prost(string, tag = "1")]
2646        User(::prost::alloc::string::String),
2647        /// The service account which needs to be granted the permission.
2648        #[prost(string, tag = "2")]
2649        ServiceAccount(::prost::alloc::string::String),
2650    }
2651}
2652/// Request message for
2653/// \[VmwareEngine.ListPrivateClouds\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateClouds\]
2654#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2655pub struct ListPrivateCloudsRequest {
2656    /// Required. The resource name of the private cloud to be queried for
2657    /// clusters. Resource names are schemeless URIs that follow the conventions in
2658    /// <https://cloud.google.com/apis/design/resource_names.>
2659    /// For example:
2660    /// `projects/my-project/locations/us-central1-a`
2661    #[prost(string, tag = "1")]
2662    pub parent: ::prost::alloc::string::String,
2663    /// The maximum number of private clouds to return in one page.
2664    /// The service may return fewer than this value.
2665    /// The maximum value is coerced to 1000.
2666    /// The default value of this field is 500.
2667    #[prost(int32, tag = "2")]
2668    pub page_size: i32,
2669    /// A page token, received from a previous `ListPrivateClouds` call.
2670    /// Provide this to retrieve the subsequent page.
2671    ///
2672    /// When paginating, all other parameters provided to `ListPrivateClouds` must
2673    /// match the call that provided the page token.
2674    #[prost(string, tag = "3")]
2675    pub page_token: ::prost::alloc::string::String,
2676    /// A filter expression that matches resources returned in the response.
2677    /// The expression must specify the field name, a comparison operator, and the
2678    /// value that you want to use for filtering. The value must be a string, a
2679    /// number, or a boolean. The comparison operator must be `=`, `!=`, `>`, or
2680    /// `<`.
2681    ///
2682    /// For example, if you are filtering a list of private clouds, you can exclude
2683    /// the ones named `example-pc` by specifying `name != "example-pc"`.
2684    ///
2685    /// You can also filter nested fields. For example, you could specify
2686    /// `networkConfig.managementCidr = "192.168.0.0/24"` to include private clouds
2687    /// only if they have a matching address in their network configuration.
2688    ///
2689    /// To filter on multiple expressions, provide each separate expression within
2690    /// parentheses. For example:
2691    ///
2692    /// ```text,
2693    /// (name = "example-pc")
2694    /// (createTime > "2021-04-12T08:15:10.40Z")
2695    /// ```
2696    ///
2697    /// By default, each expression is an `AND` expression. However, you can
2698    /// include `AND` and `OR` expressions explicitly. For example:
2699    ///
2700    /// ```text,
2701    /// (name = "private-cloud-1") AND
2702    /// (createTime > "2021-04-12T08:15:10.40Z") OR
2703    /// (name = "private-cloud-2")
2704    /// ```
2705    #[prost(string, tag = "4")]
2706    pub filter: ::prost::alloc::string::String,
2707    /// Sorts list results by a certain order. By default, returned results are
2708    /// ordered by `name` in ascending order. You can also sort results in
2709    /// descending order based on the `name` value using `orderBy="name desc"`.
2710    /// Currently, only ordering by `name` is supported.
2711    #[prost(string, tag = "5")]
2712    pub order_by: ::prost::alloc::string::String,
2713}
2714/// Response message for
2715/// \[VmwareEngine.ListPrivateClouds\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateClouds\]
2716#[derive(Clone, PartialEq, ::prost::Message)]
2717pub struct ListPrivateCloudsResponse {
2718    /// A list of private clouds.
2719    #[prost(message, repeated, tag = "1")]
2720    pub private_clouds: ::prost::alloc::vec::Vec<PrivateCloud>,
2721    /// A token, which can be sent as `page_token` to retrieve the next page.
2722    /// If this field is omitted, there are no subsequent pages.
2723    #[prost(string, tag = "2")]
2724    pub next_page_token: ::prost::alloc::string::String,
2725    /// Locations that could not be reached when making an aggregated query using
2726    /// wildcards.
2727    #[prost(string, repeated, tag = "3")]
2728    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2729}
2730/// Request message for
2731/// \[VmwareEngine.GetPrivateCloud\]\[google.cloud.vmwareengine.v1.VmwareEngine.GetPrivateCloud\]
2732#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2733pub struct GetPrivateCloudRequest {
2734    /// Required. The resource name of the private cloud to retrieve.
2735    /// Resource names are schemeless URIs that follow the conventions in
2736    /// <https://cloud.google.com/apis/design/resource_names.>
2737    /// For example:
2738    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
2739    #[prost(string, tag = "1")]
2740    pub name: ::prost::alloc::string::String,
2741}
2742/// Request message for
2743/// \[VmwareEngine.CreatePrivateCloud\]\[google.cloud.vmwareengine.v1.VmwareEngine.CreatePrivateCloud\]
2744#[derive(Clone, PartialEq, ::prost::Message)]
2745pub struct CreatePrivateCloudRequest {
2746    /// Required. The resource name of the location to create the new
2747    /// private cloud in. Resource names are schemeless URIs that follow the
2748    /// conventions in <https://cloud.google.com/apis/design/resource_names.>
2749    /// For example:
2750    /// `projects/my-project/locations/us-central1-a`
2751    #[prost(string, tag = "1")]
2752    pub parent: ::prost::alloc::string::String,
2753    /// Required. The user-provided identifier of the private cloud to be created.
2754    /// This identifier must be unique among each `PrivateCloud` within the parent
2755    /// and becomes the final token in the name URI.
2756    /// The identifier must meet the following requirements:
2757    ///
2758    /// * Only contains 1-63 alphanumeric characters and hyphens
2759    /// * Begins with an alphabetical character
2760    /// * Ends with a non-hyphen character
2761    /// * Not formatted as a UUID
2762    /// * Complies with [RFC 1034](<https://datatracker.ietf.org/doc/html/rfc1034>)
2763    ///   (section 3.5)
2764    #[prost(string, tag = "2")]
2765    pub private_cloud_id: ::prost::alloc::string::String,
2766    /// Required. The initial description of the new private cloud.
2767    #[prost(message, optional, tag = "3")]
2768    pub private_cloud: ::core::option::Option<PrivateCloud>,
2769    /// Optional. The request ID must be a valid UUID with the exception that zero
2770    /// UUID is not supported (00000000-0000-0000-0000-000000000000).
2771    #[prost(string, tag = "4")]
2772    pub request_id: ::prost::alloc::string::String,
2773    /// Optional. True if you want the request to be validated and not executed;
2774    /// false otherwise.
2775    #[prost(bool, tag = "5")]
2776    pub validate_only: bool,
2777}
2778/// Request message for
2779/// \[VmwareEngine.UpdatePrivateCloud\]\[google.cloud.vmwareengine.v1.VmwareEngine.UpdatePrivateCloud\]
2780#[derive(Clone, PartialEq, ::prost::Message)]
2781pub struct UpdatePrivateCloudRequest {
2782    /// Required. Private cloud description.
2783    #[prost(message, optional, tag = "1")]
2784    pub private_cloud: ::core::option::Option<PrivateCloud>,
2785    /// Required. Field mask is used to specify the fields to be overwritten in the
2786    /// `PrivateCloud` resource by the update. The fields specified in `updateMask`
2787    /// are relative to the resource, not the full request. A field will be
2788    /// overwritten if it is in the mask. If the user does not provide a mask then
2789    /// all fields will be overwritten.
2790    #[prost(message, optional, tag = "2")]
2791    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
2792    /// Optional. The request ID must be a valid UUID with the exception that zero
2793    /// UUID is not supported (00000000-0000-0000-0000-000000000000).
2794    #[prost(string, tag = "3")]
2795    pub request_id: ::prost::alloc::string::String,
2796}
2797/// Request message for
2798/// \[VmwareEngine.DeletePrivateCloud\]\[google.cloud.vmwareengine.v1.VmwareEngine.DeletePrivateCloud\]
2799#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2800pub struct DeletePrivateCloudRequest {
2801    /// Required. The resource name of the private cloud to delete.
2802    /// Resource names are schemeless URIs that follow the conventions in
2803    /// <https://cloud.google.com/apis/design/resource_names.>
2804    /// For example:
2805    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
2806    #[prost(string, tag = "1")]
2807    pub name: ::prost::alloc::string::String,
2808    /// Optional. The request ID must be a valid UUID with the exception that zero
2809    /// UUID is not supported (00000000-0000-0000-0000-000000000000).
2810    #[prost(string, tag = "2")]
2811    pub request_id: ::prost::alloc::string::String,
2812    /// Optional. If set to true, cascade delete is enabled and all children of
2813    /// this private cloud resource are also deleted. When this flag is set to
2814    /// false, the private cloud will not be deleted if there are any children
2815    /// other than the management cluster. The management cluster is always
2816    /// deleted.
2817    #[prost(bool, tag = "3")]
2818    pub force: bool,
2819    /// Optional. Time delay of the deletion specified in hours. The default value
2820    /// is `3`. Specifying a non-zero value for this field changes the value of
2821    /// `PrivateCloud.state` to `DELETED` and sets `expire_time` to the planned
2822    /// deletion time. Deletion can be cancelled before `expire_time` elapses using
2823    /// \[VmwareEngine.UndeletePrivateCloud\]\[google.cloud.vmwareengine.v1.VmwareEngine.UndeletePrivateCloud\].
2824    /// Specifying a value of `0` for this field instead begins the deletion
2825    /// process and ceases billing immediately. During the final deletion process,
2826    /// the value of `PrivateCloud.state` becomes `PURGING`.
2827    #[prost(int32, optional, tag = "4")]
2828    pub delay_hours: ::core::option::Option<i32>,
2829}
2830/// Request message for
2831/// \[VmwareEngine.UndeletePrivateCloud\]\[google.cloud.vmwareengine.v1.VmwareEngine.UndeletePrivateCloud\]
2832#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2833pub struct UndeletePrivateCloudRequest {
2834    /// Required. The resource name of the private cloud scheduled for deletion.
2835    /// Resource names are schemeless URIs that follow the conventions in
2836    /// <https://cloud.google.com/apis/design/resource_names.>
2837    /// For example:
2838    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
2839    #[prost(string, tag = "1")]
2840    pub name: ::prost::alloc::string::String,
2841    /// Optional. The request ID must be a valid UUID with the exception that zero
2842    /// UUID is not supported (00000000-0000-0000-0000-000000000000).
2843    #[prost(string, tag = "2")]
2844    pub request_id: ::prost::alloc::string::String,
2845}
2846/// Request message for
2847/// \[VmwareEngine.ListClusters\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListClusters\]
2848#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2849pub struct ListClustersRequest {
2850    /// Required. The resource name of the private cloud to query for clusters.
2851    /// Resource names are schemeless URIs that follow the conventions in
2852    /// <https://cloud.google.com/apis/design/resource_names.>
2853    /// For example:
2854    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
2855    #[prost(string, tag = "1")]
2856    pub parent: ::prost::alloc::string::String,
2857    /// The maximum number of clusters to return in one page.
2858    /// The service may return fewer than this value.
2859    /// The maximum value is coerced to 1000.
2860    /// The default value of this field is 500.
2861    #[prost(int32, tag = "2")]
2862    pub page_size: i32,
2863    /// A page token, received from a previous `ListClusters` call.
2864    /// Provide this to retrieve the subsequent page.
2865    ///
2866    /// When paginating, all other parameters provided to `ListClusters`
2867    /// must match the call that provided the page token.
2868    #[prost(string, tag = "3")]
2869    pub page_token: ::prost::alloc::string::String,
2870    /// To filter on multiple expressions, provide each separate expression within
2871    /// parentheses. For example:
2872    ///
2873    /// ```text,
2874    /// (name = "example-cluster")
2875    /// (nodeCount = "3")
2876    /// ```
2877    ///
2878    /// By default, each expression is an `AND` expression. However, you can
2879    /// include `AND` and `OR` expressions explicitly. For example:
2880    ///
2881    /// ```text,
2882    /// (name = "example-cluster-1") AND
2883    /// (createTime > "2021-04-12T08:15:10.40Z") OR
2884    /// (name = "example-cluster-2")
2885    /// ```
2886    #[prost(string, tag = "4")]
2887    pub filter: ::prost::alloc::string::String,
2888    /// Sorts list results by a certain order. By default, returned results are
2889    /// ordered by `name` in ascending order. You can also sort results in
2890    /// descending order based on the `name` value using `orderBy="name desc"`.
2891    /// Currently, only ordering by `name` is supported.
2892    #[prost(string, tag = "5")]
2893    pub order_by: ::prost::alloc::string::String,
2894}
2895/// Response message for
2896/// \[VmwareEngine.ListClusters\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListClusters\]
2897#[derive(Clone, PartialEq, ::prost::Message)]
2898pub struct ListClustersResponse {
2899    /// A list of private cloud clusters.
2900    #[prost(message, repeated, tag = "1")]
2901    pub clusters: ::prost::alloc::vec::Vec<Cluster>,
2902    /// A token, which can be sent as `page_token` to retrieve the next page.
2903    /// If this field is omitted, there are no subsequent pages.
2904    #[prost(string, tag = "2")]
2905    pub next_page_token: ::prost::alloc::string::String,
2906    /// Locations that could not be reached when making an aggregated query using
2907    /// wildcards.
2908    #[prost(string, repeated, tag = "3")]
2909    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2910}
2911/// Request message for
2912/// \[VmwareEngine.GetCluster\]\[google.cloud.vmwareengine.v1.VmwareEngine.GetCluster\]
2913#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2914pub struct GetClusterRequest {
2915    /// Required. The cluster resource name to retrieve.
2916    /// Resource names are schemeless URIs that follow the conventions in
2917    /// <https://cloud.google.com/apis/design/resource_names.>
2918    /// For example:
2919    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/clusters/my-cluster`
2920    #[prost(string, tag = "1")]
2921    pub name: ::prost::alloc::string::String,
2922}
2923/// Request message for
2924/// \[VmwareEngine.CreateCluster\]\[google.cloud.vmwareengine.v1.VmwareEngine.CreateCluster\]
2925#[derive(Clone, PartialEq, ::prost::Message)]
2926pub struct CreateClusterRequest {
2927    /// Required. The resource name of the private cloud to create a new cluster
2928    /// in. Resource names are schemeless URIs that follow the conventions in
2929    /// <https://cloud.google.com/apis/design/resource_names.>
2930    /// For example:
2931    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
2932    #[prost(string, tag = "1")]
2933    pub parent: ::prost::alloc::string::String,
2934    /// Required. The user-provided identifier of the new `Cluster`.
2935    /// This identifier must be unique among clusters within the parent and becomes
2936    /// the final token in the name URI.
2937    /// The identifier must meet the following requirements:
2938    ///
2939    /// * Only contains 1-63 alphanumeric characters and hyphens
2940    /// * Begins with an alphabetical character
2941    /// * Ends with a non-hyphen character
2942    /// * Not formatted as a UUID
2943    /// * Complies with [RFC 1034](<https://datatracker.ietf.org/doc/html/rfc1034>)
2944    ///   (section 3.5)
2945    #[prost(string, tag = "2")]
2946    pub cluster_id: ::prost::alloc::string::String,
2947    /// Required. The initial description of the new cluster.
2948    #[prost(message, optional, tag = "3")]
2949    pub cluster: ::core::option::Option<Cluster>,
2950    /// Optional. The request ID must be a valid UUID with the exception that zero
2951    /// UUID is not supported (00000000-0000-0000-0000-000000000000).
2952    #[prost(string, tag = "4")]
2953    pub request_id: ::prost::alloc::string::String,
2954    /// Optional. True if you want the request to be validated and not executed;
2955    /// false otherwise.
2956    #[prost(bool, tag = "5")]
2957    pub validate_only: bool,
2958}
2959/// Request message for
2960/// \[VmwareEngine.UpdateCluster\]\[google.cloud.vmwareengine.v1.VmwareEngine.UpdateCluster\]
2961#[derive(Clone, PartialEq, ::prost::Message)]
2962pub struct UpdateClusterRequest {
2963    /// Required. Field mask is used to specify the fields to be overwritten in the
2964    /// `Cluster` resource by the update. The fields specified in the `updateMask`
2965    /// are relative to the resource, not the full request. A field will be
2966    /// overwritten if it is in the mask. If the user does not provide a mask then
2967    /// all fields will be overwritten.
2968    #[prost(message, optional, tag = "1")]
2969    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
2970    /// Required. The description of the cluster.
2971    #[prost(message, optional, tag = "2")]
2972    pub cluster: ::core::option::Option<Cluster>,
2973    /// Optional. The request ID must be a valid UUID with the exception that
2974    /// zero UUID is not supported (00000000-0000-0000-0000-000000000000).
2975    #[prost(string, tag = "3")]
2976    pub request_id: ::prost::alloc::string::String,
2977    /// Optional. True if you want the request to be validated and not executed;
2978    /// false otherwise.
2979    #[prost(bool, tag = "4")]
2980    pub validate_only: bool,
2981}
2982/// Request message for
2983/// \[VmwareEngine.DeleteCluster\]\[google.cloud.vmwareengine.v1.VmwareEngine.DeleteCluster\]
2984#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2985pub struct DeleteClusterRequest {
2986    /// Required. The resource name of the cluster to delete.
2987    /// Resource names are schemeless URIs that follow the conventions in
2988    /// <https://cloud.google.com/apis/design/resource_names.>
2989    /// For example:
2990    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/clusters/my-cluster`
2991    #[prost(string, tag = "1")]
2992    pub name: ::prost::alloc::string::String,
2993    /// Optional. The request ID must be a valid UUID with the exception that zero
2994    /// UUID is not supported (00000000-0000-0000-0000-000000000000).
2995    #[prost(string, tag = "2")]
2996    pub request_id: ::prost::alloc::string::String,
2997}
2998/// Request message for
2999/// \[VmwareEngine.ListNodes\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListNodes\]
3000#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3001pub struct ListNodesRequest {
3002    /// Required. The resource name of the cluster to be queried for nodes.
3003    /// Resource names are schemeless URIs that follow the conventions in
3004    /// <https://cloud.google.com/apis/design/resource_names.>
3005    /// For example:
3006    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/clusters/my-cluster`
3007    #[prost(string, tag = "1")]
3008    pub parent: ::prost::alloc::string::String,
3009    /// The maximum number of nodes to return in one page.
3010    /// The service may return fewer than this value.
3011    /// The maximum value is coerced to 1000.
3012    /// The default value of this field is 500.
3013    #[prost(int32, tag = "2")]
3014    pub page_size: i32,
3015    /// A page token, received from a previous `ListNodes` call.
3016    /// Provide this to retrieve the subsequent page.
3017    ///
3018    /// When paginating, all other parameters provided to
3019    /// `ListNodes` must match the call that provided the page
3020    /// token.
3021    #[prost(string, tag = "3")]
3022    pub page_token: ::prost::alloc::string::String,
3023}
3024/// Response message for
3025/// \[VmwareEngine.ListNodes\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListNodes\]
3026#[derive(Clone, PartialEq, ::prost::Message)]
3027pub struct ListNodesResponse {
3028    /// The nodes.
3029    #[prost(message, repeated, tag = "1")]
3030    pub nodes: ::prost::alloc::vec::Vec<Node>,
3031    /// A token, which can be sent as `page_token` to retrieve the next page.
3032    /// If this field is omitted, there are no subsequent pages.
3033    #[prost(string, tag = "2")]
3034    pub next_page_token: ::prost::alloc::string::String,
3035}
3036/// Request message for
3037/// \[VmwareEngine.GetNode\]\[google.cloud.vmwareengine.v1.VmwareEngine.GetNode\]
3038#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3039pub struct GetNodeRequest {
3040    /// Required. The resource name of the node to retrieve.
3041    /// For example:
3042    /// `projects/{project}/locations/{location}/privateClouds/{private_cloud}/clusters/{cluster}/nodes/{node}`
3043    #[prost(string, tag = "1")]
3044    pub name: ::prost::alloc::string::String,
3045}
3046/// Request message for
3047/// \[VmwareEngine.ListExternalAddresses\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListExternalAddresses\]
3048#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3049pub struct ListExternalAddressesRequest {
3050    /// Required. The resource name of the private cloud to be queried for
3051    /// external IP addresses.
3052    /// Resource names are schemeless URIs that follow the conventions in
3053    /// <https://cloud.google.com/apis/design/resource_names.>
3054    /// For example:
3055    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
3056    #[prost(string, tag = "1")]
3057    pub parent: ::prost::alloc::string::String,
3058    /// The maximum number of external IP addresses to return in one page.
3059    /// The service may return fewer than this value.
3060    /// The maximum value is coerced to 1000.
3061    /// The default value of this field is 500.
3062    #[prost(int32, tag = "2")]
3063    pub page_size: i32,
3064    /// A page token, received from a previous `ListExternalAddresses` call.
3065    /// Provide this to retrieve the subsequent page.
3066    ///
3067    /// When paginating, all other parameters provided to
3068    /// `ListExternalAddresses` must match the call that provided the page token.
3069    #[prost(string, tag = "3")]
3070    pub page_token: ::prost::alloc::string::String,
3071    /// A filter expression that matches resources returned in the response.
3072    /// The expression must specify the field name, a comparison
3073    /// operator, and the value that you want to use for filtering. The value
3074    /// must be a string, a number, or a boolean. The comparison operator
3075    /// must be `=`, `!=`, `>`, or `<`.
3076    ///
3077    /// For example, if you are filtering a list of IP addresses, you can
3078    /// exclude the ones named `example-ip` by specifying
3079    /// `name != "example-ip"`.
3080    ///
3081    /// To filter on multiple expressions, provide each separate expression within
3082    /// parentheses. For example:
3083    ///
3084    /// ```text,
3085    /// (name = "example-ip")
3086    /// (createTime > "2021-04-12T08:15:10.40Z")
3087    /// ```
3088    ///
3089    /// By default, each expression is an `AND` expression. However, you
3090    /// can include `AND` and `OR` expressions explicitly.
3091    /// For example:
3092    ///
3093    /// ```text,
3094    /// (name = "example-ip-1") AND
3095    /// (createTime > "2021-04-12T08:15:10.40Z") OR
3096    /// (name = "example-ip-2")
3097    /// ```
3098    #[prost(string, tag = "4")]
3099    pub filter: ::prost::alloc::string::String,
3100    /// Sorts list results by a certain order. By default, returned results
3101    /// are ordered by `name` in ascending order.
3102    /// You can also sort results in descending order based on the `name` value
3103    /// using `orderBy="name desc"`.
3104    /// Currently, only ordering by `name` is supported.
3105    #[prost(string, tag = "5")]
3106    pub order_by: ::prost::alloc::string::String,
3107}
3108/// Response message for
3109/// \[VmwareEngine.ListExternalAddresses\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListExternalAddresses\]
3110#[derive(Clone, PartialEq, ::prost::Message)]
3111pub struct ListExternalAddressesResponse {
3112    /// A list of external IP addresses.
3113    #[prost(message, repeated, tag = "1")]
3114    pub external_addresses: ::prost::alloc::vec::Vec<ExternalAddress>,
3115    /// A token, which can be sent as `page_token` to retrieve the next page.
3116    /// If this field is omitted, there are no subsequent pages.
3117    #[prost(string, tag = "2")]
3118    pub next_page_token: ::prost::alloc::string::String,
3119    /// Locations that could not be reached when making an aggregated query using
3120    /// wildcards.
3121    #[prost(string, repeated, tag = "3")]
3122    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3123}
3124/// Request message for
3125/// \[VmwareEngine.FetchNetworkPolicyExternalAddresses\]\[google.cloud.vmwareengine.v1.VmwareEngine.FetchNetworkPolicyExternalAddresses\]
3126#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3127pub struct FetchNetworkPolicyExternalAddressesRequest {
3128    /// Required. The resource name of the network policy to query for assigned
3129    /// external IP addresses. Resource names are schemeless URIs that follow the
3130    /// conventions in <https://cloud.google.com/apis/design/resource_names.> For
3131    /// example:
3132    /// `projects/my-project/locations/us-central1/networkPolicies/my-policy`
3133    #[prost(string, tag = "1")]
3134    pub network_policy: ::prost::alloc::string::String,
3135    /// The maximum number of external IP addresses to return in one page.
3136    /// The service may return fewer than this value.
3137    /// The maximum value is coerced to 1000.
3138    /// The default value of this field is 500.
3139    #[prost(int32, tag = "2")]
3140    pub page_size: i32,
3141    /// A page token, received from a previous
3142    /// `FetchNetworkPolicyExternalAddresses` call. Provide this to retrieve the
3143    /// subsequent page.
3144    ///
3145    /// When paginating, all parameters provided to
3146    /// `FetchNetworkPolicyExternalAddresses`, except for `page_size` and
3147    /// `page_token`, must match the call that provided the page token.
3148    #[prost(string, tag = "3")]
3149    pub page_token: ::prost::alloc::string::String,
3150}
3151/// Response message for
3152/// \[VmwareEngine.FetchNetworkPolicyExternalAddresses\]\[google.cloud.vmwareengine.v1.VmwareEngine.FetchNetworkPolicyExternalAddresses\]
3153#[derive(Clone, PartialEq, ::prost::Message)]
3154pub struct FetchNetworkPolicyExternalAddressesResponse {
3155    /// A list of external IP addresses assigned to VMware workload VMs within the
3156    /// scope of the given network policy.
3157    #[prost(message, repeated, tag = "1")]
3158    pub external_addresses: ::prost::alloc::vec::Vec<ExternalAddress>,
3159    /// A token, which can be sent as `page_token` to retrieve the next page.
3160    /// If this field is omitted, there are no subsequent pages.
3161    #[prost(string, tag = "2")]
3162    pub next_page_token: ::prost::alloc::string::String,
3163}
3164/// Request message for
3165/// \[VmwareEngine.GetExternalAddress\]\[google.cloud.vmwareengine.v1.VmwareEngine.GetExternalAddress\]
3166#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3167pub struct GetExternalAddressRequest {
3168    /// Required. The resource name of the external IP address to retrieve.
3169    /// Resource names are schemeless URIs that follow the conventions in
3170    /// <https://cloud.google.com/apis/design/resource_names.>
3171    /// For example:
3172    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/externalAddresses/my-ip`
3173    #[prost(string, tag = "1")]
3174    pub name: ::prost::alloc::string::String,
3175}
3176/// Request message for
3177/// \[VmwareEngine.CreateExternalAddress\]\[google.cloud.vmwareengine.v1.VmwareEngine.CreateExternalAddress\]
3178#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3179pub struct CreateExternalAddressRequest {
3180    /// Required. The resource name of the private cloud
3181    /// to create a new external IP address in.
3182    /// Resource names are schemeless URIs that follow the conventions in
3183    /// <https://cloud.google.com/apis/design/resource_names.>
3184    /// For example:
3185    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
3186    #[prost(string, tag = "1")]
3187    pub parent: ::prost::alloc::string::String,
3188    /// Required. The initial description of a new external IP address.
3189    #[prost(message, optional, tag = "2")]
3190    pub external_address: ::core::option::Option<ExternalAddress>,
3191    /// Required. The user-provided identifier of the `ExternalAddress` to be
3192    /// created. This identifier must be unique among `ExternalAddress` resources
3193    /// within the parent and becomes the final token in the name URI. The
3194    /// identifier must meet the following requirements:
3195    ///
3196    /// * Only contains 1-63 alphanumeric characters and hyphens
3197    /// * Begins with an alphabetical character
3198    /// * Ends with a non-hyphen character
3199    /// * Not formatted as a UUID
3200    /// * Complies with [RFC 1034](<https://datatracker.ietf.org/doc/html/rfc1034>)
3201    ///   (section 3.5)
3202    #[prost(string, tag = "3")]
3203    pub external_address_id: ::prost::alloc::string::String,
3204    /// Optional. A request ID to identify requests. Specify a unique request ID
3205    /// so that if you must retry your request, the server will know to ignore
3206    /// the request if it has already been completed. The server guarantees that a
3207    /// request doesn't result in creation of duplicate commitments for at least 60
3208    /// minutes.
3209    ///
3210    /// For example, consider a situation where you make an initial request and the
3211    /// request times out. If you make the request again with the same request ID,
3212    /// the server can check if the original operation with the same request ID was
3213    /// received, and if so, will ignore the second request. This prevents clients
3214    /// from accidentally creating duplicate commitments.
3215    ///
3216    /// The request ID must be a valid UUID with the exception that zero UUID is
3217    /// not supported (00000000-0000-0000-0000-000000000000).
3218    #[prost(string, tag = "4")]
3219    pub request_id: ::prost::alloc::string::String,
3220}
3221/// Request message for
3222/// \[VmwareEngine.UpdateExternalAddress\]\[google.cloud.vmwareengine.v1.VmwareEngine.UpdateExternalAddress\]
3223#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3224pub struct UpdateExternalAddressRequest {
3225    /// Required. Field mask is used to specify the fields to be overwritten in the
3226    /// `ExternalAddress` resource by the update.
3227    /// The fields specified in the `update_mask` are relative to the resource, not
3228    /// the full request. A field will be overwritten if it is in the mask. If the
3229    /// user does not provide a mask then all fields will be overwritten.
3230    #[prost(message, optional, tag = "1")]
3231    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
3232    /// Required. External IP address description.
3233    #[prost(message, optional, tag = "2")]
3234    pub external_address: ::core::option::Option<ExternalAddress>,
3235    /// Optional. A request ID to identify requests. Specify a unique request ID
3236    /// so that if you must retry your request, the server will know to ignore
3237    /// the request if it has already been completed. The server guarantees that a
3238    /// request doesn't result in creation of duplicate commitments for at least 60
3239    /// minutes.
3240    ///
3241    /// For example, consider a situation where you make an initial request and the
3242    /// request times out. If you make the request again with the same request ID,
3243    /// the server can check if the original operation with the same request ID was
3244    /// received, and if so, will ignore the second request. This prevents clients
3245    /// from accidentally creating duplicate commitments.
3246    ///
3247    /// The request ID must be a valid UUID with the exception that zero UUID is
3248    /// not supported (00000000-0000-0000-0000-000000000000).
3249    #[prost(string, tag = "3")]
3250    pub request_id: ::prost::alloc::string::String,
3251}
3252/// Request message for
3253/// \[VmwareEngine.DeleteExternalAddress\]\[google.cloud.vmwareengine.v1.VmwareEngine.DeleteExternalAddress\]
3254#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3255pub struct DeleteExternalAddressRequest {
3256    /// Required. The resource name of the external IP address to delete.
3257    /// Resource names are schemeless URIs that follow the conventions in
3258    /// <https://cloud.google.com/apis/design/resource_names.>
3259    /// For example:
3260    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/externalAddresses/my-ip`
3261    #[prost(string, tag = "1")]
3262    pub name: ::prost::alloc::string::String,
3263    /// Optional. A request ID to identify requests. Specify a unique request ID
3264    /// so that if you must retry your request, the server will know to ignore
3265    /// the request if it has already been completed. The server guarantees that a
3266    /// request doesn't result in creation of duplicate commitments for at least 60
3267    /// minutes.
3268    ///
3269    /// For example, consider a situation where you make an initial request and the
3270    /// request times out. If you make the request again with the same request
3271    /// ID, the server can check if the original operation with the same request ID
3272    /// was received, and if so, will ignore the second request. This prevents
3273    /// clients from accidentally creating duplicate commitments.
3274    ///
3275    /// The request ID must be a valid UUID with the exception that zero UUID is
3276    /// not supported (00000000-0000-0000-0000-000000000000).
3277    #[prost(string, tag = "2")]
3278    pub request_id: ::prost::alloc::string::String,
3279}
3280/// Request message for
3281/// \[VmwareEngine.ListSubnets\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListSubnets\]
3282#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3283pub struct ListSubnetsRequest {
3284    /// Required. The resource name of the private cloud to be queried for
3285    /// subnets.
3286    /// Resource names are schemeless URIs that follow the conventions in
3287    /// <https://cloud.google.com/apis/design/resource_names.>
3288    /// For example:
3289    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
3290    #[prost(string, tag = "1")]
3291    pub parent: ::prost::alloc::string::String,
3292    /// The maximum number of subnets to return in one page.
3293    /// The service may return fewer than this value.
3294    /// The maximum value is coerced to 1000.
3295    /// The default value of this field is 500.
3296    #[prost(int32, tag = "2")]
3297    pub page_size: i32,
3298    /// A page token, received from a previous `ListSubnetsRequest` call.
3299    /// Provide this to retrieve the subsequent page.
3300    ///
3301    /// When paginating, all other parameters provided to
3302    /// `ListSubnetsRequest` must match the call that provided the page token.
3303    #[prost(string, tag = "3")]
3304    pub page_token: ::prost::alloc::string::String,
3305}
3306/// Response message for
3307/// \[VmwareEngine.ListSubnets\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListSubnets\]
3308#[derive(Clone, PartialEq, ::prost::Message)]
3309pub struct ListSubnetsResponse {
3310    /// A list of subnets.
3311    #[prost(message, repeated, tag = "1")]
3312    pub subnets: ::prost::alloc::vec::Vec<Subnet>,
3313    /// A token, which can be sent as `page_token` to retrieve the next page.
3314    /// If this field is omitted, there are no subsequent pages.
3315    #[prost(string, tag = "2")]
3316    pub next_page_token: ::prost::alloc::string::String,
3317    /// Locations that could not be reached when making an aggregated query using
3318    /// wildcards.
3319    #[prost(string, repeated, tag = "3")]
3320    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3321}
3322/// Request message for
3323/// \[VmwareEngine.GetSubnet\]\[google.cloud.vmwareengine.v1.VmwareEngine.GetSubnet\]
3324#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3325pub struct GetSubnetRequest {
3326    /// Required. The resource name of the subnet to retrieve.
3327    /// Resource names are schemeless URIs that follow the conventions in
3328    /// <https://cloud.google.com/apis/design/resource_names.>
3329    /// For example:
3330    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/subnets/my-subnet`
3331    #[prost(string, tag = "1")]
3332    pub name: ::prost::alloc::string::String,
3333}
3334/// Request message for
3335/// \[VmwareEngine.UpdateSubnet\]\[google.cloud.vmwareengine.v1.VmwareEngine.UpdateSubnet\]
3336#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3337pub struct UpdateSubnetRequest {
3338    /// Required. Field mask is used to specify the fields to be overwritten in the
3339    /// `Subnet` resource by the update.
3340    /// The fields specified in the `update_mask` are relative to the resource, not
3341    /// the full request. A field will be overwritten if it is in the mask. If the
3342    /// user does not provide a mask then all fields will be overwritten.
3343    #[prost(message, optional, tag = "1")]
3344    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
3345    /// Required. Subnet description.
3346    #[prost(message, optional, tag = "2")]
3347    pub subnet: ::core::option::Option<Subnet>,
3348}
3349/// Request message for
3350/// \[VmwareEngine.ListExternalAccessRules\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListExternalAccessRules\]
3351#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3352pub struct ListExternalAccessRulesRequest {
3353    /// Required. The resource name of the network policy to query for external
3354    /// access firewall rules. Resource names are schemeless URIs that follow the
3355    /// conventions in <https://cloud.google.com/apis/design/resource_names.> For
3356    /// example:
3357    /// `projects/my-project/locations/us-central1/networkPolicies/my-policy`
3358    #[prost(string, tag = "1")]
3359    pub parent: ::prost::alloc::string::String,
3360    /// The maximum number of external access rules to return in one page.
3361    /// The service may return fewer than this value.
3362    /// The maximum value is coerced to 1000.
3363    /// The default value of this field is 500.
3364    #[prost(int32, tag = "2")]
3365    pub page_size: i32,
3366    /// A page token, received from a previous `ListExternalAccessRulesRequest`
3367    /// call. Provide this to retrieve the subsequent page.
3368    ///
3369    /// When paginating, all other parameters provided to
3370    /// `ListExternalAccessRulesRequest` must match the call that provided the page
3371    /// token.
3372    #[prost(string, tag = "3")]
3373    pub page_token: ::prost::alloc::string::String,
3374    /// A filter expression that matches resources returned in the response.
3375    /// The expression must specify the field name, a comparison
3376    /// operator, and the value that you want to use for filtering. The value
3377    /// must be a string, a number, or a boolean. The comparison operator
3378    /// must be `=`, `!=`, `>`, or `<`.
3379    ///
3380    /// For example, if you are filtering a list of external access rules, you can
3381    /// exclude the ones named `example-rule` by specifying
3382    /// `name != "example-rule"`.
3383    ///
3384    /// To filter on multiple expressions, provide each separate expression within
3385    /// parentheses. For example:
3386    ///
3387    /// ```text,
3388    /// (name = "example-rule")
3389    /// (createTime > "2021-04-12T08:15:10.40Z")
3390    /// ```
3391    ///
3392    /// By default, each expression is an `AND` expression. However, you
3393    /// can include `AND` and `OR` expressions explicitly.
3394    /// For example:
3395    ///
3396    /// ```text,
3397    /// (name = "example-rule-1") AND
3398    /// (createTime > "2021-04-12T08:15:10.40Z") OR
3399    /// (name = "example-rule-2")
3400    /// ```
3401    #[prost(string, tag = "4")]
3402    pub filter: ::prost::alloc::string::String,
3403    /// Sorts list results by a certain order. By default, returned results
3404    /// are ordered by `name` in ascending order.
3405    /// You can also sort results in descending order based on the `name` value
3406    /// using `orderBy="name desc"`.
3407    /// Currently, only ordering by `name` is supported.
3408    #[prost(string, tag = "5")]
3409    pub order_by: ::prost::alloc::string::String,
3410}
3411/// Response message for
3412/// \[VmwareEngine.ListExternalAccessRules\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListExternalAccessRules\]
3413#[derive(Clone, PartialEq, ::prost::Message)]
3414pub struct ListExternalAccessRulesResponse {
3415    /// A list of external access firewall rules.
3416    #[prost(message, repeated, tag = "1")]
3417    pub external_access_rules: ::prost::alloc::vec::Vec<ExternalAccessRule>,
3418    /// A token, which can be sent as `page_token` to retrieve the next page.
3419    /// If this field is omitted, there are no subsequent pages.
3420    #[prost(string, tag = "2")]
3421    pub next_page_token: ::prost::alloc::string::String,
3422    /// Locations that could not be reached when making an aggregated query using
3423    /// wildcards.
3424    #[prost(string, repeated, tag = "3")]
3425    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3426}
3427/// Request message for
3428/// \[VmwareEngine.GetExternalAccessRule\]\[google.cloud.vmwareengine.v1.VmwareEngine.GetExternalAccessRule\]
3429#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3430pub struct GetExternalAccessRuleRequest {
3431    /// Required. The resource name of the external access firewall rule to
3432    /// retrieve. Resource names are schemeless URIs that follow the conventions in
3433    /// <https://cloud.google.com/apis/design/resource_names.>
3434    /// For example:
3435    /// `projects/my-project/locations/us-central1/networkPolicies/my-policy/externalAccessRules/my-rule`
3436    #[prost(string, tag = "1")]
3437    pub name: ::prost::alloc::string::String,
3438}
3439/// Request message for
3440/// \[VmwareEngine.CreateExternalAccessRule\]\[google.cloud.vmwareengine.v1.VmwareEngine.CreateExternalAccessRule\]
3441#[derive(Clone, PartialEq, ::prost::Message)]
3442pub struct CreateExternalAccessRuleRequest {
3443    /// Required. The resource name of the network policy
3444    /// to create a new external access firewall rule in.
3445    /// Resource names are schemeless URIs that follow the conventions in
3446    /// <https://cloud.google.com/apis/design/resource_names.>
3447    /// For example:
3448    /// `projects/my-project/locations/us-central1/networkPolicies/my-policy`
3449    #[prost(string, tag = "1")]
3450    pub parent: ::prost::alloc::string::String,
3451    /// Required. The initial description of a new external access rule.
3452    #[prost(message, optional, tag = "2")]
3453    pub external_access_rule: ::core::option::Option<ExternalAccessRule>,
3454    /// Required. The user-provided identifier of the `ExternalAccessRule` to be
3455    /// created. This identifier must be unique among `ExternalAccessRule`
3456    /// resources within the parent and becomes the final token in the name URI.
3457    /// The identifier must meet the following requirements:
3458    ///
3459    /// * Only contains 1-63 alphanumeric characters and hyphens
3460    /// * Begins with an alphabetical character
3461    /// * Ends with a non-hyphen character
3462    /// * Not formatted as a UUID
3463    /// * Complies with [RFC 1034](<https://datatracker.ietf.org/doc/html/rfc1034>)
3464    ///   (section 3.5)
3465    #[prost(string, tag = "3")]
3466    pub external_access_rule_id: ::prost::alloc::string::String,
3467    /// A request ID to identify requests. Specify a unique request ID
3468    /// so that if you must retry your request, the server will know to ignore
3469    /// the request if it has already been completed. The server guarantees that a
3470    /// request doesn't result in creation of duplicate commitments for at least 60
3471    /// minutes.
3472    ///
3473    /// For example, consider a situation where you make an initial request and the
3474    /// request times out. If you make the request again with the same request ID,
3475    /// the server can check if the original operation with the same request ID was
3476    /// received, and if so, will ignore the second request. This prevents clients
3477    /// from accidentally creating duplicate commitments.
3478    ///
3479    /// The request ID must be a valid UUID with the exception that zero UUID is
3480    /// not supported (00000000-0000-0000-0000-000000000000).
3481    #[prost(string, tag = "4")]
3482    pub request_id: ::prost::alloc::string::String,
3483}
3484/// Request message for
3485/// \[VmwareEngine.UpdateExternalAccessRule\]\[google.cloud.vmwareengine.v1.VmwareEngine.UpdateExternalAccessRule\]
3486#[derive(Clone, PartialEq, ::prost::Message)]
3487pub struct UpdateExternalAccessRuleRequest {
3488    /// Required. Field mask is used to specify the fields to be overwritten in the
3489    /// `ExternalAccessRule` resource by the update.
3490    /// The fields specified in the `update_mask` are relative to the resource, not
3491    /// the full request. A field will be overwritten if it is in the mask. If the
3492    /// user does not provide a mask then all fields will be overwritten.
3493    #[prost(message, optional, tag = "1")]
3494    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
3495    /// Required. Description of the external access rule.
3496    #[prost(message, optional, tag = "2")]
3497    pub external_access_rule: ::core::option::Option<ExternalAccessRule>,
3498    /// Optional. A request ID to identify requests. Specify a unique request ID
3499    /// so that if you must retry your request, the server will know to ignore
3500    /// the request if it has already been completed. The server guarantees that a
3501    /// request doesn't result in creation of duplicate commitments for at least 60
3502    /// minutes.
3503    ///
3504    /// For example, consider a situation where you make an initial request and the
3505    /// request times out. If you make the request again with the same request ID,
3506    /// the server can check if the original operation with the same request ID was
3507    /// received, and if so, will ignore the second request. This prevents clients
3508    /// from accidentally creating duplicate commitments.
3509    ///
3510    /// The request ID must be a valid UUID with the exception that zero UUID is
3511    /// not supported (00000000-0000-0000-0000-000000000000).
3512    #[prost(string, tag = "3")]
3513    pub request_id: ::prost::alloc::string::String,
3514}
3515/// Request message for
3516/// \[VmwareEngine.DeleteExternalAccessRule\]\[google.cloud.vmwareengine.v1.VmwareEngine.DeleteExternalAccessRule\]
3517#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3518pub struct DeleteExternalAccessRuleRequest {
3519    /// Required. The resource name of the external access firewall rule to delete.
3520    /// Resource names are schemeless URIs that follow the conventions in
3521    /// <https://cloud.google.com/apis/design/resource_names.>
3522    /// For example:
3523    /// `projects/my-project/locations/us-central1/networkPolicies/my-policy/externalAccessRules/my-rule`
3524    #[prost(string, tag = "1")]
3525    pub name: ::prost::alloc::string::String,
3526    /// Optional. A request ID to identify requests. Specify a unique request ID
3527    /// so that if you must retry your request, the server will know to ignore
3528    /// the request if it has already been completed. The server guarantees that a
3529    /// request doesn't result in creation of duplicate commitments for at least 60
3530    /// minutes.
3531    ///
3532    /// For example, consider a situation where you make an initial request and the
3533    /// request times out. If you make the request again with the same request
3534    /// ID, the server can check if the original operation with the same request ID
3535    /// was received, and if so, will ignore the second request. This prevents
3536    /// clients from accidentally creating duplicate commitments.
3537    ///
3538    /// The request ID must be a valid UUID with the exception that zero UUID is
3539    /// not supported (00000000-0000-0000-0000-000000000000).
3540    #[prost(string, tag = "2")]
3541    pub request_id: ::prost::alloc::string::String,
3542}
3543/// Request message for
3544/// \[VmwareEngine.ListLoggingServers\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListLoggingServers\]
3545#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3546pub struct ListLoggingServersRequest {
3547    /// Required. The resource name of the private cloud to be queried for
3548    /// logging servers.
3549    /// Resource names are schemeless URIs that follow the conventions in
3550    /// <https://cloud.google.com/apis/design/resource_names.>
3551    /// For example:
3552    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
3553    #[prost(string, tag = "1")]
3554    pub parent: ::prost::alloc::string::String,
3555    /// The maximum number of logging servers to return in one page.
3556    /// The service may return fewer than this value.
3557    /// The maximum value is coerced to 1000.
3558    /// The default value of this field is 500.
3559    #[prost(int32, tag = "2")]
3560    pub page_size: i32,
3561    /// A page token, received from a previous `ListLoggingServersRequest` call.
3562    /// Provide this to retrieve the subsequent page.
3563    ///
3564    /// When paginating, all other parameters provided to
3565    /// `ListLoggingServersRequest` must match the call that provided the page
3566    /// token.
3567    #[prost(string, tag = "3")]
3568    pub page_token: ::prost::alloc::string::String,
3569    /// A filter expression that matches resources returned in the response.
3570    /// The expression must specify the field name, a comparison
3571    /// operator, and the value that you want to use for filtering. The value
3572    /// must be a string, a number, or a boolean. The comparison operator
3573    /// must be `=`, `!=`, `>`, or `<`.
3574    ///
3575    /// For example, if you are filtering a list of logging servers, you can
3576    /// exclude the ones named `example-server` by specifying
3577    /// `name != "example-server"`.
3578    ///
3579    /// To filter on multiple expressions, provide each separate expression within
3580    /// parentheses. For example:
3581    ///
3582    /// ```text,
3583    /// (name = "example-server")
3584    /// (createTime > "2021-04-12T08:15:10.40Z")
3585    /// ```
3586    ///
3587    /// By default, each expression is an `AND` expression. However, you
3588    /// can include `AND` and `OR` expressions explicitly.
3589    /// For example:
3590    ///
3591    /// ```text,
3592    /// (name = "example-server-1") AND
3593    /// (createTime > "2021-04-12T08:15:10.40Z") OR
3594    /// (name = "example-server-2")
3595    /// ```
3596    #[prost(string, tag = "4")]
3597    pub filter: ::prost::alloc::string::String,
3598    /// Sorts list results by a certain order. By default, returned results
3599    /// are ordered by `name` in ascending order.
3600    /// You can also sort results in descending order based on the `name` value
3601    /// using `orderBy="name desc"`.
3602    /// Currently, only ordering by `name` is supported.
3603    #[prost(string, tag = "5")]
3604    pub order_by: ::prost::alloc::string::String,
3605}
3606/// Response message for
3607/// \[VmwareEngine.ListLoggingServers\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListLoggingServers\]
3608#[derive(Clone, PartialEq, ::prost::Message)]
3609pub struct ListLoggingServersResponse {
3610    /// A list of Logging Servers.
3611    #[prost(message, repeated, tag = "1")]
3612    pub logging_servers: ::prost::alloc::vec::Vec<LoggingServer>,
3613    /// A token, which can be send as `page_token` to retrieve the next page.
3614    /// If this field is omitted, there are no subsequent pages.
3615    #[prost(string, tag = "2")]
3616    pub next_page_token: ::prost::alloc::string::String,
3617    /// Locations that could not be reached when making an aggregated query using
3618    /// wildcards.
3619    #[prost(string, repeated, tag = "3")]
3620    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3621}
3622/// Request message for
3623/// \[VmwareEngine.GetLoggingServer\]\[google.cloud.vmwareengine.v1.VmwareEngine.GetLoggingServer\]
3624#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3625pub struct GetLoggingServerRequest {
3626    /// Required. The resource name of the Logging Server to retrieve.
3627    /// Resource names are schemeless URIs that follow the conventions in
3628    /// <https://cloud.google.com/apis/design/resource_names.>
3629    /// For example:
3630    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/loggingServers/my-logging-server`
3631    #[prost(string, tag = "1")]
3632    pub name: ::prost::alloc::string::String,
3633}
3634/// Request message for
3635/// \[VmwareEngine.CreateLoggingServer\]\[google.cloud.vmwareengine.v1.VmwareEngine.CreateLoggingServer\]
3636#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3637pub struct CreateLoggingServerRequest {
3638    /// Required. The resource name of the private cloud
3639    /// to create a new Logging Server in.
3640    /// Resource names are schemeless URIs that follow the conventions in
3641    /// <https://cloud.google.com/apis/design/resource_names.>
3642    /// For example:
3643    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
3644    #[prost(string, tag = "1")]
3645    pub parent: ::prost::alloc::string::String,
3646    /// Required. The initial description of a new logging server.
3647    #[prost(message, optional, tag = "2")]
3648    pub logging_server: ::core::option::Option<LoggingServer>,
3649    /// Required. The user-provided identifier of the `LoggingServer` to be
3650    /// created. This identifier must be unique among `LoggingServer` resources
3651    /// within the parent and becomes the final token in the name URI.
3652    /// The identifier must meet the following requirements:
3653    ///
3654    /// * Only contains 1-63 alphanumeric characters and hyphens
3655    /// * Begins with an alphabetical character
3656    /// * Ends with a non-hyphen character
3657    /// * Not formatted as a UUID
3658    /// * Complies with [RFC 1034](<https://datatracker.ietf.org/doc/html/rfc1034>)
3659    ///   (section 3.5)
3660    #[prost(string, tag = "3")]
3661    pub logging_server_id: ::prost::alloc::string::String,
3662    /// Optional. A request ID to identify requests. Specify a unique request ID
3663    /// so that if you must retry your request, the server will know to ignore
3664    /// the request if it has already been completed. The server guarantees that a
3665    /// request doesn't result in creation of duplicate commitments for at least 60
3666    /// minutes.
3667    ///
3668    /// For example, consider a situation where you make an initial request and the
3669    /// request times out. If you make the request again with the same request ID,
3670    /// the server can check if original operation with the same request ID was
3671    /// received, and if so, will ignore the second request. This prevents clients
3672    /// from accidentally creating duplicate commitments.
3673    ///
3674    /// The request ID must be a valid UUID with the exception that zero UUID is
3675    /// not supported (00000000-0000-0000-0000-000000000000).
3676    #[prost(string, tag = "4")]
3677    pub request_id: ::prost::alloc::string::String,
3678}
3679/// Request message for
3680/// \[VmwareEngine.UpdateLoggingServer\]\[google.cloud.vmwareengine.v1.VmwareEngine.UpdateLoggingServer\]
3681#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3682pub struct UpdateLoggingServerRequest {
3683    /// Required. Field mask is used to specify the fields to be overwritten in the
3684    /// `LoggingServer` resource by the update.
3685    /// The fields specified in the `update_mask` are relative to the resource, not
3686    /// the full request. A field will be overwritten if it is in the mask. If the
3687    /// user does not provide a mask then all fields will be overwritten.
3688    #[prost(message, optional, tag = "1")]
3689    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
3690    /// Required. Logging server description.
3691    #[prost(message, optional, tag = "2")]
3692    pub logging_server: ::core::option::Option<LoggingServer>,
3693    /// Optional. A request ID to identify requests. Specify a unique request ID
3694    /// so that if you must retry your request, the server will know to ignore
3695    /// the request if it has already been completed. The server guarantees that a
3696    /// request doesn't result in creation of duplicate commitments for at least 60
3697    /// minutes.
3698    ///
3699    /// For example, consider a situation where you make an initial request and the
3700    /// request times out. If you make the request again with the same request ID,
3701    /// the server can check if original operation with the same request ID was
3702    /// received, and if so, will ignore the second request. This prevents clients
3703    /// from accidentally creating duplicate commitments.
3704    ///
3705    /// The request ID must be a valid UUID with the exception that zero UUID is
3706    /// not supported (00000000-0000-0000-0000-000000000000).
3707    #[prost(string, tag = "3")]
3708    pub request_id: ::prost::alloc::string::String,
3709}
3710/// Request message for
3711/// \[VmwareEngine.DeleteLoggingServer\]\[google.cloud.vmwareengine.v1.VmwareEngine.DeleteLoggingServer\]
3712#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3713pub struct DeleteLoggingServerRequest {
3714    /// Required. The resource name of the logging server to delete.
3715    /// Resource names are schemeless URIs that follow the conventions in
3716    /// <https://cloud.google.com/apis/design/resource_names.>
3717    /// For example:
3718    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/loggingServers/my-logging-server`
3719    #[prost(string, tag = "1")]
3720    pub name: ::prost::alloc::string::String,
3721    /// Optional. A request ID to identify requests. Specify a unique request ID
3722    /// so that if you must retry your request, the server will know to ignore
3723    /// the request if it has already been completed. The server guarantees that a
3724    /// request doesn't result in creation of duplicate commitments for at least 60
3725    /// minutes.
3726    ///
3727    /// For example, consider a situation where you make an initial request and the
3728    /// request times out. If you make the request again with the same request
3729    /// ID, the server can check if original operation with the same request ID
3730    /// was received, and if so, will ignore the second request. This prevents
3731    /// clients from accidentally creating duplicate commitments.
3732    ///
3733    /// The request ID must be a valid UUID with the exception that zero UUID is
3734    /// not supported (00000000-0000-0000-0000-000000000000).
3735    #[prost(string, tag = "2")]
3736    pub request_id: ::prost::alloc::string::String,
3737}
3738/// Represents the metadata of the long-running operation.
3739#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3740pub struct OperationMetadata {
3741    /// Output only. The time the operation was created.
3742    #[prost(message, optional, tag = "1")]
3743    pub create_time: ::core::option::Option<::prost_types::Timestamp>,
3744    /// Output only. The time the operation finished running.
3745    #[prost(message, optional, tag = "2")]
3746    pub end_time: ::core::option::Option<::prost_types::Timestamp>,
3747    /// Output only. Server-defined resource path for the target of the operation.
3748    #[prost(string, tag = "3")]
3749    pub target: ::prost::alloc::string::String,
3750    /// Output only. Name of the verb executed by the operation.
3751    #[prost(string, tag = "4")]
3752    pub verb: ::prost::alloc::string::String,
3753    /// Output only. Human-readable status of the operation, if any.
3754    #[prost(string, tag = "5")]
3755    pub status_message: ::prost::alloc::string::String,
3756    /// Output only. True if the user has requested cancellation
3757    /// of the operation; false otherwise.
3758    /// Operations that have successfully been cancelled
3759    /// have \[Operation.error\]\[\] value with a
3760    /// \[google.rpc.Status.code\]\[google.rpc.Status.code\] of 1, corresponding to
3761    /// `Code.CANCELLED`.
3762    #[prost(bool, tag = "6")]
3763    pub requested_cancellation: bool,
3764    /// Output only. API version used to start the operation.
3765    #[prost(string, tag = "7")]
3766    pub api_version: ::prost::alloc::string::String,
3767}
3768/// Request message for
3769/// \[VmwareEngine.ListNodeTypes\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListNodeTypes\]
3770#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3771pub struct ListNodeTypesRequest {
3772    /// Required. The resource name of the location to be queried for node types.
3773    /// Resource names are schemeless URIs that follow the conventions in
3774    /// <https://cloud.google.com/apis/design/resource_names.>
3775    /// For example:
3776    /// `projects/my-project/locations/us-central1-a`
3777    #[prost(string, tag = "1")]
3778    pub parent: ::prost::alloc::string::String,
3779    /// The maximum number of node types to return in one page.
3780    /// The service may return fewer than this value.
3781    /// The maximum value is coerced to 1000.
3782    /// The default value of this field is 500.
3783    #[prost(int32, tag = "2")]
3784    pub page_size: i32,
3785    /// A page token, received from a previous `ListNodeTypes` call.
3786    /// Provide this to retrieve the subsequent page.
3787    ///
3788    /// When paginating, all other parameters provided to
3789    /// `ListNodeTypes` must match the call that provided the page token.
3790    #[prost(string, tag = "3")]
3791    pub page_token: ::prost::alloc::string::String,
3792    /// A filter expression that matches resources returned in the response.
3793    /// The expression must specify the field name, a comparison
3794    /// operator, and the value that you want to use for filtering. The value
3795    /// must be a string, a number, or a boolean. The comparison operator
3796    /// must be `=`, `!=`, `>`, or `<`.
3797    ///
3798    /// For example, if you are filtering a list of node types, you can
3799    /// exclude the ones named `standard-72` by specifying
3800    /// `name != "standard-72"`.
3801    ///
3802    /// To filter on multiple expressions, provide each separate expression within
3803    /// parentheses. For example:
3804    ///
3805    /// ```text,
3806    /// (name = "standard-72")
3807    /// (virtual_cpu_count > 2)
3808    /// ```
3809    ///
3810    /// By default, each expression is an `AND` expression. However, you
3811    /// can include `AND` and `OR` expressions explicitly.
3812    /// For example:
3813    ///
3814    /// ```text,
3815    /// (name = "standard-96") AND
3816    /// (virtual_cpu_count > 2) OR
3817    /// (name = "standard-72")
3818    /// ```
3819    #[prost(string, tag = "4")]
3820    pub filter: ::prost::alloc::string::String,
3821}
3822/// Response message for
3823/// \[VmwareEngine.ListNodeTypes\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListNodeTypes\]
3824#[derive(Clone, PartialEq, ::prost::Message)]
3825pub struct ListNodeTypesResponse {
3826    /// A list of Node Types.
3827    #[prost(message, repeated, tag = "1")]
3828    pub node_types: ::prost::alloc::vec::Vec<NodeType>,
3829    /// A token, which can be sent as `page_token` to retrieve the next page.
3830    /// If this field is omitted, there are no subsequent pages.
3831    #[prost(string, tag = "2")]
3832    pub next_page_token: ::prost::alloc::string::String,
3833    /// Locations that could not be reached when making an aggregated query using
3834    /// wildcards.
3835    #[prost(string, repeated, tag = "3")]
3836    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3837}
3838/// Request message for
3839/// \[VmwareEngine.GetNodeType\]\[google.cloud.vmwareengine.v1.VmwareEngine.GetNodeType\]
3840#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3841pub struct GetNodeTypeRequest {
3842    /// Required. The resource name of the node type to retrieve.
3843    /// Resource names are schemeless URIs that follow the conventions in
3844    /// <https://cloud.google.com/apis/design/resource_names.>
3845    /// For example:
3846    /// `projects/my-proj/locations/us-central1-a/nodeTypes/standard-72`
3847    #[prost(string, tag = "1")]
3848    pub name: ::prost::alloc::string::String,
3849}
3850/// Request message for
3851/// \[VmwareEngine.ShowNsxCredentials\]\[google.cloud.vmwareengine.v1.VmwareEngine.ShowNsxCredentials\]
3852#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3853pub struct ShowNsxCredentialsRequest {
3854    /// Required. The resource name of the private cloud
3855    /// to be queried for credentials.
3856    /// Resource names are schemeless URIs that follow the conventions in
3857    /// <https://cloud.google.com/apis/design/resource_names.>
3858    /// For example:
3859    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
3860    #[prost(string, tag = "1")]
3861    pub private_cloud: ::prost::alloc::string::String,
3862}
3863/// Request message for
3864/// \[VmwareEngine.ShowVcenterCredentials\]\[google.cloud.vmwareengine.v1.VmwareEngine.ShowVcenterCredentials\]
3865#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3866pub struct ShowVcenterCredentialsRequest {
3867    /// Required. The resource name of the private cloud
3868    /// to be queried for credentials.
3869    /// Resource names are schemeless URIs that follow the conventions in
3870    /// <https://cloud.google.com/apis/design/resource_names.>
3871    /// For example:
3872    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
3873    #[prost(string, tag = "1")]
3874    pub private_cloud: ::prost::alloc::string::String,
3875    /// Optional. The username of the user to be queried for credentials.
3876    /// The default value of this field is CloudOwner@gve.local.
3877    /// The provided value must be one of the following:
3878    /// CloudOwner@gve.local,
3879    /// solution-user-01@gve.local,
3880    /// solution-user-02@gve.local,
3881    /// solution-user-03@gve.local,
3882    /// solution-user-04@gve.local,
3883    /// solution-user-05@gve.local,
3884    /// zertoadmin@gve.local.
3885    #[prost(string, tag = "2")]
3886    pub username: ::prost::alloc::string::String,
3887}
3888/// Request message for
3889/// \[VmwareEngine.ResetNsxCredentials\]\[google.cloud.vmwareengine.v1.VmwareEngine.ResetNsxCredentials\]
3890#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3891pub struct ResetNsxCredentialsRequest {
3892    /// Required. The resource name of the private cloud
3893    /// to reset credentials for.
3894    /// Resource names are schemeless URIs that follow the conventions in
3895    /// <https://cloud.google.com/apis/design/resource_names.>
3896    /// For example:
3897    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
3898    #[prost(string, tag = "1")]
3899    pub private_cloud: ::prost::alloc::string::String,
3900    /// Optional. A request ID to identify requests. Specify a unique request ID
3901    /// so that if you must retry your request, the server will know to ignore
3902    /// the request if it has already been completed. The server guarantees that a
3903    /// request doesn't result in creation of duplicate commitments for at least 60
3904    /// minutes.
3905    ///
3906    /// For example, consider a situation where you make an initial request and the
3907    /// request times out. If you make the request again with the same request
3908    /// ID, the server can check if original operation with the same request ID
3909    /// was received, and if so, will ignore the second request. This prevents
3910    /// clients from accidentally creating duplicate commitments.
3911    ///
3912    /// The request ID must be a valid UUID with the exception that zero UUID is
3913    /// not supported (00000000-0000-0000-0000-000000000000).
3914    #[prost(string, tag = "2")]
3915    pub request_id: ::prost::alloc::string::String,
3916}
3917/// Request message for
3918/// \[VmwareEngine.ResetVcenterCredentials\]\[google.cloud.vmwareengine.v1.VmwareEngine.ResetVcenterCredentials\]
3919#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3920pub struct ResetVcenterCredentialsRequest {
3921    /// Required. The resource name of the private cloud
3922    /// to reset credentials for.
3923    /// Resource names are schemeless URIs that follow the conventions in
3924    /// <https://cloud.google.com/apis/design/resource_names.>
3925    /// For example:
3926    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
3927    #[prost(string, tag = "1")]
3928    pub private_cloud: ::prost::alloc::string::String,
3929    /// Optional. A request ID to identify requests. Specify a unique request ID
3930    /// so that if you must retry your request, the server will know to ignore
3931    /// the request if it has already been completed. The server guarantees that a
3932    /// request doesn't result in creation of duplicate commitments for at least 60
3933    /// minutes.
3934    ///
3935    /// For example, consider a situation where you make an initial request and the
3936    /// request times out. If you make the request again with the same request
3937    /// ID, the server can check if original operation with the same request ID
3938    /// was received, and if so, will ignore the second request. This prevents
3939    /// clients from accidentally creating duplicate commitments.
3940    ///
3941    /// The request ID must be a valid UUID with the exception that zero UUID is
3942    /// not supported (00000000-0000-0000-0000-000000000000).
3943    #[prost(string, tag = "2")]
3944    pub request_id: ::prost::alloc::string::String,
3945    /// Optional. The username of the user to be to reset the credentials.
3946    /// The default value of this field is CloudOwner@gve.local.
3947    /// The provided value should be one of the following:
3948    /// solution-user-01@gve.local,
3949    /// solution-user-02@gve.local,
3950    /// solution-user-03@gve.local,
3951    /// solution-user-04@gve.local,
3952    /// solution-user-05@gve.local,
3953    /// zertoadmin@gve.local.
3954    #[prost(string, tag = "3")]
3955    pub username: ::prost::alloc::string::String,
3956}
3957/// Response message for
3958/// \[VmwareEngine.ListHcxActivationKeys\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListHcxActivationKeys\]
3959#[derive(Clone, PartialEq, ::prost::Message)]
3960pub struct ListHcxActivationKeysResponse {
3961    /// List of HCX activation keys.
3962    #[prost(message, repeated, tag = "1")]
3963    pub hcx_activation_keys: ::prost::alloc::vec::Vec<HcxActivationKey>,
3964    /// A token, which can be sent as `page_token` to retrieve the next page.
3965    /// If this field is omitted, there are no subsequent pages.
3966    #[prost(string, tag = "2")]
3967    pub next_page_token: ::prost::alloc::string::String,
3968    /// Locations that could not be reached when making an aggregated query using
3969    /// wildcards.
3970    #[prost(string, repeated, tag = "3")]
3971    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3972}
3973/// Request message for
3974/// \[VmwareEngine.ListHcxActivationKeys\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListHcxActivationKeys\]
3975#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3976pub struct ListHcxActivationKeysRequest {
3977    /// Required. The resource name of the private cloud
3978    /// to be queried for HCX activation keys.
3979    /// Resource names are schemeless URIs that follow the conventions in
3980    /// <https://cloud.google.com/apis/design/resource_names.>
3981    /// For example:
3982    /// `projects/my-project/locations/us-central1/privateClouds/my-cloud`
3983    #[prost(string, tag = "1")]
3984    pub parent: ::prost::alloc::string::String,
3985    /// The maximum number of HCX activation keys to return in one page.
3986    /// The service may return fewer than this value.
3987    /// The maximum value is coerced to 1000.
3988    /// The default value of this field is 500.
3989    #[prost(int32, tag = "2")]
3990    pub page_size: i32,
3991    /// A page token, received from a previous `ListHcxActivationKeys` call.
3992    /// Provide this to retrieve the subsequent page.
3993    ///
3994    /// When paginating, all other parameters provided to
3995    /// `ListHcxActivationKeys` must match the call that provided the page
3996    /// token.
3997    #[prost(string, tag = "3")]
3998    pub page_token: ::prost::alloc::string::String,
3999}
4000/// Request message for \[VmwareEngine.GetHcxActivationKeys\]\[\]
4001#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4002pub struct GetHcxActivationKeyRequest {
4003    /// Required. The resource name of the HCX activation key to retrieve.
4004    /// Resource names are schemeless URIs that follow the conventions in
4005    /// <https://cloud.google.com/apis/design/resource_names.>
4006    /// For example:
4007    /// `projects/my-project/locations/us-central1/privateClouds/my-cloud/hcxActivationKeys/my-key`
4008    #[prost(string, tag = "1")]
4009    pub name: ::prost::alloc::string::String,
4010}
4011/// Request message for
4012/// \[VmwareEngine.CreateHcxActivationKey\]\[google.cloud.vmwareengine.v1.VmwareEngine.CreateHcxActivationKey\]
4013#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4014pub struct CreateHcxActivationKeyRequest {
4015    /// Required. The resource name of the private cloud to create the key for.
4016    /// Resource names are schemeless URIs that follow the conventions in
4017    /// <https://cloud.google.com/apis/design/resource_names.>
4018    /// For example:
4019    /// `projects/my-project/locations/us-central1/privateClouds/my-cloud`
4020    #[prost(string, tag = "1")]
4021    pub parent: ::prost::alloc::string::String,
4022    /// Required. The initial description of a new HCX activation key. When
4023    /// creating a new key, this field must be an empty object.
4024    #[prost(message, optional, tag = "2")]
4025    pub hcx_activation_key: ::core::option::Option<HcxActivationKey>,
4026    /// Required. The user-provided identifier of the `HcxActivationKey` to be
4027    /// created. This identifier must be unique among `HcxActivationKey` resources
4028    /// within the parent and becomes the final token in the name URI.
4029    /// The identifier must meet the following requirements:
4030    ///
4031    /// * Only contains 1-63 alphanumeric characters and hyphens
4032    /// * Begins with an alphabetical character
4033    /// * Ends with a non-hyphen character
4034    /// * Not formatted as a UUID
4035    /// * Complies with [RFC 1034](<https://datatracker.ietf.org/doc/html/rfc1034>)
4036    ///   (section 3.5)
4037    #[prost(string, tag = "3")]
4038    pub hcx_activation_key_id: ::prost::alloc::string::String,
4039    /// A request ID to identify requests. Specify a unique request ID
4040    /// so that if you must retry your request, the server will know to ignore
4041    /// the request if it has already been completed. The server guarantees that a
4042    /// request doesn't result in creation of duplicate commitments for at least 60
4043    /// minutes.
4044    ///
4045    /// For example, consider a situation where you make an initial request and the
4046    /// request times out. If you make the request again with the same request ID,
4047    /// the server can check if original operation with the same request ID was
4048    /// received, and if so, will ignore the second request. This prevents clients
4049    /// from accidentally creating duplicate commitments.
4050    ///
4051    /// The request ID must be a valid UUID with the exception that zero UUID is
4052    /// not supported (00000000-0000-0000-0000-000000000000).
4053    #[prost(string, tag = "4")]
4054    pub request_id: ::prost::alloc::string::String,
4055}
4056/// Request message for
4057/// \[VmwareEngine.GetDnsForwarding\]\[google.cloud.vmwareengine.v1.VmwareEngine.GetDnsForwarding\]
4058#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4059pub struct GetDnsForwardingRequest {
4060    /// Required. The resource name of a `DnsForwarding` to retrieve.
4061    /// Resource names are schemeless URIs that follow the conventions in
4062    /// <https://cloud.google.com/apis/design/resource_names.>
4063    /// For example:
4064    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/dnsForwarding`
4065    #[prost(string, tag = "1")]
4066    pub name: ::prost::alloc::string::String,
4067}
4068/// Request message for
4069/// \[VmwareEngine.UpdateDnsForwarding\]\[google.cloud.vmwareengine.v1.VmwareEngine.UpdateDnsForwarding\]
4070#[derive(Clone, PartialEq, ::prost::Message)]
4071pub struct UpdateDnsForwardingRequest {
4072    /// Required. DnsForwarding config details.
4073    #[prost(message, optional, tag = "1")]
4074    pub dns_forwarding: ::core::option::Option<DnsForwarding>,
4075    /// Required. Field mask is used to specify the fields to be overwritten in the
4076    /// `DnsForwarding` resource by the update.
4077    /// The fields specified in the `update_mask` are relative to the resource, not
4078    /// the full request. A field will be overwritten if it is in the mask. If the
4079    /// user does not provide a mask then all fields will be overwritten.
4080    #[prost(message, optional, tag = "2")]
4081    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
4082    /// Optional. A request ID to identify requests. Specify a unique request ID
4083    /// so that if you must retry your request, the server will know to ignore
4084    /// the request if it has already been completed. The server guarantees that a
4085    /// request doesn't result in creation of duplicate commitments for at least 60
4086    /// minutes.
4087    ///
4088    /// For example, consider a situation where you make an initial request and the
4089    /// request times out. If you make the request again with the same request ID,
4090    /// the server can check if original operation with the same request ID was
4091    /// received, and if so, will ignore the second request. This prevents clients
4092    /// from accidentally creating duplicate commitments.
4093    ///
4094    /// The request ID must be a valid UUID with the exception that zero UUID is
4095    /// not supported (00000000-0000-0000-0000-000000000000).
4096    #[prost(string, tag = "3")]
4097    pub request_id: ::prost::alloc::string::String,
4098}
4099/// Request message for
4100/// \[VmwareEngine.CreateNetworkPeering\]\[google.cloud.vmwareengine.v1.VmwareEngine.CreateNetworkPeering\]
4101#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4102pub struct CreateNetworkPeeringRequest {
4103    /// Required. The resource name of the location to create the new network
4104    /// peering in. This value is always `global`, because `NetworkPeering` is a
4105    /// global resource. Resource names are schemeless URIs that follow the
4106    /// conventions in <https://cloud.google.com/apis/design/resource_names.> For
4107    /// example: `projects/my-project/locations/global`
4108    #[prost(string, tag = "1")]
4109    pub parent: ::prost::alloc::string::String,
4110    /// Required. The user-provided identifier of the new `NetworkPeering`.
4111    /// This identifier must be unique among `NetworkPeering` resources within the
4112    /// parent and becomes the final token in the name URI.
4113    /// The identifier must meet the following requirements:
4114    ///
4115    /// * Only contains 1-63 alphanumeric characters and hyphens
4116    /// * Begins with an alphabetical character
4117    /// * Ends with a non-hyphen character
4118    /// * Not formatted as a UUID
4119    /// * Complies with [RFC 1034](<https://datatracker.ietf.org/doc/html/rfc1034>)
4120    ///   (section 3.5)
4121    #[prost(string, tag = "2")]
4122    pub network_peering_id: ::prost::alloc::string::String,
4123    /// Required. The initial description of the new network peering.
4124    #[prost(message, optional, tag = "3")]
4125    pub network_peering: ::core::option::Option<NetworkPeering>,
4126    /// Optional. A request ID to identify requests. Specify a unique request ID
4127    /// so that if you must retry your request, the server will know to ignore
4128    /// the request if it has already been completed. The server guarantees that a
4129    /// request doesn't result in creation of duplicate commitments for at least 60
4130    /// minutes.
4131    ///
4132    /// For example, consider a situation where you make an initial request and the
4133    /// request times out. If you make the request again with the same request
4134    /// ID, the server can check if original operation with the same request ID
4135    /// was received, and if so, will ignore the second request. This prevents
4136    /// clients from accidentally creating duplicate commitments.
4137    ///
4138    /// The request ID must be a valid UUID with the exception that zero UUID is
4139    /// not supported (00000000-0000-0000-0000-000000000000).
4140    #[prost(string, tag = "4")]
4141    pub request_id: ::prost::alloc::string::String,
4142}
4143/// Request message for
4144/// \[VmwareEngine.DeleteNetworkPeering\]\[google.cloud.vmwareengine.v1.VmwareEngine.DeleteNetworkPeering\]
4145#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4146pub struct DeleteNetworkPeeringRequest {
4147    /// Required. The resource name of the network peering to be deleted.
4148    /// Resource names are schemeless URIs that follow the conventions in
4149    /// <https://cloud.google.com/apis/design/resource_names.>
4150    /// For example:
4151    /// `projects/my-project/locations/global/networkPeerings/my-peering`
4152    #[prost(string, tag = "1")]
4153    pub name: ::prost::alloc::string::String,
4154    /// Optional. A request ID to identify requests. Specify a unique request ID
4155    /// so that if you must retry your request, the server will know to ignore
4156    /// the request if it has already been completed. The server guarantees that a
4157    /// request doesn't result in creation of duplicate commitments for at least 60
4158    /// minutes.
4159    ///
4160    /// For example, consider a situation where you make an initial request and the
4161    /// request times out. If you make the request again with the same request
4162    /// ID, the server can check if original operation with the same request ID
4163    /// was received, and if so, will ignore the second request. This prevents
4164    /// clients from accidentally creating duplicate commitments.
4165    ///
4166    /// The request ID must be a valid UUID with the exception that zero UUID is
4167    /// not supported (00000000-0000-0000-0000-000000000000).
4168    #[prost(string, tag = "2")]
4169    pub request_id: ::prost::alloc::string::String,
4170}
4171/// Request message for
4172/// \[VmwareEngine.GetNetworkPeering\]\[google.cloud.vmwareengine.v1.VmwareEngine.GetNetworkPeering\]
4173#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4174pub struct GetNetworkPeeringRequest {
4175    /// Required. The resource name of the network peering to retrieve.
4176    /// Resource names are schemeless URIs that follow the conventions in
4177    /// <https://cloud.google.com/apis/design/resource_names.>
4178    /// For example:
4179    /// `projects/my-project/locations/global/networkPeerings/my-peering`
4180    #[prost(string, tag = "1")]
4181    pub name: ::prost::alloc::string::String,
4182}
4183/// Request message for
4184/// \[VmwareEngine.ListNetworkPeerings\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListNetworkPeerings\]
4185#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4186pub struct ListNetworkPeeringsRequest {
4187    /// Required. The resource name of the location (global) to query for
4188    /// network peerings. Resource names are schemeless URIs that follow the
4189    /// conventions in <https://cloud.google.com/apis/design/resource_names.> For
4190    /// example: `projects/my-project/locations/global`
4191    #[prost(string, tag = "1")]
4192    pub parent: ::prost::alloc::string::String,
4193    /// The maximum number of network peerings to return in one page.
4194    /// The maximum value is coerced to 1000.
4195    /// The default value of this field is 500.
4196    #[prost(int32, tag = "2")]
4197    pub page_size: i32,
4198    /// A page token, received from a previous `ListNetworkPeerings` call.
4199    /// Provide this to retrieve the subsequent page.
4200    ///
4201    /// When paginating, all other parameters provided to
4202    /// `ListNetworkPeerings` must match the call that provided the page
4203    /// token.
4204    #[prost(string, tag = "3")]
4205    pub page_token: ::prost::alloc::string::String,
4206    /// A filter expression that matches resources returned in the response.
4207    /// The expression must specify the field name, a comparison
4208    /// operator, and the value that you want to use for filtering. The value
4209    /// must be a string, a number, or a boolean. The comparison operator
4210    /// must be `=`, `!=`, `>`, or `<`.
4211    ///
4212    /// For example, if you are filtering a list of network peerings, you can
4213    /// exclude the ones named `example-peering` by specifying
4214    /// `name != "example-peering"`.
4215    ///
4216    /// To filter on multiple expressions, provide each separate expression within
4217    /// parentheses. For example:
4218    ///
4219    /// ```text,
4220    /// (name = "example-peering")
4221    /// (createTime > "2021-04-12T08:15:10.40Z")
4222    /// ```
4223    ///
4224    /// By default, each expression is an `AND` expression. However, you
4225    /// can include `AND` and `OR` expressions explicitly.
4226    /// For example:
4227    ///
4228    /// ```text,
4229    /// (name = "example-peering-1") AND
4230    /// (createTime > "2021-04-12T08:15:10.40Z") OR
4231    /// (name = "example-peering-2")
4232    /// ```
4233    #[prost(string, tag = "4")]
4234    pub filter: ::prost::alloc::string::String,
4235    /// Sorts list results by a certain order. By default, returned results
4236    /// are ordered by `name` in ascending order.
4237    /// You can also sort results in descending order based on the `name` value
4238    /// using `orderBy="name desc"`.
4239    /// Currently, only ordering by `name` is supported.
4240    #[prost(string, tag = "5")]
4241    pub order_by: ::prost::alloc::string::String,
4242}
4243/// Request message for
4244/// \[VmwareEngine.UpdateNetworkPeering\]\[google.cloud.vmwareengine.v1.VmwareEngine.UpdateNetworkPeering\]
4245#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4246pub struct UpdateNetworkPeeringRequest {
4247    /// Required. Network peering description.
4248    #[prost(message, optional, tag = "1")]
4249    pub network_peering: ::core::option::Option<NetworkPeering>,
4250    /// Required. Field mask is used to specify the fields to be overwritten in the
4251    /// `NetworkPeering` resource by the update.
4252    /// The fields specified in the `update_mask` are relative to the resource, not
4253    /// the full request. A field will be overwritten if it is in the mask. If the
4254    /// user does not provide a mask then all fields will be overwritten.
4255    #[prost(message, optional, tag = "2")]
4256    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
4257    /// Optional. A request ID to identify requests. Specify a unique request ID
4258    /// so that if you must retry your request, the server will know to ignore
4259    /// the request if it has already been completed. The server guarantees that a
4260    /// request doesn't result in creation of duplicate commitments for at least 60
4261    /// minutes.
4262    ///
4263    /// For example, consider a situation where you make an initial request and the
4264    /// request times out. If you make the request again with the same request
4265    /// ID, the server can check if original operation with the same request ID
4266    /// was received, and if so, will ignore the second request. This prevents
4267    /// clients from accidentally creating duplicate commitments.
4268    ///
4269    /// The request ID must be a valid UUID with the exception that zero UUID is
4270    /// not supported (00000000-0000-0000-0000-000000000000).
4271    #[prost(string, tag = "3")]
4272    pub request_id: ::prost::alloc::string::String,
4273}
4274/// Response message for
4275/// \[VmwareEngine.ListNetworkPeerings\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListNetworkPeerings\]
4276#[derive(Clone, PartialEq, ::prost::Message)]
4277pub struct ListNetworkPeeringsResponse {
4278    /// A list of network peerings.
4279    #[prost(message, repeated, tag = "1")]
4280    pub network_peerings: ::prost::alloc::vec::Vec<NetworkPeering>,
4281    /// A token, which can be sent as `page_token` to retrieve the next page.
4282    /// If this field is omitted, there are no subsequent pages.
4283    #[prost(string, tag = "2")]
4284    pub next_page_token: ::prost::alloc::string::String,
4285    /// Unreachable resources.
4286    #[prost(string, repeated, tag = "3")]
4287    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4288}
4289/// Request message for
4290/// \[VmwareEngine.ListPeeringRoutes\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListPeeringRoutes\]
4291#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4292pub struct ListPeeringRoutesRequest {
4293    /// Required. The resource name of the network peering to retrieve peering
4294    /// routes from. Resource names are schemeless URIs that follow the conventions
4295    /// in <https://cloud.google.com/apis/design/resource_names.> For example:
4296    /// `projects/my-project/locations/global/networkPeerings/my-peering`
4297    #[prost(string, tag = "1")]
4298    pub parent: ::prost::alloc::string::String,
4299    /// The maximum number of peering routes to return in one page.
4300    /// The service may return fewer than this value.
4301    /// The maximum value is coerced to 1000.
4302    /// The default value of this field is 500.
4303    #[prost(int32, tag = "2")]
4304    pub page_size: i32,
4305    /// A page token, received from a previous `ListPeeringRoutes` call.
4306    /// Provide this to retrieve the subsequent page.
4307    /// When paginating, all other parameters provided to `ListPeeringRoutes` must
4308    /// match the call that provided the page token.
4309    #[prost(string, tag = "3")]
4310    pub page_token: ::prost::alloc::string::String,
4311    /// A filter expression that matches resources returned in the response.
4312    /// Currently, only filtering on the `direction` field is supported. To return
4313    /// routes imported from the peer network, provide "direction=INCOMING". To
4314    /// return routes exported from the VMware Engine network, provide
4315    /// "direction=OUTGOING". Other filter expressions return an error.
4316    #[prost(string, tag = "6")]
4317    pub filter: ::prost::alloc::string::String,
4318}
4319/// Response message for
4320/// \[VmwareEngine.ListPeeringRoutes\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListPeeringRoutes\]
4321#[derive(Clone, PartialEq, ::prost::Message)]
4322pub struct ListPeeringRoutesResponse {
4323    /// A list of peering routes.
4324    #[prost(message, repeated, tag = "1")]
4325    pub peering_routes: ::prost::alloc::vec::Vec<PeeringRoute>,
4326    /// A token, which can be sent as `page_token` to retrieve the next page.
4327    /// If this field is omitted, there are no subsequent pages.
4328    #[prost(string, tag = "2")]
4329    pub next_page_token: ::prost::alloc::string::String,
4330}
4331/// Request message for
4332/// \[VmwareEngine.ListNetworkPolicies\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListNetworkPolicies\]
4333#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4334pub struct ListNetworkPoliciesRequest {
4335    /// Required. The resource name of the location (region) to query for
4336    /// network policies. Resource names are schemeless URIs that follow the
4337    /// conventions in <https://cloud.google.com/apis/design/resource_names.> For
4338    /// example: `projects/my-project/locations/us-central1`
4339    #[prost(string, tag = "1")]
4340    pub parent: ::prost::alloc::string::String,
4341    /// The maximum number of network policies to return in one page.
4342    /// The service may return fewer than this value.
4343    /// The maximum value is coerced to 1000.
4344    /// The default value of this field is 500.
4345    #[prost(int32, tag = "2")]
4346    pub page_size: i32,
4347    /// A page token, received from a previous `ListNetworkPolicies` call.
4348    /// Provide this to retrieve the subsequent page.
4349    ///
4350    /// When paginating, all other parameters provided to
4351    /// `ListNetworkPolicies` must match the call that provided the page
4352    /// token.
4353    #[prost(string, tag = "3")]
4354    pub page_token: ::prost::alloc::string::String,
4355    /// A filter expression that matches resources returned in the response.
4356    /// The expression must specify the field name, a comparison
4357    /// operator, and the value that you want to use for filtering. The value
4358    /// must be a string, a number, or a boolean. The comparison operator
4359    /// must be `=`, `!=`, `>`, or `<`.
4360    ///
4361    /// For example, if you are filtering a list of network policies, you can
4362    /// exclude the ones named `example-policy` by specifying
4363    /// `name != "example-policy"`.
4364    ///
4365    /// To filter on multiple expressions, provide each separate expression within
4366    /// parentheses. For example:
4367    ///
4368    /// ```text,
4369    /// (name = "example-policy")
4370    /// (createTime > "2021-04-12T08:15:10.40Z")
4371    /// ```
4372    ///
4373    /// By default, each expression is an `AND` expression. However, you
4374    /// can include `AND` and `OR` expressions explicitly.
4375    /// For example:
4376    ///
4377    /// ```text,
4378    /// (name = "example-policy-1") AND
4379    /// (createTime > "2021-04-12T08:15:10.40Z") OR
4380    /// (name = "example-policy-2")
4381    /// ```
4382    #[prost(string, tag = "4")]
4383    pub filter: ::prost::alloc::string::String,
4384    /// Sorts list results by a certain order. By default, returned results
4385    /// are ordered by `name` in ascending order.
4386    /// You can also sort results in descending order based on the `name` value
4387    /// using `orderBy="name desc"`.
4388    /// Currently, only ordering by `name` is supported.
4389    #[prost(string, tag = "5")]
4390    pub order_by: ::prost::alloc::string::String,
4391}
4392/// Response message for
4393/// \[VmwareEngine.ListNetworkPolicies\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListNetworkPolicies\]
4394#[derive(Clone, PartialEq, ::prost::Message)]
4395pub struct ListNetworkPoliciesResponse {
4396    /// A list of network policies.
4397    #[prost(message, repeated, tag = "1")]
4398    pub network_policies: ::prost::alloc::vec::Vec<NetworkPolicy>,
4399    /// A token, which can be send as `page_token` to retrieve the next page.
4400    /// If this field is omitted, there are no subsequent pages.
4401    #[prost(string, tag = "2")]
4402    pub next_page_token: ::prost::alloc::string::String,
4403    /// Locations that could not be reached when making an aggregated query using
4404    /// wildcards.
4405    #[prost(string, repeated, tag = "3")]
4406    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4407}
4408/// Request message for
4409/// \[VmwareEngine.GetNetworkPolicy\]\[google.cloud.vmwareengine.v1.VmwareEngine.GetNetworkPolicy\]
4410#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4411pub struct GetNetworkPolicyRequest {
4412    /// Required. The resource name of the network policy to retrieve.
4413    /// Resource names are schemeless URIs that follow the conventions in
4414    /// <https://cloud.google.com/apis/design/resource_names.>
4415    /// For example:
4416    /// `projects/my-project/locations/us-central1/networkPolicies/my-network-policy`
4417    #[prost(string, tag = "1")]
4418    pub name: ::prost::alloc::string::String,
4419}
4420/// Request message for
4421/// \[VmwareEngine.UpdateNetworkPolicy\]\[google.cloud.vmwareengine.v1.VmwareEngine.UpdateNetworkPolicy\]
4422#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4423pub struct UpdateNetworkPolicyRequest {
4424    /// Required. Network policy description.
4425    #[prost(message, optional, tag = "1")]
4426    pub network_policy: ::core::option::Option<NetworkPolicy>,
4427    /// Required. Field mask is used to specify the fields to be overwritten in the
4428    /// `NetworkPolicy` resource by the update.
4429    /// The fields specified in the `update_mask` are relative to the resource, not
4430    /// the full request. A field will be overwritten if it is in the mask. If the
4431    /// user does not provide a mask then all fields will be overwritten.
4432    #[prost(message, optional, tag = "2")]
4433    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
4434    /// Optional. A request ID to identify requests. Specify a unique request ID
4435    /// so that if you must retry your request, the server will know to ignore
4436    /// the request if it has already been completed. The server guarantees that a
4437    /// request doesn't result in creation of duplicate commitments for at least 60
4438    /// minutes.
4439    ///
4440    /// For example, consider a situation where you make an initial request and the
4441    /// request times out. If you make the request again with the same request
4442    /// ID, the server can check if original operation with the same request ID
4443    /// was received, and if so, will ignore the second request. This prevents
4444    /// clients from accidentally creating duplicate commitments.
4445    ///
4446    /// The request ID must be a valid UUID with the exception that zero UUID is
4447    /// not supported (00000000-0000-0000-0000-000000000000).
4448    #[prost(string, tag = "3")]
4449    pub request_id: ::prost::alloc::string::String,
4450}
4451/// Request message for
4452/// \[VmwareEngine.CreateNetworkPolicy\]\[google.cloud.vmwareengine.v1.VmwareEngine.CreateNetworkPolicy\]
4453#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4454pub struct CreateNetworkPolicyRequest {
4455    /// Required. The resource name of the location (region)
4456    /// to create the new network policy in.
4457    /// Resource names are schemeless URIs that follow the conventions in
4458    /// <https://cloud.google.com/apis/design/resource_names.>
4459    /// For example:
4460    /// `projects/my-project/locations/us-central1`
4461    #[prost(string, tag = "1")]
4462    pub parent: ::prost::alloc::string::String,
4463    /// Required. The user-provided identifier of the network policy to be created.
4464    /// This identifier must be unique within parent
4465    /// `projects/{my-project}/locations/{us-central1}/networkPolicies` and becomes
4466    /// the final token in the name URI.
4467    /// The identifier must meet the following requirements:
4468    ///
4469    /// * Only contains 1-63 alphanumeric characters and hyphens
4470    /// * Begins with an alphabetical character
4471    /// * Ends with a non-hyphen character
4472    /// * Not formatted as a UUID
4473    /// * Complies with [RFC 1034](<https://datatracker.ietf.org/doc/html/rfc1034>)
4474    ///   (section 3.5)
4475    #[prost(string, tag = "2")]
4476    pub network_policy_id: ::prost::alloc::string::String,
4477    /// Required. The network policy configuration to use in the request.
4478    #[prost(message, optional, tag = "3")]
4479    pub network_policy: ::core::option::Option<NetworkPolicy>,
4480    /// Optional. A request ID to identify requests. Specify a unique request ID
4481    /// so that if you must retry your request, the server will know to ignore
4482    /// the request if it has already been completed. The server guarantees that a
4483    /// request doesn't result in creation of duplicate commitments for at least 60
4484    /// minutes.
4485    ///
4486    /// For example, consider a situation where you make an initial request and the
4487    /// request times out. If you make the request again with the same request
4488    /// ID, the server can check if original operation with the same request ID
4489    /// was received, and if so, will ignore the second request. This prevents
4490    /// clients from accidentally creating duplicate commitments.
4491    ///
4492    /// The request ID must be a valid UUID with the exception that zero UUID is
4493    /// not supported (00000000-0000-0000-0000-000000000000).
4494    #[prost(string, tag = "4")]
4495    pub request_id: ::prost::alloc::string::String,
4496}
4497/// Request message for
4498/// \[VmwareEngine.DeleteNetworkPolicy\]\[google.cloud.vmwareengine.v1.VmwareEngine.DeleteNetworkPolicy\]
4499#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4500pub struct DeleteNetworkPolicyRequest {
4501    /// Required. The resource name of the network policy to delete.
4502    /// Resource names are schemeless URIs that follow the conventions in
4503    /// <https://cloud.google.com/apis/design/resource_names.>
4504    /// For example:
4505    /// `projects/my-project/locations/us-central1/networkPolicies/my-network-policy`
4506    #[prost(string, tag = "1")]
4507    pub name: ::prost::alloc::string::String,
4508    /// Optional. A request ID to identify requests. Specify a unique request ID
4509    /// so that if you must retry your request, the server will know to ignore
4510    /// the request if it has already been completed. The server guarantees that a
4511    /// request doesn't result in creation of duplicate commitments for at least 60
4512    /// minutes.
4513    ///
4514    /// For example, consider a situation where you make an initial request and the
4515    /// request times out. If you make the request again with the same request
4516    /// ID, the server can check if original operation with the same request ID
4517    /// was received, and if so, will ignore the second request. This prevents
4518    /// clients from accidentally creating duplicate commitments.
4519    ///
4520    /// The request ID must be a valid UUID with the exception that zero UUID is
4521    /// not supported (00000000-0000-0000-0000-000000000000).
4522    #[prost(string, tag = "2")]
4523    pub request_id: ::prost::alloc::string::String,
4524}
4525/// Request message for
4526/// \[VmwareEngine.ListManagementDnsZoneBindings\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListManagementDnsZoneBindings\]
4527#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4528pub struct ListManagementDnsZoneBindingsRequest {
4529    /// Required. The resource name of the private cloud to be queried for
4530    /// management DNS zone bindings.
4531    /// Resource names are schemeless URIs that follow the conventions in
4532    /// <https://cloud.google.com/apis/design/resource_names.>
4533    /// For example:
4534    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
4535    #[prost(string, tag = "1")]
4536    pub parent: ::prost::alloc::string::String,
4537    /// The maximum number of management DNS zone bindings to return in one page.
4538    /// The service may return fewer than this value.
4539    /// The maximum value is coerced to 1000.
4540    /// The default value of this field is 500.
4541    #[prost(int32, tag = "2")]
4542    pub page_size: i32,
4543    /// A page token, received from a previous `ListManagementDnsZoneBindings`
4544    /// call. Provide this to retrieve the subsequent page.
4545    ///
4546    /// When paginating, all other parameters provided to
4547    /// `ListManagementDnsZoneBindings` must match the call that provided the page
4548    /// token.
4549    #[prost(string, tag = "3")]
4550    pub page_token: ::prost::alloc::string::String,
4551    /// A filter expression that matches resources returned in the response.
4552    /// The expression must specify the field name, a comparison
4553    /// operator, and the value that you want to use for filtering. The value
4554    /// must be a string, a number, or a boolean. The comparison operator
4555    /// must be `=`, `!=`, `>`, or `<`.
4556    ///
4557    /// For example, if you are filtering a list of Management DNS Zone Bindings,
4558    /// you can exclude the ones named `example-management-dns-zone-binding` by
4559    /// specifying `name != "example-management-dns-zone-binding"`.
4560    ///
4561    /// To filter on multiple expressions, provide each separate expression within
4562    /// parentheses. For example:
4563    ///
4564    /// ```text,
4565    /// (name = "example-management-dns-zone-binding")
4566    /// (createTime > "2021-04-12T08:15:10.40Z")
4567    /// ```
4568    ///
4569    /// By default, each expression is an `AND` expression. However, you
4570    /// can include `AND` and `OR` expressions explicitly.
4571    /// For example:
4572    ///
4573    /// ```text,
4574    /// (name = "example-management-dns-zone-binding-1") AND
4575    /// (createTime > "2021-04-12T08:15:10.40Z") OR
4576    /// (name = "example-management-dns-zone-binding-2")
4577    /// ```
4578    #[prost(string, tag = "4")]
4579    pub filter: ::prost::alloc::string::String,
4580    /// Sorts list results by a certain order. By default, returned results
4581    /// are ordered by `name` in ascending order.
4582    /// You can also sort results in descending order based on the `name` value
4583    /// using `orderBy="name desc"`.
4584    /// Currently, only ordering by `name` is supported.
4585    #[prost(string, tag = "5")]
4586    pub order_by: ::prost::alloc::string::String,
4587}
4588/// Response message for
4589/// \[VmwareEngine.ListManagementDnsZoneBindings\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListManagementDnsZoneBindings\]
4590#[derive(Clone, PartialEq, ::prost::Message)]
4591pub struct ListManagementDnsZoneBindingsResponse {
4592    /// A list of management DNS zone bindings.
4593    #[prost(message, repeated, tag = "1")]
4594    pub management_dns_zone_bindings: ::prost::alloc::vec::Vec<ManagementDnsZoneBinding>,
4595    /// A token, which can be sent as `page_token` to retrieve the next page.
4596    /// If this field is omitted, there are no subsequent pages.
4597    #[prost(string, tag = "2")]
4598    pub next_page_token: ::prost::alloc::string::String,
4599    /// Locations that could not be reached when making an aggregated query using
4600    /// wildcards.
4601    #[prost(string, repeated, tag = "3")]
4602    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4603}
4604/// Request message for
4605/// \[VmwareEngine.GetManagementDnsZoneBinding\]\[google.cloud.vmwareengine.v1.VmwareEngine.GetManagementDnsZoneBinding\]
4606#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4607pub struct GetManagementDnsZoneBindingRequest {
4608    /// Required. The resource name of the management DNS zone binding to
4609    /// retrieve. Resource names are schemeless URIs that follow the conventions in
4610    /// <https://cloud.google.com/apis/design/resource_names.>
4611    /// For example:
4612    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/managementDnsZoneBindings/my-management-dns-zone-binding`
4613    #[prost(string, tag = "1")]
4614    pub name: ::prost::alloc::string::String,
4615}
4616/// Request message for \[VmwareEngine.CreateManagementDnsZoneBindings\]\[\]
4617#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4618pub struct CreateManagementDnsZoneBindingRequest {
4619    /// Required. The resource name of the private cloud
4620    /// to create a new management DNS zone binding for.
4621    /// Resource names are schemeless URIs that follow the conventions in
4622    /// <https://cloud.google.com/apis/design/resource_names.>
4623    /// For example:
4624    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`
4625    #[prost(string, tag = "1")]
4626    pub parent: ::prost::alloc::string::String,
4627    /// Required. The initial values for a new management DNS zone binding.
4628    #[prost(message, optional, tag = "2")]
4629    pub management_dns_zone_binding: ::core::option::Option<ManagementDnsZoneBinding>,
4630    /// Required. The user-provided identifier of the `ManagementDnsZoneBinding`
4631    /// resource to be created. This identifier must be unique among
4632    /// `ManagementDnsZoneBinding` resources within the parent and becomes the
4633    /// final token in the name URI. The identifier must meet the following
4634    /// requirements:
4635    ///
4636    /// * Only contains 1-63 alphanumeric characters and hyphens
4637    /// * Begins with an alphabetical character
4638    /// * Ends with a non-hyphen character
4639    /// * Not formatted as a UUID
4640    /// * Complies with [RFC 1034](<https://datatracker.ietf.org/doc/html/rfc1034>)
4641    ///   (section 3.5)
4642    #[prost(string, tag = "3")]
4643    pub management_dns_zone_binding_id: ::prost::alloc::string::String,
4644    /// Optional. A request ID to identify requests. Specify a unique request ID
4645    /// so that if you must retry your request, the server will know to ignore
4646    /// the request if it has already been completed. The server guarantees that a
4647    /// request doesn't result in creation of duplicate commitments for at least 60
4648    /// minutes.
4649    ///
4650    /// For example, consider a situation where you make an initial request and the
4651    /// request times out. If you make the request again with the same request ID,
4652    /// the server can check if the original operation with the same request ID was
4653    /// received, and if so, will ignore the second request. This prevents clients
4654    /// from accidentally creating duplicate commitments.
4655    ///
4656    /// The request ID must be a valid UUID with the exception that zero UUID is
4657    /// not supported (00000000-0000-0000-0000-000000000000).
4658    #[prost(string, tag = "4")]
4659    pub request_id: ::prost::alloc::string::String,
4660}
4661/// Request message for
4662/// \[VmwareEngine.UpdateManagementDnsZoneBinding\]\[google.cloud.vmwareengine.v1.VmwareEngine.UpdateManagementDnsZoneBinding\]
4663#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4664pub struct UpdateManagementDnsZoneBindingRequest {
4665    /// Required. Field mask is used to specify the fields to be overwritten in the
4666    /// `ManagementDnsZoneBinding` resource by the update.
4667    /// The fields specified in the `update_mask` are relative to the resource, not
4668    /// the full request. A field will be overwritten if it is in the mask. If the
4669    /// user does not provide a mask then all fields will be overwritten.
4670    #[prost(message, optional, tag = "1")]
4671    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
4672    /// Required. New values to update the management DNS zone binding with.
4673    #[prost(message, optional, tag = "2")]
4674    pub management_dns_zone_binding: ::core::option::Option<ManagementDnsZoneBinding>,
4675    /// Optional. A request ID to identify requests. Specify a unique request ID
4676    /// so that if you must retry your request, the server will know to ignore
4677    /// the request if it has already been completed. The server guarantees that a
4678    /// request doesn't result in creation of duplicate commitments for at least 60
4679    /// minutes.
4680    ///
4681    /// For example, consider a situation where you make an initial request and the
4682    /// request times out. If you make the request again with the same request ID,
4683    /// the server can check if the original operation with the same request ID was
4684    /// received, and if so, will ignore the second request. This prevents clients
4685    /// from accidentally creating duplicate commitments.
4686    ///
4687    /// The request ID must be a valid UUID with the exception that zero UUID is
4688    /// not supported (00000000-0000-0000-0000-000000000000).
4689    #[prost(string, tag = "3")]
4690    pub request_id: ::prost::alloc::string::String,
4691}
4692/// Request message for
4693/// \[VmwareEngine.DeleteManagementDnsZoneBinding\]\[google.cloud.vmwareengine.v1.VmwareEngine.DeleteManagementDnsZoneBinding\]
4694#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4695pub struct DeleteManagementDnsZoneBindingRequest {
4696    /// Required. The resource name of the management DNS zone binding to delete.
4697    /// Resource names are schemeless URIs that follow the conventions in
4698    /// <https://cloud.google.com/apis/design/resource_names.>
4699    /// For example:
4700    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/managementDnsZoneBindings/my-management-dns-zone-binding`
4701    #[prost(string, tag = "1")]
4702    pub name: ::prost::alloc::string::String,
4703    /// Optional. A request ID to identify requests. Specify a unique request ID
4704    /// so that if you must retry your request, the server will know to ignore
4705    /// the request if it has already been completed. The server guarantees that a
4706    /// request doesn't result in creation of duplicate commitments for at least 60
4707    /// minutes.
4708    ///
4709    /// For example, consider a situation where you make an initial request and the
4710    /// request times out. If you make the request again with the same request
4711    /// ID, the server can check if the original operation with the same request ID
4712    /// was received, and if so, will ignore the second request. This prevents
4713    /// clients from accidentally creating duplicate commitments.
4714    ///
4715    /// The request ID must be a valid UUID with the exception that zero UUID is
4716    /// not supported (00000000-0000-0000-0000-000000000000).
4717    #[prost(string, tag = "2")]
4718    pub request_id: ::prost::alloc::string::String,
4719}
4720/// Request message for \[VmwareEngine.RepairManagementDnsZoneBindings\]\[\]
4721#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4722pub struct RepairManagementDnsZoneBindingRequest {
4723    /// Required. The resource name of the management DNS zone binding to repair.
4724    /// Resource names are schemeless URIs that follow the conventions in
4725    /// <https://cloud.google.com/apis/design/resource_names.>
4726    /// For example:
4727    /// `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/managementDnsZoneBindings/my-management-dns-zone-binding`
4728    #[prost(string, tag = "1")]
4729    pub name: ::prost::alloc::string::String,
4730    /// Optional. A request ID to identify requests. Specify a unique request ID
4731    /// so that if you must retry your request, the server will know to ignore
4732    /// the request if it has already been completed. The server guarantees that a
4733    /// request doesn't result in creation of duplicate commitments for at least 60
4734    /// minutes.
4735    ///
4736    /// For example, consider a situation where you make an initial request and the
4737    /// request times out. If you make the request again with the same request ID,
4738    /// the server can check if the original operation with the same request ID was
4739    /// received, and if so, will ignore the second request. This prevents clients
4740    /// from accidentally creating duplicate commitments.
4741    ///
4742    /// The request ID must be a valid UUID with the exception that zero UUID is
4743    /// not supported (00000000-0000-0000-0000-000000000000).
4744    #[prost(string, tag = "2")]
4745    pub request_id: ::prost::alloc::string::String,
4746}
4747/// Request message for
4748/// \[VmwareEngine.CreateVmwareEngineNetwork\]\[google.cloud.vmwareengine.v1.VmwareEngine.CreateVmwareEngineNetwork\]
4749#[derive(Clone, PartialEq, ::prost::Message)]
4750pub struct CreateVmwareEngineNetworkRequest {
4751    /// Required. The resource name of the location to create the new VMware Engine
4752    /// network in. A VMware Engine network of type
4753    /// `LEGACY` is a regional resource, and a VMware
4754    /// Engine network of type `STANDARD` is a global resource.
4755    /// Resource names are schemeless URIs that follow the conventions in
4756    /// <https://cloud.google.com/apis/design/resource_names.> For example:
4757    /// `projects/my-project/locations/global`
4758    #[prost(string, tag = "1")]
4759    pub parent: ::prost::alloc::string::String,
4760    /// Required. The user-provided identifier of the new VMware Engine network.
4761    /// This identifier must be unique among VMware Engine network resources
4762    /// within the parent and becomes the final token in the name URI. The
4763    /// identifier must meet the following requirements:
4764    ///
4765    /// * For networks of type LEGACY, adheres to the format:
4766    ///   `{region-id}-default`. Replace `{region-id}` with the region where you want
4767    ///   to create the VMware Engine network. For example, "us-central1-default".
4768    /// * Only contains 1-63 alphanumeric characters and hyphens
4769    /// * Begins with an alphabetical character
4770    /// * Ends with a non-hyphen character
4771    /// * Not formatted as a UUID
4772    /// * Complies with [RFC 1034](<https://datatracker.ietf.org/doc/html/rfc1034>)
4773    ///   (section 3.5)
4774    #[prost(string, tag = "2")]
4775    pub vmware_engine_network_id: ::prost::alloc::string::String,
4776    /// Required. The initial description of the new VMware Engine network.
4777    #[prost(message, optional, tag = "3")]
4778    pub vmware_engine_network: ::core::option::Option<VmwareEngineNetwork>,
4779    /// Optional. A request ID to identify requests. Specify a unique request ID
4780    /// so that if you must retry your request, the server will know to ignore
4781    /// the request if it has already been completed. The server guarantees that a
4782    /// request doesn't result in creation of duplicate commitments for at least 60
4783    /// minutes.
4784    ///
4785    /// For example, consider a situation where you make an initial request and the
4786    /// request times out. If you make the request again with the same request
4787    /// ID, the server can check if original operation with the same request ID
4788    /// was received, and if so, will ignore the second request. This prevents
4789    /// clients from accidentally creating duplicate commitments.
4790    ///
4791    /// The request ID must be a valid UUID with the exception that zero UUID is
4792    /// not supported (00000000-0000-0000-0000-000000000000).
4793    #[prost(string, tag = "4")]
4794    pub request_id: ::prost::alloc::string::String,
4795}
4796/// Request message for
4797/// \[VmwareEngine.UpdateVmwareEngineNetwork\]\[google.cloud.vmwareengine.v1.VmwareEngine.UpdateVmwareEngineNetwork\]
4798#[derive(Clone, PartialEq, ::prost::Message)]
4799pub struct UpdateVmwareEngineNetworkRequest {
4800    /// Required. VMware Engine network description.
4801    #[prost(message, optional, tag = "1")]
4802    pub vmware_engine_network: ::core::option::Option<VmwareEngineNetwork>,
4803    /// Required. Field mask is used to specify the fields to be overwritten in the
4804    /// VMware Engine network resource by the update.
4805    /// The fields specified in the `update_mask` are relative to the resource, not
4806    /// the full request. A field will be overwritten if it is in the mask. If the
4807    /// user does not provide a mask then all fields will be overwritten. Only the
4808    /// following fields can be updated: `description`.
4809    #[prost(message, optional, tag = "2")]
4810    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
4811    /// Optional. A request ID to identify requests. Specify a unique request ID
4812    /// so that if you must retry your request, the server will know to ignore
4813    /// the request if it has already been completed. The server guarantees that a
4814    /// request doesn't result in creation of duplicate commitments for at least 60
4815    /// minutes.
4816    ///
4817    /// For example, consider a situation where you make an initial request and the
4818    /// request times out. If you make the request again with the same request
4819    /// ID, the server can check if original operation with the same request ID
4820    /// was received, and if so, will ignore the second request. This prevents
4821    /// clients from accidentally creating duplicate commitments.
4822    ///
4823    /// The request ID must be a valid UUID with the exception that zero UUID is
4824    /// not supported (00000000-0000-0000-0000-000000000000).
4825    #[prost(string, tag = "3")]
4826    pub request_id: ::prost::alloc::string::String,
4827}
4828/// Request message for
4829/// \[VmwareEngine.DeleteVmwareEngineNetwork\]\[google.cloud.vmwareengine.v1.VmwareEngine.DeleteVmwareEngineNetwork\]
4830#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4831pub struct DeleteVmwareEngineNetworkRequest {
4832    /// Required. The resource name of the VMware Engine network to be deleted.
4833    /// Resource names are schemeless URIs that follow the conventions in
4834    /// <https://cloud.google.com/apis/design/resource_names.>
4835    /// For example:
4836    /// `projects/my-project/locations/global/vmwareEngineNetworks/my-network`
4837    #[prost(string, tag = "1")]
4838    pub name: ::prost::alloc::string::String,
4839    /// Optional. A request ID to identify requests. Specify a unique request ID
4840    /// so that if you must retry your request, the server will know to ignore
4841    /// the request if it has already been completed. The server guarantees that a
4842    /// request doesn't result in creation of duplicate commitments for at least 60
4843    /// minutes.
4844    ///
4845    /// For example, consider a situation where you make an initial request and the
4846    /// request times out. If you make the request again with the same request
4847    /// ID, the server can check if original operation with the same request ID
4848    /// was received, and if so, will ignore the second request. This prevents
4849    /// clients from accidentally creating duplicate commitments.
4850    ///
4851    /// The request ID must be a valid UUID with the exception that zero UUID is
4852    /// not supported (00000000-0000-0000-0000-000000000000).
4853    #[prost(string, tag = "2")]
4854    pub request_id: ::prost::alloc::string::String,
4855    /// Optional. Checksum used to ensure that the user-provided value is up to
4856    /// date before the server processes the request. The server compares provided
4857    /// checksum with the current checksum of the resource. If the user-provided
4858    /// value is out of date, this request returns an `ABORTED` error.
4859    #[prost(string, tag = "3")]
4860    pub etag: ::prost::alloc::string::String,
4861}
4862/// Request message for
4863/// \[VmwareEngine.GetVmwareEngineNetwork\]\[google.cloud.vmwareengine.v1.VmwareEngine.GetVmwareEngineNetwork\]
4864#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4865pub struct GetVmwareEngineNetworkRequest {
4866    /// Required. The resource name of the VMware Engine network to retrieve.
4867    /// Resource names are schemeless URIs that follow the conventions in
4868    /// <https://cloud.google.com/apis/design/resource_names.>
4869    /// For example:
4870    /// `projects/my-project/locations/global/vmwareEngineNetworks/my-network`
4871    #[prost(string, tag = "1")]
4872    pub name: ::prost::alloc::string::String,
4873}
4874/// Request message for
4875/// \[VmwareEngine.ListVmwareEngineNetworks\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListVmwareEngineNetworks\]
4876#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4877pub struct ListVmwareEngineNetworksRequest {
4878    /// Required. The resource name of the location to query for
4879    /// VMware Engine networks. Resource names are schemeless URIs that follow the
4880    /// conventions in <https://cloud.google.com/apis/design/resource_names.> For
4881    /// example: `projects/my-project/locations/global`
4882    #[prost(string, tag = "1")]
4883    pub parent: ::prost::alloc::string::String,
4884    /// The maximum number of results to return in one page.
4885    /// The maximum value is coerced to 1000.
4886    /// The default value of this field is 500.
4887    #[prost(int32, tag = "2")]
4888    pub page_size: i32,
4889    /// A page token, received from a previous `ListVmwareEngineNetworks` call.
4890    /// Provide this to retrieve the subsequent page.
4891    ///
4892    /// When paginating, all other parameters provided to
4893    /// `ListVmwareEngineNetworks` must match the call that provided the page
4894    /// token.
4895    #[prost(string, tag = "3")]
4896    pub page_token: ::prost::alloc::string::String,
4897    /// A filter expression that matches resources returned in the response.
4898    /// The expression must specify the field name, a comparison
4899    /// operator, and the value that you want to use for filtering. The value
4900    /// must be a string, a number, or a boolean. The comparison operator
4901    /// must be `=`, `!=`, `>`, or `<`.
4902    ///
4903    /// For example, if you are filtering a list of network peerings, you can
4904    /// exclude the ones named `example-network` by specifying
4905    /// `name != "example-network"`.
4906    ///
4907    /// To filter on multiple expressions, provide each separate expression within
4908    /// parentheses. For example:
4909    ///
4910    /// ```text,
4911    /// (name = "example-network")
4912    /// (createTime > "2021-04-12T08:15:10.40Z")
4913    /// ```
4914    ///
4915    /// By default, each expression is an `AND` expression. However, you
4916    /// can include `AND` and `OR` expressions explicitly.
4917    /// For example:
4918    ///
4919    /// ```text,
4920    /// (name = "example-network-1") AND
4921    /// (createTime > "2021-04-12T08:15:10.40Z") OR
4922    /// (name = "example-network-2")
4923    /// ```
4924    #[prost(string, tag = "4")]
4925    pub filter: ::prost::alloc::string::String,
4926    /// Sorts list results by a certain order. By default, returned results
4927    /// are ordered by `name` in ascending order.
4928    /// You can also sort results in descending order based on the `name` value
4929    /// using `orderBy="name desc"`.
4930    /// Currently, only ordering by `name` is supported.
4931    #[prost(string, tag = "5")]
4932    pub order_by: ::prost::alloc::string::String,
4933}
4934/// Response message for
4935/// \[VmwareEngine.ListVmwareEngineNetworks\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListVmwareEngineNetworks\]
4936#[derive(Clone, PartialEq, ::prost::Message)]
4937pub struct ListVmwareEngineNetworksResponse {
4938    /// A list of VMware Engine networks.
4939    #[prost(message, repeated, tag = "1")]
4940    pub vmware_engine_networks: ::prost::alloc::vec::Vec<VmwareEngineNetwork>,
4941    /// A token, which can be sent as `page_token` to retrieve the next page.
4942    /// If this field is omitted, there are no subsequent pages.
4943    #[prost(string, tag = "2")]
4944    pub next_page_token: ::prost::alloc::string::String,
4945    /// Unreachable resources.
4946    #[prost(string, repeated, tag = "3")]
4947    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4948}
4949/// Request message for
4950/// \[VmwareEngine.CreatePrivateConnection\]\[google.cloud.vmwareengine.v1.VmwareEngine.CreatePrivateConnection\]
4951#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4952pub struct CreatePrivateConnectionRequest {
4953    /// Required. The resource name of the location to create the new private
4954    /// connection in. Private connection is a regional resource.
4955    /// Resource names are schemeless URIs that follow the conventions in
4956    /// <https://cloud.google.com/apis/design/resource_names.> For example:
4957    /// `projects/my-project/locations/us-central1`
4958    #[prost(string, tag = "1")]
4959    pub parent: ::prost::alloc::string::String,
4960    /// Required. The user-provided identifier of the new private connection.
4961    /// This identifier must be unique among private connection resources
4962    /// within the parent and becomes the final token in the name URI. The
4963    /// identifier must meet the following requirements:
4964    ///
4965    /// * Only contains 1-63 alphanumeric characters and hyphens
4966    /// * Begins with an alphabetical character
4967    /// * Ends with a non-hyphen character
4968    /// * Not formatted as a UUID
4969    /// * Complies with [RFC 1034](<https://datatracker.ietf.org/doc/html/rfc1034>)
4970    ///   (section 3.5)
4971    #[prost(string, tag = "2")]
4972    pub private_connection_id: ::prost::alloc::string::String,
4973    /// Required. The initial description of the new private connection.
4974    #[prost(message, optional, tag = "3")]
4975    pub private_connection: ::core::option::Option<PrivateConnection>,
4976    /// Optional. A request ID to identify requests. Specify a unique request ID
4977    /// so that if you must retry your request, the server will know to ignore
4978    /// the request if it has already been completed. The server guarantees that a
4979    /// request doesn't result in creation of duplicate commitments for at least 60
4980    /// minutes.
4981    ///
4982    /// For example, consider a situation where you make an initial request and the
4983    /// request times out. If you make the request again with the same request
4984    /// ID, the server can check if original operation with the same request ID
4985    /// was received, and if so, will ignore the second request. This prevents
4986    /// clients from accidentally creating duplicate commitments.
4987    ///
4988    /// The request ID must be a valid UUID with the exception that zero UUID is
4989    /// not supported (00000000-0000-0000-0000-000000000000).
4990    #[prost(string, tag = "4")]
4991    pub request_id: ::prost::alloc::string::String,
4992}
4993/// Request message for
4994/// \[VmwareEngine.GetPrivateConnection\]\[google.cloud.vmwareengine.v1.VmwareEngine.GetPrivateConnection\]
4995#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4996pub struct GetPrivateConnectionRequest {
4997    /// Required. The resource name of the private connection to retrieve.
4998    /// Resource names are schemeless URIs that follow the conventions in
4999    /// <https://cloud.google.com/apis/design/resource_names.>
5000    /// For example:
5001    /// `projects/my-project/locations/us-central1/privateConnections/my-connection`
5002    #[prost(string, tag = "1")]
5003    pub name: ::prost::alloc::string::String,
5004}
5005/// Request message for
5006/// \[VmwareEngine.ListPrivateConnections\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateConnections\]
5007#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5008pub struct ListPrivateConnectionsRequest {
5009    /// Required. The resource name of the location to query for
5010    /// private connections. Resource names are schemeless URIs that follow the
5011    /// conventions in <https://cloud.google.com/apis/design/resource_names.> For
5012    /// example: `projects/my-project/locations/us-central1`
5013    #[prost(string, tag = "1")]
5014    pub parent: ::prost::alloc::string::String,
5015    /// The maximum number of private connections to return in one page.
5016    /// The maximum value is coerced to 1000.
5017    /// The default value of this field is 500.
5018    #[prost(int32, tag = "2")]
5019    pub page_size: i32,
5020    /// A page token, received from a previous `ListPrivateConnections` call.
5021    /// Provide this to retrieve the subsequent page.
5022    ///
5023    /// When paginating, all other parameters provided to
5024    /// `ListPrivateConnections` must match the call that provided the page
5025    /// token.
5026    #[prost(string, tag = "3")]
5027    pub page_token: ::prost::alloc::string::String,
5028    /// A filter expression that matches resources returned in the response.
5029    /// The expression must specify the field name, a comparison
5030    /// operator, and the value that you want to use for filtering. The value
5031    /// must be a string, a number, or a boolean. The comparison operator
5032    /// must be `=`, `!=`, `>`, or `<`.
5033    ///
5034    /// For example, if you are filtering a list of private connections, you can
5035    /// exclude the ones named `example-connection` by specifying
5036    /// `name != "example-connection"`.
5037    ///
5038    /// To filter on multiple expressions, provide each separate expression within
5039    /// parentheses. For example:
5040    ///
5041    /// ```text,
5042    /// (name = "example-connection")
5043    /// (createTime > "2022-09-22T08:15:10.40Z")
5044    /// ```
5045    ///
5046    /// By default, each expression is an `AND` expression. However, you
5047    /// can include `AND` and `OR` expressions explicitly.
5048    /// For example:
5049    ///
5050    /// ```text,
5051    /// (name = "example-connection-1") AND
5052    /// (createTime > "2021-04-12T08:15:10.40Z") OR
5053    /// (name = "example-connection-2")
5054    /// ```
5055    #[prost(string, tag = "4")]
5056    pub filter: ::prost::alloc::string::String,
5057    /// Sorts list results by a certain order. By default, returned results
5058    /// are ordered by `name` in ascending order.
5059    /// You can also sort results in descending order based on the `name` value
5060    /// using `orderBy="name desc"`.
5061    /// Currently, only ordering by `name` is supported.
5062    #[prost(string, tag = "5")]
5063    pub order_by: ::prost::alloc::string::String,
5064}
5065/// Response message for
5066/// \[VmwareEngine.ListPrivateConnections\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateConnections\]
5067#[derive(Clone, PartialEq, ::prost::Message)]
5068pub struct ListPrivateConnectionsResponse {
5069    /// A list of private connections.
5070    #[prost(message, repeated, tag = "1")]
5071    pub private_connections: ::prost::alloc::vec::Vec<PrivateConnection>,
5072    /// A token, which can be sent as `page_token` to retrieve the next page.
5073    /// If this field is omitted, there are no subsequent pages.
5074    #[prost(string, tag = "2")]
5075    pub next_page_token: ::prost::alloc::string::String,
5076    /// Unreachable resources.
5077    #[prost(string, repeated, tag = "3")]
5078    pub unreachable: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5079}
5080/// Request message for
5081/// \[VmwareEngine.UpdatePrivateConnection\]\[google.cloud.vmwareengine.v1.VmwareEngine.UpdatePrivateConnection\]
5082#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5083pub struct UpdatePrivateConnectionRequest {
5084    /// Required. Private connection description.
5085    #[prost(message, optional, tag = "1")]
5086    pub private_connection: ::core::option::Option<PrivateConnection>,
5087    /// Required. Field mask is used to specify the fields to be overwritten in the
5088    /// `PrivateConnection` resource by the update.
5089    /// The fields specified in the `update_mask` are relative to the resource, not
5090    /// the full request. A field will be overwritten if it is in the mask. If the
5091    /// user does not provide a mask then all fields will be overwritten.
5092    #[prost(message, optional, tag = "2")]
5093    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
5094    /// Optional. A request ID to identify requests. Specify a unique request ID
5095    /// so that if you must retry your request, the server will know to ignore
5096    /// the request if it has already been completed. The server guarantees that a
5097    /// request doesn't result in creation of duplicate commitments for at least 60
5098    /// minutes.
5099    ///
5100    /// For example, consider a situation where you make an initial request and the
5101    /// request times out. If you make the request again with the same request
5102    /// ID, the server can check if original operation with the same request ID
5103    /// was received, and if so, will ignore the second request. This prevents
5104    /// clients from accidentally creating duplicate commitments.
5105    ///
5106    /// The request ID must be a valid UUID with the exception that zero UUID is
5107    /// not supported (00000000-0000-0000-0000-000000000000).
5108    #[prost(string, tag = "3")]
5109    pub request_id: ::prost::alloc::string::String,
5110}
5111/// Request message for
5112/// \[VmwareEngine.DeletePrivateConnection\]\[google.cloud.vmwareengine.v1.VmwareEngine.DeletePrivateConnection\]
5113#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5114pub struct DeletePrivateConnectionRequest {
5115    /// Required. The resource name of the private connection to be deleted.
5116    /// Resource names are schemeless URIs that follow the conventions in
5117    /// <https://cloud.google.com/apis/design/resource_names.>
5118    /// For example:
5119    /// `projects/my-project/locations/us-central1/privateConnections/my-connection`
5120    #[prost(string, tag = "1")]
5121    pub name: ::prost::alloc::string::String,
5122    /// Optional. A request ID to identify requests. Specify a unique request ID
5123    /// so that if you must retry your request, the server will know to ignore
5124    /// the request if it has already been completed. The server guarantees that a
5125    /// request doesn't result in creation of duplicate commitments for at least 60
5126    /// minutes.
5127    ///
5128    /// For example, consider a situation where you make an initial request and the
5129    /// request times out. If you make the request again with the same request
5130    /// ID, the server can check if original operation with the same request ID
5131    /// was received, and if so, will ignore the second request. This prevents
5132    /// clients from accidentally creating duplicate commitments.
5133    ///
5134    /// The request ID must be a valid UUID with the exception that zero UUID is
5135    /// not supported (00000000-0000-0000-0000-000000000000).
5136    #[prost(string, tag = "2")]
5137    pub request_id: ::prost::alloc::string::String,
5138}
5139/// Request message for
5140/// \[VmwareEngine.ListPrivateConnectionPeeringRoutes\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateConnectionPeeringRoutes\]
5141#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5142pub struct ListPrivateConnectionPeeringRoutesRequest {
5143    /// Required. The resource name of the private connection to retrieve peering
5144    /// routes from. Resource names are schemeless URIs that follow the conventions
5145    /// in <https://cloud.google.com/apis/design/resource_names.> For example:
5146    /// `projects/my-project/locations/us-west1/privateConnections/my-connection`
5147    #[prost(string, tag = "1")]
5148    pub parent: ::prost::alloc::string::String,
5149    /// The maximum number of peering routes to return in one page.
5150    /// The service may return fewer than this value.
5151    /// The maximum value is coerced to 1000.
5152    /// The default value of this field is 500.
5153    #[prost(int32, tag = "2")]
5154    pub page_size: i32,
5155    /// A page token, received from a previous `ListPrivateConnectionPeeringRoutes`
5156    /// call. Provide this to retrieve the subsequent page. When paginating, all
5157    /// other parameters provided to `ListPrivateConnectionPeeringRoutes` must
5158    /// match the call that provided the page token.
5159    #[prost(string, tag = "3")]
5160    pub page_token: ::prost::alloc::string::String,
5161}
5162/// Response message for
5163/// \[VmwareEngine.ListPrivateConnectionPeeringRoutes\]\[google.cloud.vmwareengine.v1.VmwareEngine.ListPrivateConnectionPeeringRoutes\]
5164#[derive(Clone, PartialEq, ::prost::Message)]
5165pub struct ListPrivateConnectionPeeringRoutesResponse {
5166    /// A list of peering routes.
5167    #[prost(message, repeated, tag = "1")]
5168    pub peering_routes: ::prost::alloc::vec::Vec<PeeringRoute>,
5169    /// A token, which can be sent as `page_token` to retrieve the next page.
5170    /// If this field is omitted, there are no subsequent pages.
5171    #[prost(string, tag = "2")]
5172    pub next_page_token: ::prost::alloc::string::String,
5173}
5174/// Request message for
5175/// \[VmwareEngine.GrantDnsBindPermission\]\[google.cloud.vmwareengine.v1.VmwareEngine.GrantDnsBindPermission\]
5176#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5177pub struct GrantDnsBindPermissionRequest {
5178    /// Required. The name of the resource which stores the users/service accounts
5179    /// having the permission to bind to the corresponding intranet VPC of the
5180    /// consumer project. DnsBindPermission is a global resource. Resource names
5181    /// are schemeless URIs that follow the conventions in
5182    /// <https://cloud.google.com/apis/design/resource_names.> For example:
5183    /// `projects/my-project/locations/global/dnsBindPermission`
5184    #[prost(string, tag = "1")]
5185    pub name: ::prost::alloc::string::String,
5186    /// Required. The consumer provided user/service account which needs to be
5187    /// granted permission to bind with the intranet VPC corresponding to the
5188    /// consumer project.
5189    #[prost(message, optional, tag = "2")]
5190    pub principal: ::core::option::Option<Principal>,
5191    /// Optional. A request ID to identify requests. Specify a unique request ID
5192    /// so that if you must retry your request, the server will know to ignore
5193    /// the request if it has already been completed. The server guarantees that a
5194    /// request doesn't result in creation of duplicate commitments for at least 60
5195    /// minutes.
5196    ///
5197    /// For example, consider a situation where you make an initial request and the
5198    /// request times out. If you make the request again with the same request
5199    /// ID, the server can check if original operation with the same request ID
5200    /// was received, and if so, will ignore the second request. This prevents
5201    /// clients from accidentally creating duplicate commitments.
5202    ///
5203    /// The request ID must be a valid UUID with the exception that zero UUID is
5204    /// not supported (00000000-0000-0000-0000-000000000000).
5205    #[prost(string, tag = "3")]
5206    pub request_id: ::prost::alloc::string::String,
5207}
5208/// Request message for
5209/// \[VmwareEngine.RevokeDnsBindPermission\]\[google.cloud.vmwareengine.v1.VmwareEngine.RevokeDnsBindPermission\]
5210#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5211pub struct RevokeDnsBindPermissionRequest {
5212    /// Required. The name of the resource which stores the users/service accounts
5213    /// having the permission to bind to the corresponding intranet VPC of the
5214    /// consumer project. DnsBindPermission is a global resource. Resource names
5215    /// are schemeless URIs that follow the conventions in
5216    /// <https://cloud.google.com/apis/design/resource_names.> For example:
5217    /// `projects/my-project/locations/global/dnsBindPermission`
5218    #[prost(string, tag = "1")]
5219    pub name: ::prost::alloc::string::String,
5220    /// Required. The consumer provided user/service account which needs to be
5221    /// granted permission to bind with the intranet VPC corresponding to the
5222    /// consumer project.
5223    #[prost(message, optional, tag = "2")]
5224    pub principal: ::core::option::Option<Principal>,
5225    /// Optional. A request ID to identify requests. Specify a unique request ID
5226    /// so that if you must retry your request, the server will know to ignore
5227    /// the request if it has already been completed. The server guarantees that a
5228    /// request doesn't result in creation of duplicate commitments for at least 60
5229    /// minutes.
5230    ///
5231    /// For example, consider a situation where you make an initial request and the
5232    /// request times out. If you make the request again with the same request
5233    /// ID, the server can check if original operation with the same request ID
5234    /// was received, and if so, will ignore the second request. This prevents
5235    /// clients from accidentally creating duplicate commitments.
5236    ///
5237    /// The request ID must be a valid UUID with the exception that zero UUID is
5238    /// not supported (00000000-0000-0000-0000-000000000000).
5239    #[prost(string, tag = "3")]
5240    pub request_id: ::prost::alloc::string::String,
5241}
5242/// Request message for
5243/// \[VmwareEngine.GetDnsBindPermission\]\[google.cloud.vmwareengine.v1.VmwareEngine.GetDnsBindPermission\]
5244#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5245pub struct GetDnsBindPermissionRequest {
5246    /// Required. The name of the resource which stores the users/service accounts
5247    /// having the permission to bind to the corresponding intranet VPC of the
5248    /// consumer project. DnsBindPermission is a global resource. Resource names
5249    /// are schemeless URIs that follow the conventions in
5250    /// <https://cloud.google.com/apis/design/resource_names.> For example:
5251    /// `projects/my-project/locations/global/dnsBindPermission`
5252    #[prost(string, tag = "1")]
5253    pub name: ::prost::alloc::string::String,
5254}
5255/// Generated client implementations.
5256pub mod vmware_engine_client {
5257    #![allow(
5258        unused_variables,
5259        dead_code,
5260        missing_docs,
5261        clippy::wildcard_imports,
5262        clippy::let_unit_value,
5263    )]
5264    use tonic::codegen::*;
5265    use tonic::codegen::http::Uri;
5266    /// VMwareEngine manages VMware's private clusters in the Cloud.
5267    #[derive(Debug, Clone)]
5268    pub struct VmwareEngineClient<T> {
5269        inner: tonic::client::Grpc<T>,
5270    }
5271    impl<T> VmwareEngineClient<T>
5272    where
5273        T: tonic::client::GrpcService<tonic::body::Body>,
5274        T::Error: Into<StdError>,
5275        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
5276        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
5277    {
5278        pub fn new(inner: T) -> Self {
5279            let inner = tonic::client::Grpc::new(inner);
5280            Self { inner }
5281        }
5282        pub fn with_origin(inner: T, origin: Uri) -> Self {
5283            let inner = tonic::client::Grpc::with_origin(inner, origin);
5284            Self { inner }
5285        }
5286        pub fn with_interceptor<F>(
5287            inner: T,
5288            interceptor: F,
5289        ) -> VmwareEngineClient<InterceptedService<T, F>>
5290        where
5291            F: tonic::service::Interceptor,
5292            T::ResponseBody: Default,
5293            T: tonic::codegen::Service<
5294                http::Request<tonic::body::Body>,
5295                Response = http::Response<
5296                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
5297                >,
5298            >,
5299            <T as tonic::codegen::Service<
5300                http::Request<tonic::body::Body>,
5301            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
5302        {
5303            VmwareEngineClient::new(InterceptedService::new(inner, interceptor))
5304        }
5305        /// Compress requests with the given encoding.
5306        ///
5307        /// This requires the server to support it otherwise it might respond with an
5308        /// error.
5309        #[must_use]
5310        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
5311            self.inner = self.inner.send_compressed(encoding);
5312            self
5313        }
5314        /// Enable decompressing responses.
5315        #[must_use]
5316        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
5317            self.inner = self.inner.accept_compressed(encoding);
5318            self
5319        }
5320        /// Limits the maximum size of a decoded message.
5321        ///
5322        /// Default: `4MB`
5323        #[must_use]
5324        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
5325            self.inner = self.inner.max_decoding_message_size(limit);
5326            self
5327        }
5328        /// Limits the maximum size of an encoded message.
5329        ///
5330        /// Default: `usize::MAX`
5331        #[must_use]
5332        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
5333            self.inner = self.inner.max_encoding_message_size(limit);
5334            self
5335        }
5336        /// Lists `PrivateCloud` resources in a given project and location.
5337        pub async fn list_private_clouds(
5338            &mut self,
5339            request: impl tonic::IntoRequest<super::ListPrivateCloudsRequest>,
5340        ) -> std::result::Result<
5341            tonic::Response<super::ListPrivateCloudsResponse>,
5342            tonic::Status,
5343        > {
5344            self.inner
5345                .ready()
5346                .await
5347                .map_err(|e| {
5348                    tonic::Status::unknown(
5349                        format!("Service was not ready: {}", e.into()),
5350                    )
5351                })?;
5352            let codec = tonic_prost::ProstCodec::default();
5353            let path = http::uri::PathAndQuery::from_static(
5354                "/google.cloud.vmwareengine.v1.VmwareEngine/ListPrivateClouds",
5355            );
5356            let mut req = request.into_request();
5357            req.extensions_mut()
5358                .insert(
5359                    GrpcMethod::new(
5360                        "google.cloud.vmwareengine.v1.VmwareEngine",
5361                        "ListPrivateClouds",
5362                    ),
5363                );
5364            self.inner.unary(req, path, codec).await
5365        }
5366        /// Retrieves a `PrivateCloud` resource by its resource name.
5367        pub async fn get_private_cloud(
5368            &mut self,
5369            request: impl tonic::IntoRequest<super::GetPrivateCloudRequest>,
5370        ) -> std::result::Result<tonic::Response<super::PrivateCloud>, tonic::Status> {
5371            self.inner
5372                .ready()
5373                .await
5374                .map_err(|e| {
5375                    tonic::Status::unknown(
5376                        format!("Service was not ready: {}", e.into()),
5377                    )
5378                })?;
5379            let codec = tonic_prost::ProstCodec::default();
5380            let path = http::uri::PathAndQuery::from_static(
5381                "/google.cloud.vmwareengine.v1.VmwareEngine/GetPrivateCloud",
5382            );
5383            let mut req = request.into_request();
5384            req.extensions_mut()
5385                .insert(
5386                    GrpcMethod::new(
5387                        "google.cloud.vmwareengine.v1.VmwareEngine",
5388                        "GetPrivateCloud",
5389                    ),
5390                );
5391            self.inner.unary(req, path, codec).await
5392        }
5393        /// Creates a new `PrivateCloud` resource in a given project and location.
5394        /// Private clouds of type `STANDARD` and
5395        /// `TIME_LIMITED` are zonal resources, `STRETCHED` private clouds are
5396        /// regional.
5397        /// Creating a private cloud also creates a [management
5398        /// cluster](https://cloud.google.com/vmware-engine/docs/concepts-vmware-components)
5399        /// for that private cloud.
5400        pub async fn create_private_cloud(
5401            &mut self,
5402            request: impl tonic::IntoRequest<super::CreatePrivateCloudRequest>,
5403        ) -> std::result::Result<
5404            tonic::Response<super::super::super::super::longrunning::Operation>,
5405            tonic::Status,
5406        > {
5407            self.inner
5408                .ready()
5409                .await
5410                .map_err(|e| {
5411                    tonic::Status::unknown(
5412                        format!("Service was not ready: {}", e.into()),
5413                    )
5414                })?;
5415            let codec = tonic_prost::ProstCodec::default();
5416            let path = http::uri::PathAndQuery::from_static(
5417                "/google.cloud.vmwareengine.v1.VmwareEngine/CreatePrivateCloud",
5418            );
5419            let mut req = request.into_request();
5420            req.extensions_mut()
5421                .insert(
5422                    GrpcMethod::new(
5423                        "google.cloud.vmwareengine.v1.VmwareEngine",
5424                        "CreatePrivateCloud",
5425                    ),
5426                );
5427            self.inner.unary(req, path, codec).await
5428        }
5429        /// Modifies a `PrivateCloud` resource. Only the following fields can be
5430        /// updated: `description`.
5431        /// Only fields specified in `updateMask` are applied.
5432        ///
5433        /// During operation processing, the resource is temporarily in the `ACTIVE`
5434        /// state before the operation fully completes. For that period of time, you
5435        /// can't update the resource. Use the operation status to determine when the
5436        /// processing fully completes.
5437        pub async fn update_private_cloud(
5438            &mut self,
5439            request: impl tonic::IntoRequest<super::UpdatePrivateCloudRequest>,
5440        ) -> std::result::Result<
5441            tonic::Response<super::super::super::super::longrunning::Operation>,
5442            tonic::Status,
5443        > {
5444            self.inner
5445                .ready()
5446                .await
5447                .map_err(|e| {
5448                    tonic::Status::unknown(
5449                        format!("Service was not ready: {}", e.into()),
5450                    )
5451                })?;
5452            let codec = tonic_prost::ProstCodec::default();
5453            let path = http::uri::PathAndQuery::from_static(
5454                "/google.cloud.vmwareengine.v1.VmwareEngine/UpdatePrivateCloud",
5455            );
5456            let mut req = request.into_request();
5457            req.extensions_mut()
5458                .insert(
5459                    GrpcMethod::new(
5460                        "google.cloud.vmwareengine.v1.VmwareEngine",
5461                        "UpdatePrivateCloud",
5462                    ),
5463                );
5464            self.inner.unary(req, path, codec).await
5465        }
5466        /// Schedules a `PrivateCloud` resource for deletion.
5467        ///
5468        /// A `PrivateCloud` resource scheduled for deletion has `PrivateCloud.state`
5469        /// set to `DELETED` and `expireTime` set to the time when deletion is final
5470        /// and can no longer be reversed. The delete operation is marked as done
5471        /// as soon as the `PrivateCloud` is successfully scheduled for deletion
5472        /// (this also applies when `delayHours` is set to zero), and the operation is
5473        /// not kept in pending state until `PrivateCloud` is purged.
5474        /// `PrivateCloud` can be restored using `UndeletePrivateCloud` method before
5475        /// the `expireTime` elapses. When `expireTime` is reached, deletion is final
5476        /// and all private cloud resources are irreversibly removed and billing stops.
5477        /// During the final removal process, `PrivateCloud.state` is set to `PURGING`.
5478        /// `PrivateCloud` can be polled using standard `GET` method for the whole
5479        /// period of deletion and purging. It will not be returned only
5480        /// when it is completely purged.
5481        pub async fn delete_private_cloud(
5482            &mut self,
5483            request: impl tonic::IntoRequest<super::DeletePrivateCloudRequest>,
5484        ) -> std::result::Result<
5485            tonic::Response<super::super::super::super::longrunning::Operation>,
5486            tonic::Status,
5487        > {
5488            self.inner
5489                .ready()
5490                .await
5491                .map_err(|e| {
5492                    tonic::Status::unknown(
5493                        format!("Service was not ready: {}", e.into()),
5494                    )
5495                })?;
5496            let codec = tonic_prost::ProstCodec::default();
5497            let path = http::uri::PathAndQuery::from_static(
5498                "/google.cloud.vmwareengine.v1.VmwareEngine/DeletePrivateCloud",
5499            );
5500            let mut req = request.into_request();
5501            req.extensions_mut()
5502                .insert(
5503                    GrpcMethod::new(
5504                        "google.cloud.vmwareengine.v1.VmwareEngine",
5505                        "DeletePrivateCloud",
5506                    ),
5507                );
5508            self.inner.unary(req, path, codec).await
5509        }
5510        /// Restores a private cloud that was previously scheduled for deletion by
5511        /// `DeletePrivateCloud`. A `PrivateCloud` resource scheduled for deletion has
5512        /// `PrivateCloud.state` set to `DELETED` and `PrivateCloud.expireTime` set to
5513        /// the time when deletion can no longer be reversed.
5514        pub async fn undelete_private_cloud(
5515            &mut self,
5516            request: impl tonic::IntoRequest<super::UndeletePrivateCloudRequest>,
5517        ) -> std::result::Result<
5518            tonic::Response<super::super::super::super::longrunning::Operation>,
5519            tonic::Status,
5520        > {
5521            self.inner
5522                .ready()
5523                .await
5524                .map_err(|e| {
5525                    tonic::Status::unknown(
5526                        format!("Service was not ready: {}", e.into()),
5527                    )
5528                })?;
5529            let codec = tonic_prost::ProstCodec::default();
5530            let path = http::uri::PathAndQuery::from_static(
5531                "/google.cloud.vmwareengine.v1.VmwareEngine/UndeletePrivateCloud",
5532            );
5533            let mut req = request.into_request();
5534            req.extensions_mut()
5535                .insert(
5536                    GrpcMethod::new(
5537                        "google.cloud.vmwareengine.v1.VmwareEngine",
5538                        "UndeletePrivateCloud",
5539                    ),
5540                );
5541            self.inner.unary(req, path, codec).await
5542        }
5543        /// Lists `Cluster` resources in a given private cloud.
5544        pub async fn list_clusters(
5545            &mut self,
5546            request: impl tonic::IntoRequest<super::ListClustersRequest>,
5547        ) -> std::result::Result<
5548            tonic::Response<super::ListClustersResponse>,
5549            tonic::Status,
5550        > {
5551            self.inner
5552                .ready()
5553                .await
5554                .map_err(|e| {
5555                    tonic::Status::unknown(
5556                        format!("Service was not ready: {}", e.into()),
5557                    )
5558                })?;
5559            let codec = tonic_prost::ProstCodec::default();
5560            let path = http::uri::PathAndQuery::from_static(
5561                "/google.cloud.vmwareengine.v1.VmwareEngine/ListClusters",
5562            );
5563            let mut req = request.into_request();
5564            req.extensions_mut()
5565                .insert(
5566                    GrpcMethod::new(
5567                        "google.cloud.vmwareengine.v1.VmwareEngine",
5568                        "ListClusters",
5569                    ),
5570                );
5571            self.inner.unary(req, path, codec).await
5572        }
5573        /// Retrieves a `Cluster` resource by its resource name.
5574        pub async fn get_cluster(
5575            &mut self,
5576            request: impl tonic::IntoRequest<super::GetClusterRequest>,
5577        ) -> std::result::Result<tonic::Response<super::Cluster>, tonic::Status> {
5578            self.inner
5579                .ready()
5580                .await
5581                .map_err(|e| {
5582                    tonic::Status::unknown(
5583                        format!("Service was not ready: {}", e.into()),
5584                    )
5585                })?;
5586            let codec = tonic_prost::ProstCodec::default();
5587            let path = http::uri::PathAndQuery::from_static(
5588                "/google.cloud.vmwareengine.v1.VmwareEngine/GetCluster",
5589            );
5590            let mut req = request.into_request();
5591            req.extensions_mut()
5592                .insert(
5593                    GrpcMethod::new(
5594                        "google.cloud.vmwareengine.v1.VmwareEngine",
5595                        "GetCluster",
5596                    ),
5597                );
5598            self.inner.unary(req, path, codec).await
5599        }
5600        /// Creates a new cluster in a given private cloud.
5601        /// Creating a new cluster provides additional nodes for
5602        /// use in the parent private cloud and requires sufficient [node
5603        /// quota](https://cloud.google.com/vmware-engine/quotas).
5604        pub async fn create_cluster(
5605            &mut self,
5606            request: impl tonic::IntoRequest<super::CreateClusterRequest>,
5607        ) -> std::result::Result<
5608            tonic::Response<super::super::super::super::longrunning::Operation>,
5609            tonic::Status,
5610        > {
5611            self.inner
5612                .ready()
5613                .await
5614                .map_err(|e| {
5615                    tonic::Status::unknown(
5616                        format!("Service was not ready: {}", e.into()),
5617                    )
5618                })?;
5619            let codec = tonic_prost::ProstCodec::default();
5620            let path = http::uri::PathAndQuery::from_static(
5621                "/google.cloud.vmwareengine.v1.VmwareEngine/CreateCluster",
5622            );
5623            let mut req = request.into_request();
5624            req.extensions_mut()
5625                .insert(
5626                    GrpcMethod::new(
5627                        "google.cloud.vmwareengine.v1.VmwareEngine",
5628                        "CreateCluster",
5629                    ),
5630                );
5631            self.inner.unary(req, path, codec).await
5632        }
5633        /// Modifies a `Cluster` resource. Only fields specified in `updateMask` are
5634        /// applied.
5635        ///
5636        /// During operation processing, the resource is temporarily in the `ACTIVE`
5637        /// state before the operation fully completes. For that period of time, you
5638        /// can't update the resource. Use the operation status to determine when the
5639        /// processing fully completes.
5640        pub async fn update_cluster(
5641            &mut self,
5642            request: impl tonic::IntoRequest<super::UpdateClusterRequest>,
5643        ) -> std::result::Result<
5644            tonic::Response<super::super::super::super::longrunning::Operation>,
5645            tonic::Status,
5646        > {
5647            self.inner
5648                .ready()
5649                .await
5650                .map_err(|e| {
5651                    tonic::Status::unknown(
5652                        format!("Service was not ready: {}", e.into()),
5653                    )
5654                })?;
5655            let codec = tonic_prost::ProstCodec::default();
5656            let path = http::uri::PathAndQuery::from_static(
5657                "/google.cloud.vmwareengine.v1.VmwareEngine/UpdateCluster",
5658            );
5659            let mut req = request.into_request();
5660            req.extensions_mut()
5661                .insert(
5662                    GrpcMethod::new(
5663                        "google.cloud.vmwareengine.v1.VmwareEngine",
5664                        "UpdateCluster",
5665                    ),
5666                );
5667            self.inner.unary(req, path, codec).await
5668        }
5669        /// Deletes a `Cluster` resource. To avoid unintended data loss, migrate or
5670        /// gracefully shut down any workloads running on the cluster before deletion.
5671        /// You cannot delete the management cluster of a private cloud using this
5672        /// method.
5673        pub async fn delete_cluster(
5674            &mut self,
5675            request: impl tonic::IntoRequest<super::DeleteClusterRequest>,
5676        ) -> std::result::Result<
5677            tonic::Response<super::super::super::super::longrunning::Operation>,
5678            tonic::Status,
5679        > {
5680            self.inner
5681                .ready()
5682                .await
5683                .map_err(|e| {
5684                    tonic::Status::unknown(
5685                        format!("Service was not ready: {}", e.into()),
5686                    )
5687                })?;
5688            let codec = tonic_prost::ProstCodec::default();
5689            let path = http::uri::PathAndQuery::from_static(
5690                "/google.cloud.vmwareengine.v1.VmwareEngine/DeleteCluster",
5691            );
5692            let mut req = request.into_request();
5693            req.extensions_mut()
5694                .insert(
5695                    GrpcMethod::new(
5696                        "google.cloud.vmwareengine.v1.VmwareEngine",
5697                        "DeleteCluster",
5698                    ),
5699                );
5700            self.inner.unary(req, path, codec).await
5701        }
5702        /// Lists nodes in a given cluster.
5703        pub async fn list_nodes(
5704            &mut self,
5705            request: impl tonic::IntoRequest<super::ListNodesRequest>,
5706        ) -> std::result::Result<
5707            tonic::Response<super::ListNodesResponse>,
5708            tonic::Status,
5709        > {
5710            self.inner
5711                .ready()
5712                .await
5713                .map_err(|e| {
5714                    tonic::Status::unknown(
5715                        format!("Service was not ready: {}", e.into()),
5716                    )
5717                })?;
5718            let codec = tonic_prost::ProstCodec::default();
5719            let path = http::uri::PathAndQuery::from_static(
5720                "/google.cloud.vmwareengine.v1.VmwareEngine/ListNodes",
5721            );
5722            let mut req = request.into_request();
5723            req.extensions_mut()
5724                .insert(
5725                    GrpcMethod::new(
5726                        "google.cloud.vmwareengine.v1.VmwareEngine",
5727                        "ListNodes",
5728                    ),
5729                );
5730            self.inner.unary(req, path, codec).await
5731        }
5732        /// Gets details of a single node.
5733        pub async fn get_node(
5734            &mut self,
5735            request: impl tonic::IntoRequest<super::GetNodeRequest>,
5736        ) -> std::result::Result<tonic::Response<super::Node>, tonic::Status> {
5737            self.inner
5738                .ready()
5739                .await
5740                .map_err(|e| {
5741                    tonic::Status::unknown(
5742                        format!("Service was not ready: {}", e.into()),
5743                    )
5744                })?;
5745            let codec = tonic_prost::ProstCodec::default();
5746            let path = http::uri::PathAndQuery::from_static(
5747                "/google.cloud.vmwareengine.v1.VmwareEngine/GetNode",
5748            );
5749            let mut req = request.into_request();
5750            req.extensions_mut()
5751                .insert(
5752                    GrpcMethod::new(
5753                        "google.cloud.vmwareengine.v1.VmwareEngine",
5754                        "GetNode",
5755                    ),
5756                );
5757            self.inner.unary(req, path, codec).await
5758        }
5759        /// Lists external IP addresses assigned to VMware workload VMs in a given
5760        /// private cloud.
5761        pub async fn list_external_addresses(
5762            &mut self,
5763            request: impl tonic::IntoRequest<super::ListExternalAddressesRequest>,
5764        ) -> std::result::Result<
5765            tonic::Response<super::ListExternalAddressesResponse>,
5766            tonic::Status,
5767        > {
5768            self.inner
5769                .ready()
5770                .await
5771                .map_err(|e| {
5772                    tonic::Status::unknown(
5773                        format!("Service was not ready: {}", e.into()),
5774                    )
5775                })?;
5776            let codec = tonic_prost::ProstCodec::default();
5777            let path = http::uri::PathAndQuery::from_static(
5778                "/google.cloud.vmwareengine.v1.VmwareEngine/ListExternalAddresses",
5779            );
5780            let mut req = request.into_request();
5781            req.extensions_mut()
5782                .insert(
5783                    GrpcMethod::new(
5784                        "google.cloud.vmwareengine.v1.VmwareEngine",
5785                        "ListExternalAddresses",
5786                    ),
5787                );
5788            self.inner.unary(req, path, codec).await
5789        }
5790        /// Lists external IP addresses assigned to VMware workload VMs within the
5791        /// scope of the given network policy.
5792        pub async fn fetch_network_policy_external_addresses(
5793            &mut self,
5794            request: impl tonic::IntoRequest<
5795                super::FetchNetworkPolicyExternalAddressesRequest,
5796            >,
5797        ) -> std::result::Result<
5798            tonic::Response<super::FetchNetworkPolicyExternalAddressesResponse>,
5799            tonic::Status,
5800        > {
5801            self.inner
5802                .ready()
5803                .await
5804                .map_err(|e| {
5805                    tonic::Status::unknown(
5806                        format!("Service was not ready: {}", e.into()),
5807                    )
5808                })?;
5809            let codec = tonic_prost::ProstCodec::default();
5810            let path = http::uri::PathAndQuery::from_static(
5811                "/google.cloud.vmwareengine.v1.VmwareEngine/FetchNetworkPolicyExternalAddresses",
5812            );
5813            let mut req = request.into_request();
5814            req.extensions_mut()
5815                .insert(
5816                    GrpcMethod::new(
5817                        "google.cloud.vmwareengine.v1.VmwareEngine",
5818                        "FetchNetworkPolicyExternalAddresses",
5819                    ),
5820                );
5821            self.inner.unary(req, path, codec).await
5822        }
5823        /// Gets details of a single external IP address.
5824        pub async fn get_external_address(
5825            &mut self,
5826            request: impl tonic::IntoRequest<super::GetExternalAddressRequest>,
5827        ) -> std::result::Result<
5828            tonic::Response<super::ExternalAddress>,
5829            tonic::Status,
5830        > {
5831            self.inner
5832                .ready()
5833                .await
5834                .map_err(|e| {
5835                    tonic::Status::unknown(
5836                        format!("Service was not ready: {}", e.into()),
5837                    )
5838                })?;
5839            let codec = tonic_prost::ProstCodec::default();
5840            let path = http::uri::PathAndQuery::from_static(
5841                "/google.cloud.vmwareengine.v1.VmwareEngine/GetExternalAddress",
5842            );
5843            let mut req = request.into_request();
5844            req.extensions_mut()
5845                .insert(
5846                    GrpcMethod::new(
5847                        "google.cloud.vmwareengine.v1.VmwareEngine",
5848                        "GetExternalAddress",
5849                    ),
5850                );
5851            self.inner.unary(req, path, codec).await
5852        }
5853        /// Creates a new `ExternalAddress` resource in a given private cloud. The
5854        /// network policy that corresponds to the private cloud must have the external
5855        /// IP address network service enabled (`NetworkPolicy.external_ip`).
5856        pub async fn create_external_address(
5857            &mut self,
5858            request: impl tonic::IntoRequest<super::CreateExternalAddressRequest>,
5859        ) -> std::result::Result<
5860            tonic::Response<super::super::super::super::longrunning::Operation>,
5861            tonic::Status,
5862        > {
5863            self.inner
5864                .ready()
5865                .await
5866                .map_err(|e| {
5867                    tonic::Status::unknown(
5868                        format!("Service was not ready: {}", e.into()),
5869                    )
5870                })?;
5871            let codec = tonic_prost::ProstCodec::default();
5872            let path = http::uri::PathAndQuery::from_static(
5873                "/google.cloud.vmwareengine.v1.VmwareEngine/CreateExternalAddress",
5874            );
5875            let mut req = request.into_request();
5876            req.extensions_mut()
5877                .insert(
5878                    GrpcMethod::new(
5879                        "google.cloud.vmwareengine.v1.VmwareEngine",
5880                        "CreateExternalAddress",
5881                    ),
5882                );
5883            self.inner.unary(req, path, codec).await
5884        }
5885        /// Updates the parameters of a single external IP address.
5886        /// Only fields specified in `update_mask` are applied.
5887        ///
5888        /// During operation processing, the resource is temporarily in the `ACTIVE`
5889        /// state before the operation fully completes. For that period of time, you
5890        /// can't update the resource. Use the operation status to determine when the
5891        /// processing fully completes.
5892        pub async fn update_external_address(
5893            &mut self,
5894            request: impl tonic::IntoRequest<super::UpdateExternalAddressRequest>,
5895        ) -> std::result::Result<
5896            tonic::Response<super::super::super::super::longrunning::Operation>,
5897            tonic::Status,
5898        > {
5899            self.inner
5900                .ready()
5901                .await
5902                .map_err(|e| {
5903                    tonic::Status::unknown(
5904                        format!("Service was not ready: {}", e.into()),
5905                    )
5906                })?;
5907            let codec = tonic_prost::ProstCodec::default();
5908            let path = http::uri::PathAndQuery::from_static(
5909                "/google.cloud.vmwareengine.v1.VmwareEngine/UpdateExternalAddress",
5910            );
5911            let mut req = request.into_request();
5912            req.extensions_mut()
5913                .insert(
5914                    GrpcMethod::new(
5915                        "google.cloud.vmwareengine.v1.VmwareEngine",
5916                        "UpdateExternalAddress",
5917                    ),
5918                );
5919            self.inner.unary(req, path, codec).await
5920        }
5921        /// Deletes a single external IP address. When you delete an external IP
5922        /// address, connectivity between the external IP address and the corresponding
5923        /// internal IP address is lost.
5924        pub async fn delete_external_address(
5925            &mut self,
5926            request: impl tonic::IntoRequest<super::DeleteExternalAddressRequest>,
5927        ) -> std::result::Result<
5928            tonic::Response<super::super::super::super::longrunning::Operation>,
5929            tonic::Status,
5930        > {
5931            self.inner
5932                .ready()
5933                .await
5934                .map_err(|e| {
5935                    tonic::Status::unknown(
5936                        format!("Service was not ready: {}", e.into()),
5937                    )
5938                })?;
5939            let codec = tonic_prost::ProstCodec::default();
5940            let path = http::uri::PathAndQuery::from_static(
5941                "/google.cloud.vmwareengine.v1.VmwareEngine/DeleteExternalAddress",
5942            );
5943            let mut req = request.into_request();
5944            req.extensions_mut()
5945                .insert(
5946                    GrpcMethod::new(
5947                        "google.cloud.vmwareengine.v1.VmwareEngine",
5948                        "DeleteExternalAddress",
5949                    ),
5950                );
5951            self.inner.unary(req, path, codec).await
5952        }
5953        /// Lists subnets in a given private cloud.
5954        pub async fn list_subnets(
5955            &mut self,
5956            request: impl tonic::IntoRequest<super::ListSubnetsRequest>,
5957        ) -> std::result::Result<
5958            tonic::Response<super::ListSubnetsResponse>,
5959            tonic::Status,
5960        > {
5961            self.inner
5962                .ready()
5963                .await
5964                .map_err(|e| {
5965                    tonic::Status::unknown(
5966                        format!("Service was not ready: {}", e.into()),
5967                    )
5968                })?;
5969            let codec = tonic_prost::ProstCodec::default();
5970            let path = http::uri::PathAndQuery::from_static(
5971                "/google.cloud.vmwareengine.v1.VmwareEngine/ListSubnets",
5972            );
5973            let mut req = request.into_request();
5974            req.extensions_mut()
5975                .insert(
5976                    GrpcMethod::new(
5977                        "google.cloud.vmwareengine.v1.VmwareEngine",
5978                        "ListSubnets",
5979                    ),
5980                );
5981            self.inner.unary(req, path, codec).await
5982        }
5983        /// Gets details of a single subnet.
5984        pub async fn get_subnet(
5985            &mut self,
5986            request: impl tonic::IntoRequest<super::GetSubnetRequest>,
5987        ) -> std::result::Result<tonic::Response<super::Subnet>, tonic::Status> {
5988            self.inner
5989                .ready()
5990                .await
5991                .map_err(|e| {
5992                    tonic::Status::unknown(
5993                        format!("Service was not ready: {}", e.into()),
5994                    )
5995                })?;
5996            let codec = tonic_prost::ProstCodec::default();
5997            let path = http::uri::PathAndQuery::from_static(
5998                "/google.cloud.vmwareengine.v1.VmwareEngine/GetSubnet",
5999            );
6000            let mut req = request.into_request();
6001            req.extensions_mut()
6002                .insert(
6003                    GrpcMethod::new(
6004                        "google.cloud.vmwareengine.v1.VmwareEngine",
6005                        "GetSubnet",
6006                    ),
6007                );
6008            self.inner.unary(req, path, codec).await
6009        }
6010        /// Updates the parameters of a single subnet. Only fields specified in
6011        /// `update_mask` are applied.
6012        ///
6013        /// *Note*: This API is synchronous and always returns a successful
6014        /// `google.longrunning.Operation` (LRO). The returned LRO will only have
6015        /// `done` and `response` fields.
6016        pub async fn update_subnet(
6017            &mut self,
6018            request: impl tonic::IntoRequest<super::UpdateSubnetRequest>,
6019        ) -> std::result::Result<
6020            tonic::Response<super::super::super::super::longrunning::Operation>,
6021            tonic::Status,
6022        > {
6023            self.inner
6024                .ready()
6025                .await
6026                .map_err(|e| {
6027                    tonic::Status::unknown(
6028                        format!("Service was not ready: {}", e.into()),
6029                    )
6030                })?;
6031            let codec = tonic_prost::ProstCodec::default();
6032            let path = http::uri::PathAndQuery::from_static(
6033                "/google.cloud.vmwareengine.v1.VmwareEngine/UpdateSubnet",
6034            );
6035            let mut req = request.into_request();
6036            req.extensions_mut()
6037                .insert(
6038                    GrpcMethod::new(
6039                        "google.cloud.vmwareengine.v1.VmwareEngine",
6040                        "UpdateSubnet",
6041                    ),
6042                );
6043            self.inner.unary(req, path, codec).await
6044        }
6045        /// Lists `ExternalAccessRule` resources in the specified network policy.
6046        pub async fn list_external_access_rules(
6047            &mut self,
6048            request: impl tonic::IntoRequest<super::ListExternalAccessRulesRequest>,
6049        ) -> std::result::Result<
6050            tonic::Response<super::ListExternalAccessRulesResponse>,
6051            tonic::Status,
6052        > {
6053            self.inner
6054                .ready()
6055                .await
6056                .map_err(|e| {
6057                    tonic::Status::unknown(
6058                        format!("Service was not ready: {}", e.into()),
6059                    )
6060                })?;
6061            let codec = tonic_prost::ProstCodec::default();
6062            let path = http::uri::PathAndQuery::from_static(
6063                "/google.cloud.vmwareengine.v1.VmwareEngine/ListExternalAccessRules",
6064            );
6065            let mut req = request.into_request();
6066            req.extensions_mut()
6067                .insert(
6068                    GrpcMethod::new(
6069                        "google.cloud.vmwareengine.v1.VmwareEngine",
6070                        "ListExternalAccessRules",
6071                    ),
6072                );
6073            self.inner.unary(req, path, codec).await
6074        }
6075        /// Gets details of a single external access rule.
6076        pub async fn get_external_access_rule(
6077            &mut self,
6078            request: impl tonic::IntoRequest<super::GetExternalAccessRuleRequest>,
6079        ) -> std::result::Result<
6080            tonic::Response<super::ExternalAccessRule>,
6081            tonic::Status,
6082        > {
6083            self.inner
6084                .ready()
6085                .await
6086                .map_err(|e| {
6087                    tonic::Status::unknown(
6088                        format!("Service was not ready: {}", e.into()),
6089                    )
6090                })?;
6091            let codec = tonic_prost::ProstCodec::default();
6092            let path = http::uri::PathAndQuery::from_static(
6093                "/google.cloud.vmwareengine.v1.VmwareEngine/GetExternalAccessRule",
6094            );
6095            let mut req = request.into_request();
6096            req.extensions_mut()
6097                .insert(
6098                    GrpcMethod::new(
6099                        "google.cloud.vmwareengine.v1.VmwareEngine",
6100                        "GetExternalAccessRule",
6101                    ),
6102                );
6103            self.inner.unary(req, path, codec).await
6104        }
6105        /// Creates a new external access rule in a given network policy.
6106        pub async fn create_external_access_rule(
6107            &mut self,
6108            request: impl tonic::IntoRequest<super::CreateExternalAccessRuleRequest>,
6109        ) -> std::result::Result<
6110            tonic::Response<super::super::super::super::longrunning::Operation>,
6111            tonic::Status,
6112        > {
6113            self.inner
6114                .ready()
6115                .await
6116                .map_err(|e| {
6117                    tonic::Status::unknown(
6118                        format!("Service was not ready: {}", e.into()),
6119                    )
6120                })?;
6121            let codec = tonic_prost::ProstCodec::default();
6122            let path = http::uri::PathAndQuery::from_static(
6123                "/google.cloud.vmwareengine.v1.VmwareEngine/CreateExternalAccessRule",
6124            );
6125            let mut req = request.into_request();
6126            req.extensions_mut()
6127                .insert(
6128                    GrpcMethod::new(
6129                        "google.cloud.vmwareengine.v1.VmwareEngine",
6130                        "CreateExternalAccessRule",
6131                    ),
6132                );
6133            self.inner.unary(req, path, codec).await
6134        }
6135        /// Updates the parameters of a single external access rule.
6136        /// Only fields specified in `update_mask` are applied.
6137        pub async fn update_external_access_rule(
6138            &mut self,
6139            request: impl tonic::IntoRequest<super::UpdateExternalAccessRuleRequest>,
6140        ) -> std::result::Result<
6141            tonic::Response<super::super::super::super::longrunning::Operation>,
6142            tonic::Status,
6143        > {
6144            self.inner
6145                .ready()
6146                .await
6147                .map_err(|e| {
6148                    tonic::Status::unknown(
6149                        format!("Service was not ready: {}", e.into()),
6150                    )
6151                })?;
6152            let codec = tonic_prost::ProstCodec::default();
6153            let path = http::uri::PathAndQuery::from_static(
6154                "/google.cloud.vmwareengine.v1.VmwareEngine/UpdateExternalAccessRule",
6155            );
6156            let mut req = request.into_request();
6157            req.extensions_mut()
6158                .insert(
6159                    GrpcMethod::new(
6160                        "google.cloud.vmwareengine.v1.VmwareEngine",
6161                        "UpdateExternalAccessRule",
6162                    ),
6163                );
6164            self.inner.unary(req, path, codec).await
6165        }
6166        /// Deletes a single external access rule.
6167        pub async fn delete_external_access_rule(
6168            &mut self,
6169            request: impl tonic::IntoRequest<super::DeleteExternalAccessRuleRequest>,
6170        ) -> std::result::Result<
6171            tonic::Response<super::super::super::super::longrunning::Operation>,
6172            tonic::Status,
6173        > {
6174            self.inner
6175                .ready()
6176                .await
6177                .map_err(|e| {
6178                    tonic::Status::unknown(
6179                        format!("Service was not ready: {}", e.into()),
6180                    )
6181                })?;
6182            let codec = tonic_prost::ProstCodec::default();
6183            let path = http::uri::PathAndQuery::from_static(
6184                "/google.cloud.vmwareengine.v1.VmwareEngine/DeleteExternalAccessRule",
6185            );
6186            let mut req = request.into_request();
6187            req.extensions_mut()
6188                .insert(
6189                    GrpcMethod::new(
6190                        "google.cloud.vmwareengine.v1.VmwareEngine",
6191                        "DeleteExternalAccessRule",
6192                    ),
6193                );
6194            self.inner.unary(req, path, codec).await
6195        }
6196        /// Lists logging servers configured for a given private
6197        /// cloud.
6198        pub async fn list_logging_servers(
6199            &mut self,
6200            request: impl tonic::IntoRequest<super::ListLoggingServersRequest>,
6201        ) -> std::result::Result<
6202            tonic::Response<super::ListLoggingServersResponse>,
6203            tonic::Status,
6204        > {
6205            self.inner
6206                .ready()
6207                .await
6208                .map_err(|e| {
6209                    tonic::Status::unknown(
6210                        format!("Service was not ready: {}", e.into()),
6211                    )
6212                })?;
6213            let codec = tonic_prost::ProstCodec::default();
6214            let path = http::uri::PathAndQuery::from_static(
6215                "/google.cloud.vmwareengine.v1.VmwareEngine/ListLoggingServers",
6216            );
6217            let mut req = request.into_request();
6218            req.extensions_mut()
6219                .insert(
6220                    GrpcMethod::new(
6221                        "google.cloud.vmwareengine.v1.VmwareEngine",
6222                        "ListLoggingServers",
6223                    ),
6224                );
6225            self.inner.unary(req, path, codec).await
6226        }
6227        /// Gets details of a logging server.
6228        pub async fn get_logging_server(
6229            &mut self,
6230            request: impl tonic::IntoRequest<super::GetLoggingServerRequest>,
6231        ) -> std::result::Result<tonic::Response<super::LoggingServer>, tonic::Status> {
6232            self.inner
6233                .ready()
6234                .await
6235                .map_err(|e| {
6236                    tonic::Status::unknown(
6237                        format!("Service was not ready: {}", e.into()),
6238                    )
6239                })?;
6240            let codec = tonic_prost::ProstCodec::default();
6241            let path = http::uri::PathAndQuery::from_static(
6242                "/google.cloud.vmwareengine.v1.VmwareEngine/GetLoggingServer",
6243            );
6244            let mut req = request.into_request();
6245            req.extensions_mut()
6246                .insert(
6247                    GrpcMethod::new(
6248                        "google.cloud.vmwareengine.v1.VmwareEngine",
6249                        "GetLoggingServer",
6250                    ),
6251                );
6252            self.inner.unary(req, path, codec).await
6253        }
6254        /// Create a new logging server for a given private cloud.
6255        pub async fn create_logging_server(
6256            &mut self,
6257            request: impl tonic::IntoRequest<super::CreateLoggingServerRequest>,
6258        ) -> std::result::Result<
6259            tonic::Response<super::super::super::super::longrunning::Operation>,
6260            tonic::Status,
6261        > {
6262            self.inner
6263                .ready()
6264                .await
6265                .map_err(|e| {
6266                    tonic::Status::unknown(
6267                        format!("Service was not ready: {}", e.into()),
6268                    )
6269                })?;
6270            let codec = tonic_prost::ProstCodec::default();
6271            let path = http::uri::PathAndQuery::from_static(
6272                "/google.cloud.vmwareengine.v1.VmwareEngine/CreateLoggingServer",
6273            );
6274            let mut req = request.into_request();
6275            req.extensions_mut()
6276                .insert(
6277                    GrpcMethod::new(
6278                        "google.cloud.vmwareengine.v1.VmwareEngine",
6279                        "CreateLoggingServer",
6280                    ),
6281                );
6282            self.inner.unary(req, path, codec).await
6283        }
6284        /// Updates the parameters of a single logging server.
6285        /// Only fields specified in `update_mask` are applied.
6286        pub async fn update_logging_server(
6287            &mut self,
6288            request: impl tonic::IntoRequest<super::UpdateLoggingServerRequest>,
6289        ) -> std::result::Result<
6290            tonic::Response<super::super::super::super::longrunning::Operation>,
6291            tonic::Status,
6292        > {
6293            self.inner
6294                .ready()
6295                .await
6296                .map_err(|e| {
6297                    tonic::Status::unknown(
6298                        format!("Service was not ready: {}", e.into()),
6299                    )
6300                })?;
6301            let codec = tonic_prost::ProstCodec::default();
6302            let path = http::uri::PathAndQuery::from_static(
6303                "/google.cloud.vmwareengine.v1.VmwareEngine/UpdateLoggingServer",
6304            );
6305            let mut req = request.into_request();
6306            req.extensions_mut()
6307                .insert(
6308                    GrpcMethod::new(
6309                        "google.cloud.vmwareengine.v1.VmwareEngine",
6310                        "UpdateLoggingServer",
6311                    ),
6312                );
6313            self.inner.unary(req, path, codec).await
6314        }
6315        /// Deletes a single logging server.
6316        pub async fn delete_logging_server(
6317            &mut self,
6318            request: impl tonic::IntoRequest<super::DeleteLoggingServerRequest>,
6319        ) -> std::result::Result<
6320            tonic::Response<super::super::super::super::longrunning::Operation>,
6321            tonic::Status,
6322        > {
6323            self.inner
6324                .ready()
6325                .await
6326                .map_err(|e| {
6327                    tonic::Status::unknown(
6328                        format!("Service was not ready: {}", e.into()),
6329                    )
6330                })?;
6331            let codec = tonic_prost::ProstCodec::default();
6332            let path = http::uri::PathAndQuery::from_static(
6333                "/google.cloud.vmwareengine.v1.VmwareEngine/DeleteLoggingServer",
6334            );
6335            let mut req = request.into_request();
6336            req.extensions_mut()
6337                .insert(
6338                    GrpcMethod::new(
6339                        "google.cloud.vmwareengine.v1.VmwareEngine",
6340                        "DeleteLoggingServer",
6341                    ),
6342                );
6343            self.inner.unary(req, path, codec).await
6344        }
6345        /// Lists node types
6346        pub async fn list_node_types(
6347            &mut self,
6348            request: impl tonic::IntoRequest<super::ListNodeTypesRequest>,
6349        ) -> std::result::Result<
6350            tonic::Response<super::ListNodeTypesResponse>,
6351            tonic::Status,
6352        > {
6353            self.inner
6354                .ready()
6355                .await
6356                .map_err(|e| {
6357                    tonic::Status::unknown(
6358                        format!("Service was not ready: {}", e.into()),
6359                    )
6360                })?;
6361            let codec = tonic_prost::ProstCodec::default();
6362            let path = http::uri::PathAndQuery::from_static(
6363                "/google.cloud.vmwareengine.v1.VmwareEngine/ListNodeTypes",
6364            );
6365            let mut req = request.into_request();
6366            req.extensions_mut()
6367                .insert(
6368                    GrpcMethod::new(
6369                        "google.cloud.vmwareengine.v1.VmwareEngine",
6370                        "ListNodeTypes",
6371                    ),
6372                );
6373            self.inner.unary(req, path, codec).await
6374        }
6375        /// Gets details of a single `NodeType`.
6376        pub async fn get_node_type(
6377            &mut self,
6378            request: impl tonic::IntoRequest<super::GetNodeTypeRequest>,
6379        ) -> std::result::Result<tonic::Response<super::NodeType>, tonic::Status> {
6380            self.inner
6381                .ready()
6382                .await
6383                .map_err(|e| {
6384                    tonic::Status::unknown(
6385                        format!("Service was not ready: {}", e.into()),
6386                    )
6387                })?;
6388            let codec = tonic_prost::ProstCodec::default();
6389            let path = http::uri::PathAndQuery::from_static(
6390                "/google.cloud.vmwareengine.v1.VmwareEngine/GetNodeType",
6391            );
6392            let mut req = request.into_request();
6393            req.extensions_mut()
6394                .insert(
6395                    GrpcMethod::new(
6396                        "google.cloud.vmwareengine.v1.VmwareEngine",
6397                        "GetNodeType",
6398                    ),
6399                );
6400            self.inner.unary(req, path, codec).await
6401        }
6402        /// Gets details of credentials for NSX appliance.
6403        pub async fn show_nsx_credentials(
6404            &mut self,
6405            request: impl tonic::IntoRequest<super::ShowNsxCredentialsRequest>,
6406        ) -> std::result::Result<tonic::Response<super::Credentials>, tonic::Status> {
6407            self.inner
6408                .ready()
6409                .await
6410                .map_err(|e| {
6411                    tonic::Status::unknown(
6412                        format!("Service was not ready: {}", e.into()),
6413                    )
6414                })?;
6415            let codec = tonic_prost::ProstCodec::default();
6416            let path = http::uri::PathAndQuery::from_static(
6417                "/google.cloud.vmwareengine.v1.VmwareEngine/ShowNsxCredentials",
6418            );
6419            let mut req = request.into_request();
6420            req.extensions_mut()
6421                .insert(
6422                    GrpcMethod::new(
6423                        "google.cloud.vmwareengine.v1.VmwareEngine",
6424                        "ShowNsxCredentials",
6425                    ),
6426                );
6427            self.inner.unary(req, path, codec).await
6428        }
6429        /// Gets details of credentials for Vcenter appliance.
6430        pub async fn show_vcenter_credentials(
6431            &mut self,
6432            request: impl tonic::IntoRequest<super::ShowVcenterCredentialsRequest>,
6433        ) -> std::result::Result<tonic::Response<super::Credentials>, tonic::Status> {
6434            self.inner
6435                .ready()
6436                .await
6437                .map_err(|e| {
6438                    tonic::Status::unknown(
6439                        format!("Service was not ready: {}", e.into()),
6440                    )
6441                })?;
6442            let codec = tonic_prost::ProstCodec::default();
6443            let path = http::uri::PathAndQuery::from_static(
6444                "/google.cloud.vmwareengine.v1.VmwareEngine/ShowVcenterCredentials",
6445            );
6446            let mut req = request.into_request();
6447            req.extensions_mut()
6448                .insert(
6449                    GrpcMethod::new(
6450                        "google.cloud.vmwareengine.v1.VmwareEngine",
6451                        "ShowVcenterCredentials",
6452                    ),
6453                );
6454            self.inner.unary(req, path, codec).await
6455        }
6456        /// Resets credentials of the NSX appliance.
6457        pub async fn reset_nsx_credentials(
6458            &mut self,
6459            request: impl tonic::IntoRequest<super::ResetNsxCredentialsRequest>,
6460        ) -> std::result::Result<
6461            tonic::Response<super::super::super::super::longrunning::Operation>,
6462            tonic::Status,
6463        > {
6464            self.inner
6465                .ready()
6466                .await
6467                .map_err(|e| {
6468                    tonic::Status::unknown(
6469                        format!("Service was not ready: {}", e.into()),
6470                    )
6471                })?;
6472            let codec = tonic_prost::ProstCodec::default();
6473            let path = http::uri::PathAndQuery::from_static(
6474                "/google.cloud.vmwareengine.v1.VmwareEngine/ResetNsxCredentials",
6475            );
6476            let mut req = request.into_request();
6477            req.extensions_mut()
6478                .insert(
6479                    GrpcMethod::new(
6480                        "google.cloud.vmwareengine.v1.VmwareEngine",
6481                        "ResetNsxCredentials",
6482                    ),
6483                );
6484            self.inner.unary(req, path, codec).await
6485        }
6486        /// Resets credentials of the Vcenter appliance.
6487        pub async fn reset_vcenter_credentials(
6488            &mut self,
6489            request: impl tonic::IntoRequest<super::ResetVcenterCredentialsRequest>,
6490        ) -> std::result::Result<
6491            tonic::Response<super::super::super::super::longrunning::Operation>,
6492            tonic::Status,
6493        > {
6494            self.inner
6495                .ready()
6496                .await
6497                .map_err(|e| {
6498                    tonic::Status::unknown(
6499                        format!("Service was not ready: {}", e.into()),
6500                    )
6501                })?;
6502            let codec = tonic_prost::ProstCodec::default();
6503            let path = http::uri::PathAndQuery::from_static(
6504                "/google.cloud.vmwareengine.v1.VmwareEngine/ResetVcenterCredentials",
6505            );
6506            let mut req = request.into_request();
6507            req.extensions_mut()
6508                .insert(
6509                    GrpcMethod::new(
6510                        "google.cloud.vmwareengine.v1.VmwareEngine",
6511                        "ResetVcenterCredentials",
6512                    ),
6513                );
6514            self.inner.unary(req, path, codec).await
6515        }
6516        /// Gets details of the `DnsForwarding` config.
6517        pub async fn get_dns_forwarding(
6518            &mut self,
6519            request: impl tonic::IntoRequest<super::GetDnsForwardingRequest>,
6520        ) -> std::result::Result<tonic::Response<super::DnsForwarding>, tonic::Status> {
6521            self.inner
6522                .ready()
6523                .await
6524                .map_err(|e| {
6525                    tonic::Status::unknown(
6526                        format!("Service was not ready: {}", e.into()),
6527                    )
6528                })?;
6529            let codec = tonic_prost::ProstCodec::default();
6530            let path = http::uri::PathAndQuery::from_static(
6531                "/google.cloud.vmwareengine.v1.VmwareEngine/GetDnsForwarding",
6532            );
6533            let mut req = request.into_request();
6534            req.extensions_mut()
6535                .insert(
6536                    GrpcMethod::new(
6537                        "google.cloud.vmwareengine.v1.VmwareEngine",
6538                        "GetDnsForwarding",
6539                    ),
6540                );
6541            self.inner.unary(req, path, codec).await
6542        }
6543        /// Updates the parameters of the `DnsForwarding` config, like associated
6544        /// domains. Only fields specified in `update_mask` are applied.
6545        pub async fn update_dns_forwarding(
6546            &mut self,
6547            request: impl tonic::IntoRequest<super::UpdateDnsForwardingRequest>,
6548        ) -> std::result::Result<
6549            tonic::Response<super::super::super::super::longrunning::Operation>,
6550            tonic::Status,
6551        > {
6552            self.inner
6553                .ready()
6554                .await
6555                .map_err(|e| {
6556                    tonic::Status::unknown(
6557                        format!("Service was not ready: {}", e.into()),
6558                    )
6559                })?;
6560            let codec = tonic_prost::ProstCodec::default();
6561            let path = http::uri::PathAndQuery::from_static(
6562                "/google.cloud.vmwareengine.v1.VmwareEngine/UpdateDnsForwarding",
6563            );
6564            let mut req = request.into_request();
6565            req.extensions_mut()
6566                .insert(
6567                    GrpcMethod::new(
6568                        "google.cloud.vmwareengine.v1.VmwareEngine",
6569                        "UpdateDnsForwarding",
6570                    ),
6571                );
6572            self.inner.unary(req, path, codec).await
6573        }
6574        /// Retrieves a `NetworkPeering` resource by its resource name. The resource
6575        /// contains details of the network peering, such as peered
6576        /// networks, import and export custom route configurations, and peering state.
6577        /// NetworkPeering is a global resource and location can only be global.
6578        pub async fn get_network_peering(
6579            &mut self,
6580            request: impl tonic::IntoRequest<super::GetNetworkPeeringRequest>,
6581        ) -> std::result::Result<tonic::Response<super::NetworkPeering>, tonic::Status> {
6582            self.inner
6583                .ready()
6584                .await
6585                .map_err(|e| {
6586                    tonic::Status::unknown(
6587                        format!("Service was not ready: {}", e.into()),
6588                    )
6589                })?;
6590            let codec = tonic_prost::ProstCodec::default();
6591            let path = http::uri::PathAndQuery::from_static(
6592                "/google.cloud.vmwareengine.v1.VmwareEngine/GetNetworkPeering",
6593            );
6594            let mut req = request.into_request();
6595            req.extensions_mut()
6596                .insert(
6597                    GrpcMethod::new(
6598                        "google.cloud.vmwareengine.v1.VmwareEngine",
6599                        "GetNetworkPeering",
6600                    ),
6601                );
6602            self.inner.unary(req, path, codec).await
6603        }
6604        /// Lists `NetworkPeering` resources in a given project. NetworkPeering is a
6605        /// global resource and location can only be global.
6606        pub async fn list_network_peerings(
6607            &mut self,
6608            request: impl tonic::IntoRequest<super::ListNetworkPeeringsRequest>,
6609        ) -> std::result::Result<
6610            tonic::Response<super::ListNetworkPeeringsResponse>,
6611            tonic::Status,
6612        > {
6613            self.inner
6614                .ready()
6615                .await
6616                .map_err(|e| {
6617                    tonic::Status::unknown(
6618                        format!("Service was not ready: {}", e.into()),
6619                    )
6620                })?;
6621            let codec = tonic_prost::ProstCodec::default();
6622            let path = http::uri::PathAndQuery::from_static(
6623                "/google.cloud.vmwareengine.v1.VmwareEngine/ListNetworkPeerings",
6624            );
6625            let mut req = request.into_request();
6626            req.extensions_mut()
6627                .insert(
6628                    GrpcMethod::new(
6629                        "google.cloud.vmwareengine.v1.VmwareEngine",
6630                        "ListNetworkPeerings",
6631                    ),
6632                );
6633            self.inner.unary(req, path, codec).await
6634        }
6635        /// Creates a new network peering between the peer network and VMware Engine
6636        /// network provided in a `NetworkPeering` resource. NetworkPeering is a
6637        /// global resource and location can only be global.
6638        pub async fn create_network_peering(
6639            &mut self,
6640            request: impl tonic::IntoRequest<super::CreateNetworkPeeringRequest>,
6641        ) -> std::result::Result<
6642            tonic::Response<super::super::super::super::longrunning::Operation>,
6643            tonic::Status,
6644        > {
6645            self.inner
6646                .ready()
6647                .await
6648                .map_err(|e| {
6649                    tonic::Status::unknown(
6650                        format!("Service was not ready: {}", e.into()),
6651                    )
6652                })?;
6653            let codec = tonic_prost::ProstCodec::default();
6654            let path = http::uri::PathAndQuery::from_static(
6655                "/google.cloud.vmwareengine.v1.VmwareEngine/CreateNetworkPeering",
6656            );
6657            let mut req = request.into_request();
6658            req.extensions_mut()
6659                .insert(
6660                    GrpcMethod::new(
6661                        "google.cloud.vmwareengine.v1.VmwareEngine",
6662                        "CreateNetworkPeering",
6663                    ),
6664                );
6665            self.inner.unary(req, path, codec).await
6666        }
6667        /// Deletes a `NetworkPeering` resource. When a network peering is deleted for
6668        /// a VMware Engine network, the peer network becomes inaccessible to that
6669        /// VMware Engine network. NetworkPeering is a global resource and location can
6670        /// only be global.
6671        pub async fn delete_network_peering(
6672            &mut self,
6673            request: impl tonic::IntoRequest<super::DeleteNetworkPeeringRequest>,
6674        ) -> std::result::Result<
6675            tonic::Response<super::super::super::super::longrunning::Operation>,
6676            tonic::Status,
6677        > {
6678            self.inner
6679                .ready()
6680                .await
6681                .map_err(|e| {
6682                    tonic::Status::unknown(
6683                        format!("Service was not ready: {}", e.into()),
6684                    )
6685                })?;
6686            let codec = tonic_prost::ProstCodec::default();
6687            let path = http::uri::PathAndQuery::from_static(
6688                "/google.cloud.vmwareengine.v1.VmwareEngine/DeleteNetworkPeering",
6689            );
6690            let mut req = request.into_request();
6691            req.extensions_mut()
6692                .insert(
6693                    GrpcMethod::new(
6694                        "google.cloud.vmwareengine.v1.VmwareEngine",
6695                        "DeleteNetworkPeering",
6696                    ),
6697                );
6698            self.inner.unary(req, path, codec).await
6699        }
6700        /// Modifies a `NetworkPeering` resource. Only the `description` field can be
6701        /// updated. Only fields specified in `updateMask` are applied. NetworkPeering
6702        /// is a global resource and location can only be global.
6703        pub async fn update_network_peering(
6704            &mut self,
6705            request: impl tonic::IntoRequest<super::UpdateNetworkPeeringRequest>,
6706        ) -> std::result::Result<
6707            tonic::Response<super::super::super::super::longrunning::Operation>,
6708            tonic::Status,
6709        > {
6710            self.inner
6711                .ready()
6712                .await
6713                .map_err(|e| {
6714                    tonic::Status::unknown(
6715                        format!("Service was not ready: {}", e.into()),
6716                    )
6717                })?;
6718            let codec = tonic_prost::ProstCodec::default();
6719            let path = http::uri::PathAndQuery::from_static(
6720                "/google.cloud.vmwareengine.v1.VmwareEngine/UpdateNetworkPeering",
6721            );
6722            let mut req = request.into_request();
6723            req.extensions_mut()
6724                .insert(
6725                    GrpcMethod::new(
6726                        "google.cloud.vmwareengine.v1.VmwareEngine",
6727                        "UpdateNetworkPeering",
6728                    ),
6729                );
6730            self.inner.unary(req, path, codec).await
6731        }
6732        /// Lists the network peering routes exchanged over a peering connection.
6733        /// NetworkPeering is a global resource and location can only be global.
6734        pub async fn list_peering_routes(
6735            &mut self,
6736            request: impl tonic::IntoRequest<super::ListPeeringRoutesRequest>,
6737        ) -> std::result::Result<
6738            tonic::Response<super::ListPeeringRoutesResponse>,
6739            tonic::Status,
6740        > {
6741            self.inner
6742                .ready()
6743                .await
6744                .map_err(|e| {
6745                    tonic::Status::unknown(
6746                        format!("Service was not ready: {}", e.into()),
6747                    )
6748                })?;
6749            let codec = tonic_prost::ProstCodec::default();
6750            let path = http::uri::PathAndQuery::from_static(
6751                "/google.cloud.vmwareengine.v1.VmwareEngine/ListPeeringRoutes",
6752            );
6753            let mut req = request.into_request();
6754            req.extensions_mut()
6755                .insert(
6756                    GrpcMethod::new(
6757                        "google.cloud.vmwareengine.v1.VmwareEngine",
6758                        "ListPeeringRoutes",
6759                    ),
6760                );
6761            self.inner.unary(req, path, codec).await
6762        }
6763        /// Creates a new HCX activation key in a given private cloud.
6764        pub async fn create_hcx_activation_key(
6765            &mut self,
6766            request: impl tonic::IntoRequest<super::CreateHcxActivationKeyRequest>,
6767        ) -> std::result::Result<
6768            tonic::Response<super::super::super::super::longrunning::Operation>,
6769            tonic::Status,
6770        > {
6771            self.inner
6772                .ready()
6773                .await
6774                .map_err(|e| {
6775                    tonic::Status::unknown(
6776                        format!("Service was not ready: {}", e.into()),
6777                    )
6778                })?;
6779            let codec = tonic_prost::ProstCodec::default();
6780            let path = http::uri::PathAndQuery::from_static(
6781                "/google.cloud.vmwareengine.v1.VmwareEngine/CreateHcxActivationKey",
6782            );
6783            let mut req = request.into_request();
6784            req.extensions_mut()
6785                .insert(
6786                    GrpcMethod::new(
6787                        "google.cloud.vmwareengine.v1.VmwareEngine",
6788                        "CreateHcxActivationKey",
6789                    ),
6790                );
6791            self.inner.unary(req, path, codec).await
6792        }
6793        /// Lists `HcxActivationKey` resources in a given private cloud.
6794        pub async fn list_hcx_activation_keys(
6795            &mut self,
6796            request: impl tonic::IntoRequest<super::ListHcxActivationKeysRequest>,
6797        ) -> std::result::Result<
6798            tonic::Response<super::ListHcxActivationKeysResponse>,
6799            tonic::Status,
6800        > {
6801            self.inner
6802                .ready()
6803                .await
6804                .map_err(|e| {
6805                    tonic::Status::unknown(
6806                        format!("Service was not ready: {}", e.into()),
6807                    )
6808                })?;
6809            let codec = tonic_prost::ProstCodec::default();
6810            let path = http::uri::PathAndQuery::from_static(
6811                "/google.cloud.vmwareengine.v1.VmwareEngine/ListHcxActivationKeys",
6812            );
6813            let mut req = request.into_request();
6814            req.extensions_mut()
6815                .insert(
6816                    GrpcMethod::new(
6817                        "google.cloud.vmwareengine.v1.VmwareEngine",
6818                        "ListHcxActivationKeys",
6819                    ),
6820                );
6821            self.inner.unary(req, path, codec).await
6822        }
6823        /// Retrieves a `HcxActivationKey` resource by its resource name.
6824        pub async fn get_hcx_activation_key(
6825            &mut self,
6826            request: impl tonic::IntoRequest<super::GetHcxActivationKeyRequest>,
6827        ) -> std::result::Result<
6828            tonic::Response<super::HcxActivationKey>,
6829            tonic::Status,
6830        > {
6831            self.inner
6832                .ready()
6833                .await
6834                .map_err(|e| {
6835                    tonic::Status::unknown(
6836                        format!("Service was not ready: {}", e.into()),
6837                    )
6838                })?;
6839            let codec = tonic_prost::ProstCodec::default();
6840            let path = http::uri::PathAndQuery::from_static(
6841                "/google.cloud.vmwareengine.v1.VmwareEngine/GetHcxActivationKey",
6842            );
6843            let mut req = request.into_request();
6844            req.extensions_mut()
6845                .insert(
6846                    GrpcMethod::new(
6847                        "google.cloud.vmwareengine.v1.VmwareEngine",
6848                        "GetHcxActivationKey",
6849                    ),
6850                );
6851            self.inner.unary(req, path, codec).await
6852        }
6853        /// Retrieves a `NetworkPolicy` resource by its resource name.
6854        pub async fn get_network_policy(
6855            &mut self,
6856            request: impl tonic::IntoRequest<super::GetNetworkPolicyRequest>,
6857        ) -> std::result::Result<tonic::Response<super::NetworkPolicy>, tonic::Status> {
6858            self.inner
6859                .ready()
6860                .await
6861                .map_err(|e| {
6862                    tonic::Status::unknown(
6863                        format!("Service was not ready: {}", e.into()),
6864                    )
6865                })?;
6866            let codec = tonic_prost::ProstCodec::default();
6867            let path = http::uri::PathAndQuery::from_static(
6868                "/google.cloud.vmwareengine.v1.VmwareEngine/GetNetworkPolicy",
6869            );
6870            let mut req = request.into_request();
6871            req.extensions_mut()
6872                .insert(
6873                    GrpcMethod::new(
6874                        "google.cloud.vmwareengine.v1.VmwareEngine",
6875                        "GetNetworkPolicy",
6876                    ),
6877                );
6878            self.inner.unary(req, path, codec).await
6879        }
6880        /// Lists `NetworkPolicy` resources in a specified project and location.
6881        pub async fn list_network_policies(
6882            &mut self,
6883            request: impl tonic::IntoRequest<super::ListNetworkPoliciesRequest>,
6884        ) -> std::result::Result<
6885            tonic::Response<super::ListNetworkPoliciesResponse>,
6886            tonic::Status,
6887        > {
6888            self.inner
6889                .ready()
6890                .await
6891                .map_err(|e| {
6892                    tonic::Status::unknown(
6893                        format!("Service was not ready: {}", e.into()),
6894                    )
6895                })?;
6896            let codec = tonic_prost::ProstCodec::default();
6897            let path = http::uri::PathAndQuery::from_static(
6898                "/google.cloud.vmwareengine.v1.VmwareEngine/ListNetworkPolicies",
6899            );
6900            let mut req = request.into_request();
6901            req.extensions_mut()
6902                .insert(
6903                    GrpcMethod::new(
6904                        "google.cloud.vmwareengine.v1.VmwareEngine",
6905                        "ListNetworkPolicies",
6906                    ),
6907                );
6908            self.inner.unary(req, path, codec).await
6909        }
6910        /// Creates a new network policy in a given VMware Engine network of a
6911        /// project and location (region). A new network policy cannot be created if
6912        /// another network policy already exists in the same scope.
6913        pub async fn create_network_policy(
6914            &mut self,
6915            request: impl tonic::IntoRequest<super::CreateNetworkPolicyRequest>,
6916        ) -> std::result::Result<
6917            tonic::Response<super::super::super::super::longrunning::Operation>,
6918            tonic::Status,
6919        > {
6920            self.inner
6921                .ready()
6922                .await
6923                .map_err(|e| {
6924                    tonic::Status::unknown(
6925                        format!("Service was not ready: {}", e.into()),
6926                    )
6927                })?;
6928            let codec = tonic_prost::ProstCodec::default();
6929            let path = http::uri::PathAndQuery::from_static(
6930                "/google.cloud.vmwareengine.v1.VmwareEngine/CreateNetworkPolicy",
6931            );
6932            let mut req = request.into_request();
6933            req.extensions_mut()
6934                .insert(
6935                    GrpcMethod::new(
6936                        "google.cloud.vmwareengine.v1.VmwareEngine",
6937                        "CreateNetworkPolicy",
6938                    ),
6939                );
6940            self.inner.unary(req, path, codec).await
6941        }
6942        /// Modifies a `NetworkPolicy` resource. Only the following fields can be
6943        /// updated: `internet_access`, `external_ip`, `edge_services_cidr`.
6944        /// Only fields specified in `updateMask` are applied. When updating a network
6945        /// policy, the external IP network service can only be disabled if there are
6946        /// no external IP addresses present in the scope of the policy. Also, a
6947        /// `NetworkService` cannot be updated when `NetworkService.state` is set
6948        /// to `RECONCILING`.
6949        ///
6950        /// During operation processing, the resource is temporarily in the `ACTIVE`
6951        /// state before the operation fully completes. For that period of time, you
6952        /// can't update the resource. Use the operation status to determine when the
6953        /// processing fully completes.
6954        pub async fn update_network_policy(
6955            &mut self,
6956            request: impl tonic::IntoRequest<super::UpdateNetworkPolicyRequest>,
6957        ) -> std::result::Result<
6958            tonic::Response<super::super::super::super::longrunning::Operation>,
6959            tonic::Status,
6960        > {
6961            self.inner
6962                .ready()
6963                .await
6964                .map_err(|e| {
6965                    tonic::Status::unknown(
6966                        format!("Service was not ready: {}", e.into()),
6967                    )
6968                })?;
6969            let codec = tonic_prost::ProstCodec::default();
6970            let path = http::uri::PathAndQuery::from_static(
6971                "/google.cloud.vmwareengine.v1.VmwareEngine/UpdateNetworkPolicy",
6972            );
6973            let mut req = request.into_request();
6974            req.extensions_mut()
6975                .insert(
6976                    GrpcMethod::new(
6977                        "google.cloud.vmwareengine.v1.VmwareEngine",
6978                        "UpdateNetworkPolicy",
6979                    ),
6980                );
6981            self.inner.unary(req, path, codec).await
6982        }
6983        /// Deletes a `NetworkPolicy` resource. A network policy cannot be deleted
6984        /// when `NetworkService.state` is set to `RECONCILING` for either its external
6985        /// IP or internet access service.
6986        pub async fn delete_network_policy(
6987            &mut self,
6988            request: impl tonic::IntoRequest<super::DeleteNetworkPolicyRequest>,
6989        ) -> std::result::Result<
6990            tonic::Response<super::super::super::super::longrunning::Operation>,
6991            tonic::Status,
6992        > {
6993            self.inner
6994                .ready()
6995                .await
6996                .map_err(|e| {
6997                    tonic::Status::unknown(
6998                        format!("Service was not ready: {}", e.into()),
6999                    )
7000                })?;
7001            let codec = tonic_prost::ProstCodec::default();
7002            let path = http::uri::PathAndQuery::from_static(
7003                "/google.cloud.vmwareengine.v1.VmwareEngine/DeleteNetworkPolicy",
7004            );
7005            let mut req = request.into_request();
7006            req.extensions_mut()
7007                .insert(
7008                    GrpcMethod::new(
7009                        "google.cloud.vmwareengine.v1.VmwareEngine",
7010                        "DeleteNetworkPolicy",
7011                    ),
7012                );
7013            self.inner.unary(req, path, codec).await
7014        }
7015        /// Lists Consumer VPCs bound to Management DNS Zone of a given private cloud.
7016        pub async fn list_management_dns_zone_bindings(
7017            &mut self,
7018            request: impl tonic::IntoRequest<super::ListManagementDnsZoneBindingsRequest>,
7019        ) -> std::result::Result<
7020            tonic::Response<super::ListManagementDnsZoneBindingsResponse>,
7021            tonic::Status,
7022        > {
7023            self.inner
7024                .ready()
7025                .await
7026                .map_err(|e| {
7027                    tonic::Status::unknown(
7028                        format!("Service was not ready: {}", e.into()),
7029                    )
7030                })?;
7031            let codec = tonic_prost::ProstCodec::default();
7032            let path = http::uri::PathAndQuery::from_static(
7033                "/google.cloud.vmwareengine.v1.VmwareEngine/ListManagementDnsZoneBindings",
7034            );
7035            let mut req = request.into_request();
7036            req.extensions_mut()
7037                .insert(
7038                    GrpcMethod::new(
7039                        "google.cloud.vmwareengine.v1.VmwareEngine",
7040                        "ListManagementDnsZoneBindings",
7041                    ),
7042                );
7043            self.inner.unary(req, path, codec).await
7044        }
7045        /// Retrieves a 'ManagementDnsZoneBinding' resource by its resource name.
7046        pub async fn get_management_dns_zone_binding(
7047            &mut self,
7048            request: impl tonic::IntoRequest<super::GetManagementDnsZoneBindingRequest>,
7049        ) -> std::result::Result<
7050            tonic::Response<super::ManagementDnsZoneBinding>,
7051            tonic::Status,
7052        > {
7053            self.inner
7054                .ready()
7055                .await
7056                .map_err(|e| {
7057                    tonic::Status::unknown(
7058                        format!("Service was not ready: {}", e.into()),
7059                    )
7060                })?;
7061            let codec = tonic_prost::ProstCodec::default();
7062            let path = http::uri::PathAndQuery::from_static(
7063                "/google.cloud.vmwareengine.v1.VmwareEngine/GetManagementDnsZoneBinding",
7064            );
7065            let mut req = request.into_request();
7066            req.extensions_mut()
7067                .insert(
7068                    GrpcMethod::new(
7069                        "google.cloud.vmwareengine.v1.VmwareEngine",
7070                        "GetManagementDnsZoneBinding",
7071                    ),
7072                );
7073            self.inner.unary(req, path, codec).await
7074        }
7075        /// Creates a new `ManagementDnsZoneBinding` resource in a private cloud.
7076        /// This RPC creates the DNS binding and the resource that represents the
7077        /// DNS binding of the consumer VPC network to the management DNS zone. A
7078        /// management DNS zone is the Cloud DNS cross-project binding zone that
7079        /// VMware Engine creates for each private cloud. It contains FQDNs and
7080        /// corresponding IP addresses for the private cloud's ESXi hosts and
7081        /// management VM appliances like vCenter and NSX Manager.
7082        pub async fn create_management_dns_zone_binding(
7083            &mut self,
7084            request: impl tonic::IntoRequest<
7085                super::CreateManagementDnsZoneBindingRequest,
7086            >,
7087        ) -> std::result::Result<
7088            tonic::Response<super::super::super::super::longrunning::Operation>,
7089            tonic::Status,
7090        > {
7091            self.inner
7092                .ready()
7093                .await
7094                .map_err(|e| {
7095                    tonic::Status::unknown(
7096                        format!("Service was not ready: {}", e.into()),
7097                    )
7098                })?;
7099            let codec = tonic_prost::ProstCodec::default();
7100            let path = http::uri::PathAndQuery::from_static(
7101                "/google.cloud.vmwareengine.v1.VmwareEngine/CreateManagementDnsZoneBinding",
7102            );
7103            let mut req = request.into_request();
7104            req.extensions_mut()
7105                .insert(
7106                    GrpcMethod::new(
7107                        "google.cloud.vmwareengine.v1.VmwareEngine",
7108                        "CreateManagementDnsZoneBinding",
7109                    ),
7110                );
7111            self.inner.unary(req, path, codec).await
7112        }
7113        /// Updates a `ManagementDnsZoneBinding` resource.
7114        /// Only fields specified in `update_mask` are applied.
7115        pub async fn update_management_dns_zone_binding(
7116            &mut self,
7117            request: impl tonic::IntoRequest<
7118                super::UpdateManagementDnsZoneBindingRequest,
7119            >,
7120        ) -> std::result::Result<
7121            tonic::Response<super::super::super::super::longrunning::Operation>,
7122            tonic::Status,
7123        > {
7124            self.inner
7125                .ready()
7126                .await
7127                .map_err(|e| {
7128                    tonic::Status::unknown(
7129                        format!("Service was not ready: {}", e.into()),
7130                    )
7131                })?;
7132            let codec = tonic_prost::ProstCodec::default();
7133            let path = http::uri::PathAndQuery::from_static(
7134                "/google.cloud.vmwareengine.v1.VmwareEngine/UpdateManagementDnsZoneBinding",
7135            );
7136            let mut req = request.into_request();
7137            req.extensions_mut()
7138                .insert(
7139                    GrpcMethod::new(
7140                        "google.cloud.vmwareengine.v1.VmwareEngine",
7141                        "UpdateManagementDnsZoneBinding",
7142                    ),
7143                );
7144            self.inner.unary(req, path, codec).await
7145        }
7146        /// Deletes a `ManagementDnsZoneBinding` resource. When a management DNS zone
7147        /// binding is deleted, the corresponding consumer VPC network is no longer
7148        /// bound to the management DNS zone.
7149        pub async fn delete_management_dns_zone_binding(
7150            &mut self,
7151            request: impl tonic::IntoRequest<
7152                super::DeleteManagementDnsZoneBindingRequest,
7153            >,
7154        ) -> std::result::Result<
7155            tonic::Response<super::super::super::super::longrunning::Operation>,
7156            tonic::Status,
7157        > {
7158            self.inner
7159                .ready()
7160                .await
7161                .map_err(|e| {
7162                    tonic::Status::unknown(
7163                        format!("Service was not ready: {}", e.into()),
7164                    )
7165                })?;
7166            let codec = tonic_prost::ProstCodec::default();
7167            let path = http::uri::PathAndQuery::from_static(
7168                "/google.cloud.vmwareengine.v1.VmwareEngine/DeleteManagementDnsZoneBinding",
7169            );
7170            let mut req = request.into_request();
7171            req.extensions_mut()
7172                .insert(
7173                    GrpcMethod::new(
7174                        "google.cloud.vmwareengine.v1.VmwareEngine",
7175                        "DeleteManagementDnsZoneBinding",
7176                    ),
7177                );
7178            self.inner.unary(req, path, codec).await
7179        }
7180        /// Retries to create a `ManagementDnsZoneBinding` resource that is
7181        /// in failed state.
7182        pub async fn repair_management_dns_zone_binding(
7183            &mut self,
7184            request: impl tonic::IntoRequest<
7185                super::RepairManagementDnsZoneBindingRequest,
7186            >,
7187        ) -> std::result::Result<
7188            tonic::Response<super::super::super::super::longrunning::Operation>,
7189            tonic::Status,
7190        > {
7191            self.inner
7192                .ready()
7193                .await
7194                .map_err(|e| {
7195                    tonic::Status::unknown(
7196                        format!("Service was not ready: {}", e.into()),
7197                    )
7198                })?;
7199            let codec = tonic_prost::ProstCodec::default();
7200            let path = http::uri::PathAndQuery::from_static(
7201                "/google.cloud.vmwareengine.v1.VmwareEngine/RepairManagementDnsZoneBinding",
7202            );
7203            let mut req = request.into_request();
7204            req.extensions_mut()
7205                .insert(
7206                    GrpcMethod::new(
7207                        "google.cloud.vmwareengine.v1.VmwareEngine",
7208                        "RepairManagementDnsZoneBinding",
7209                    ),
7210                );
7211            self.inner.unary(req, path, codec).await
7212        }
7213        /// Creates a new VMware Engine network that can be used by a private cloud.
7214        pub async fn create_vmware_engine_network(
7215            &mut self,
7216            request: impl tonic::IntoRequest<super::CreateVmwareEngineNetworkRequest>,
7217        ) -> std::result::Result<
7218            tonic::Response<super::super::super::super::longrunning::Operation>,
7219            tonic::Status,
7220        > {
7221            self.inner
7222                .ready()
7223                .await
7224                .map_err(|e| {
7225                    tonic::Status::unknown(
7226                        format!("Service was not ready: {}", e.into()),
7227                    )
7228                })?;
7229            let codec = tonic_prost::ProstCodec::default();
7230            let path = http::uri::PathAndQuery::from_static(
7231                "/google.cloud.vmwareengine.v1.VmwareEngine/CreateVmwareEngineNetwork",
7232            );
7233            let mut req = request.into_request();
7234            req.extensions_mut()
7235                .insert(
7236                    GrpcMethod::new(
7237                        "google.cloud.vmwareengine.v1.VmwareEngine",
7238                        "CreateVmwareEngineNetwork",
7239                    ),
7240                );
7241            self.inner.unary(req, path, codec).await
7242        }
7243        /// Modifies a VMware Engine network resource. Only the following fields can be
7244        /// updated: `description`. Only fields specified in `updateMask` are
7245        /// applied.
7246        pub async fn update_vmware_engine_network(
7247            &mut self,
7248            request: impl tonic::IntoRequest<super::UpdateVmwareEngineNetworkRequest>,
7249        ) -> std::result::Result<
7250            tonic::Response<super::super::super::super::longrunning::Operation>,
7251            tonic::Status,
7252        > {
7253            self.inner
7254                .ready()
7255                .await
7256                .map_err(|e| {
7257                    tonic::Status::unknown(
7258                        format!("Service was not ready: {}", e.into()),
7259                    )
7260                })?;
7261            let codec = tonic_prost::ProstCodec::default();
7262            let path = http::uri::PathAndQuery::from_static(
7263                "/google.cloud.vmwareengine.v1.VmwareEngine/UpdateVmwareEngineNetwork",
7264            );
7265            let mut req = request.into_request();
7266            req.extensions_mut()
7267                .insert(
7268                    GrpcMethod::new(
7269                        "google.cloud.vmwareengine.v1.VmwareEngine",
7270                        "UpdateVmwareEngineNetwork",
7271                    ),
7272                );
7273            self.inner.unary(req, path, codec).await
7274        }
7275        /// Deletes a `VmwareEngineNetwork` resource. You can only delete a VMware
7276        /// Engine network after all resources that refer to it are deleted. For
7277        /// example, a private cloud, a network peering, and a network policy can all
7278        /// refer to the same VMware Engine network.
7279        pub async fn delete_vmware_engine_network(
7280            &mut self,
7281            request: impl tonic::IntoRequest<super::DeleteVmwareEngineNetworkRequest>,
7282        ) -> std::result::Result<
7283            tonic::Response<super::super::super::super::longrunning::Operation>,
7284            tonic::Status,
7285        > {
7286            self.inner
7287                .ready()
7288                .await
7289                .map_err(|e| {
7290                    tonic::Status::unknown(
7291                        format!("Service was not ready: {}", e.into()),
7292                    )
7293                })?;
7294            let codec = tonic_prost::ProstCodec::default();
7295            let path = http::uri::PathAndQuery::from_static(
7296                "/google.cloud.vmwareengine.v1.VmwareEngine/DeleteVmwareEngineNetwork",
7297            );
7298            let mut req = request.into_request();
7299            req.extensions_mut()
7300                .insert(
7301                    GrpcMethod::new(
7302                        "google.cloud.vmwareengine.v1.VmwareEngine",
7303                        "DeleteVmwareEngineNetwork",
7304                    ),
7305                );
7306            self.inner.unary(req, path, codec).await
7307        }
7308        /// Retrieves a `VmwareEngineNetwork` resource by its resource name. The
7309        /// resource contains details of the VMware Engine network, such as its VMware
7310        /// Engine network type, peered networks in a service project, and state
7311        /// (for example, `CREATING`, `ACTIVE`, `DELETING`).
7312        pub async fn get_vmware_engine_network(
7313            &mut self,
7314            request: impl tonic::IntoRequest<super::GetVmwareEngineNetworkRequest>,
7315        ) -> std::result::Result<
7316            tonic::Response<super::VmwareEngineNetwork>,
7317            tonic::Status,
7318        > {
7319            self.inner
7320                .ready()
7321                .await
7322                .map_err(|e| {
7323                    tonic::Status::unknown(
7324                        format!("Service was not ready: {}", e.into()),
7325                    )
7326                })?;
7327            let codec = tonic_prost::ProstCodec::default();
7328            let path = http::uri::PathAndQuery::from_static(
7329                "/google.cloud.vmwareengine.v1.VmwareEngine/GetVmwareEngineNetwork",
7330            );
7331            let mut req = request.into_request();
7332            req.extensions_mut()
7333                .insert(
7334                    GrpcMethod::new(
7335                        "google.cloud.vmwareengine.v1.VmwareEngine",
7336                        "GetVmwareEngineNetwork",
7337                    ),
7338                );
7339            self.inner.unary(req, path, codec).await
7340        }
7341        /// Lists `VmwareEngineNetwork` resources in a given project and location.
7342        pub async fn list_vmware_engine_networks(
7343            &mut self,
7344            request: impl tonic::IntoRequest<super::ListVmwareEngineNetworksRequest>,
7345        ) -> std::result::Result<
7346            tonic::Response<super::ListVmwareEngineNetworksResponse>,
7347            tonic::Status,
7348        > {
7349            self.inner
7350                .ready()
7351                .await
7352                .map_err(|e| {
7353                    tonic::Status::unknown(
7354                        format!("Service was not ready: {}", e.into()),
7355                    )
7356                })?;
7357            let codec = tonic_prost::ProstCodec::default();
7358            let path = http::uri::PathAndQuery::from_static(
7359                "/google.cloud.vmwareengine.v1.VmwareEngine/ListVmwareEngineNetworks",
7360            );
7361            let mut req = request.into_request();
7362            req.extensions_mut()
7363                .insert(
7364                    GrpcMethod::new(
7365                        "google.cloud.vmwareengine.v1.VmwareEngine",
7366                        "ListVmwareEngineNetworks",
7367                    ),
7368                );
7369            self.inner.unary(req, path, codec).await
7370        }
7371        /// Creates a new private connection that can be used for accessing private
7372        /// Clouds.
7373        pub async fn create_private_connection(
7374            &mut self,
7375            request: impl tonic::IntoRequest<super::CreatePrivateConnectionRequest>,
7376        ) -> std::result::Result<
7377            tonic::Response<super::super::super::super::longrunning::Operation>,
7378            tonic::Status,
7379        > {
7380            self.inner
7381                .ready()
7382                .await
7383                .map_err(|e| {
7384                    tonic::Status::unknown(
7385                        format!("Service was not ready: {}", e.into()),
7386                    )
7387                })?;
7388            let codec = tonic_prost::ProstCodec::default();
7389            let path = http::uri::PathAndQuery::from_static(
7390                "/google.cloud.vmwareengine.v1.VmwareEngine/CreatePrivateConnection",
7391            );
7392            let mut req = request.into_request();
7393            req.extensions_mut()
7394                .insert(
7395                    GrpcMethod::new(
7396                        "google.cloud.vmwareengine.v1.VmwareEngine",
7397                        "CreatePrivateConnection",
7398                    ),
7399                );
7400            self.inner.unary(req, path, codec).await
7401        }
7402        /// Retrieves a `PrivateConnection` resource by its resource name. The resource
7403        /// contains details of the private connection, such as connected
7404        /// network, routing mode and state.
7405        pub async fn get_private_connection(
7406            &mut self,
7407            request: impl tonic::IntoRequest<super::GetPrivateConnectionRequest>,
7408        ) -> std::result::Result<
7409            tonic::Response<super::PrivateConnection>,
7410            tonic::Status,
7411        > {
7412            self.inner
7413                .ready()
7414                .await
7415                .map_err(|e| {
7416                    tonic::Status::unknown(
7417                        format!("Service was not ready: {}", e.into()),
7418                    )
7419                })?;
7420            let codec = tonic_prost::ProstCodec::default();
7421            let path = http::uri::PathAndQuery::from_static(
7422                "/google.cloud.vmwareengine.v1.VmwareEngine/GetPrivateConnection",
7423            );
7424            let mut req = request.into_request();
7425            req.extensions_mut()
7426                .insert(
7427                    GrpcMethod::new(
7428                        "google.cloud.vmwareengine.v1.VmwareEngine",
7429                        "GetPrivateConnection",
7430                    ),
7431                );
7432            self.inner.unary(req, path, codec).await
7433        }
7434        /// Lists `PrivateConnection` resources in a given project and location.
7435        pub async fn list_private_connections(
7436            &mut self,
7437            request: impl tonic::IntoRequest<super::ListPrivateConnectionsRequest>,
7438        ) -> std::result::Result<
7439            tonic::Response<super::ListPrivateConnectionsResponse>,
7440            tonic::Status,
7441        > {
7442            self.inner
7443                .ready()
7444                .await
7445                .map_err(|e| {
7446                    tonic::Status::unknown(
7447                        format!("Service was not ready: {}", e.into()),
7448                    )
7449                })?;
7450            let codec = tonic_prost::ProstCodec::default();
7451            let path = http::uri::PathAndQuery::from_static(
7452                "/google.cloud.vmwareengine.v1.VmwareEngine/ListPrivateConnections",
7453            );
7454            let mut req = request.into_request();
7455            req.extensions_mut()
7456                .insert(
7457                    GrpcMethod::new(
7458                        "google.cloud.vmwareengine.v1.VmwareEngine",
7459                        "ListPrivateConnections",
7460                    ),
7461                );
7462            self.inner.unary(req, path, codec).await
7463        }
7464        /// Modifies a `PrivateConnection` resource. Only `description` and
7465        /// `routing_mode` fields can be updated. Only fields specified in `updateMask`
7466        /// are applied.
7467        pub async fn update_private_connection(
7468            &mut self,
7469            request: impl tonic::IntoRequest<super::UpdatePrivateConnectionRequest>,
7470        ) -> std::result::Result<
7471            tonic::Response<super::super::super::super::longrunning::Operation>,
7472            tonic::Status,
7473        > {
7474            self.inner
7475                .ready()
7476                .await
7477                .map_err(|e| {
7478                    tonic::Status::unknown(
7479                        format!("Service was not ready: {}", e.into()),
7480                    )
7481                })?;
7482            let codec = tonic_prost::ProstCodec::default();
7483            let path = http::uri::PathAndQuery::from_static(
7484                "/google.cloud.vmwareengine.v1.VmwareEngine/UpdatePrivateConnection",
7485            );
7486            let mut req = request.into_request();
7487            req.extensions_mut()
7488                .insert(
7489                    GrpcMethod::new(
7490                        "google.cloud.vmwareengine.v1.VmwareEngine",
7491                        "UpdatePrivateConnection",
7492                    ),
7493                );
7494            self.inner.unary(req, path, codec).await
7495        }
7496        /// Deletes a `PrivateConnection` resource. When a private connection is
7497        /// deleted for a VMware Engine network, the connected network becomes
7498        /// inaccessible to that VMware Engine network.
7499        pub async fn delete_private_connection(
7500            &mut self,
7501            request: impl tonic::IntoRequest<super::DeletePrivateConnectionRequest>,
7502        ) -> std::result::Result<
7503            tonic::Response<super::super::super::super::longrunning::Operation>,
7504            tonic::Status,
7505        > {
7506            self.inner
7507                .ready()
7508                .await
7509                .map_err(|e| {
7510                    tonic::Status::unknown(
7511                        format!("Service was not ready: {}", e.into()),
7512                    )
7513                })?;
7514            let codec = tonic_prost::ProstCodec::default();
7515            let path = http::uri::PathAndQuery::from_static(
7516                "/google.cloud.vmwareengine.v1.VmwareEngine/DeletePrivateConnection",
7517            );
7518            let mut req = request.into_request();
7519            req.extensions_mut()
7520                .insert(
7521                    GrpcMethod::new(
7522                        "google.cloud.vmwareengine.v1.VmwareEngine",
7523                        "DeletePrivateConnection",
7524                    ),
7525                );
7526            self.inner.unary(req, path, codec).await
7527        }
7528        /// Lists the private connection routes exchanged over a peering connection.
7529        pub async fn list_private_connection_peering_routes(
7530            &mut self,
7531            request: impl tonic::IntoRequest<
7532                super::ListPrivateConnectionPeeringRoutesRequest,
7533            >,
7534        ) -> std::result::Result<
7535            tonic::Response<super::ListPrivateConnectionPeeringRoutesResponse>,
7536            tonic::Status,
7537        > {
7538            self.inner
7539                .ready()
7540                .await
7541                .map_err(|e| {
7542                    tonic::Status::unknown(
7543                        format!("Service was not ready: {}", e.into()),
7544                    )
7545                })?;
7546            let codec = tonic_prost::ProstCodec::default();
7547            let path = http::uri::PathAndQuery::from_static(
7548                "/google.cloud.vmwareengine.v1.VmwareEngine/ListPrivateConnectionPeeringRoutes",
7549            );
7550            let mut req = request.into_request();
7551            req.extensions_mut()
7552                .insert(
7553                    GrpcMethod::new(
7554                        "google.cloud.vmwareengine.v1.VmwareEngine",
7555                        "ListPrivateConnectionPeeringRoutes",
7556                    ),
7557                );
7558            self.inner.unary(req, path, codec).await
7559        }
7560        /// Grants the bind permission to the customer provided principal(user /
7561        /// service account) to bind their DNS zone with the intranet VPC associated
7562        /// with the project. DnsBindPermission is a global resource and location can
7563        /// only be global.
7564        pub async fn grant_dns_bind_permission(
7565            &mut self,
7566            request: impl tonic::IntoRequest<super::GrantDnsBindPermissionRequest>,
7567        ) -> std::result::Result<
7568            tonic::Response<super::super::super::super::longrunning::Operation>,
7569            tonic::Status,
7570        > {
7571            self.inner
7572                .ready()
7573                .await
7574                .map_err(|e| {
7575                    tonic::Status::unknown(
7576                        format!("Service was not ready: {}", e.into()),
7577                    )
7578                })?;
7579            let codec = tonic_prost::ProstCodec::default();
7580            let path = http::uri::PathAndQuery::from_static(
7581                "/google.cloud.vmwareengine.v1.VmwareEngine/GrantDnsBindPermission",
7582            );
7583            let mut req = request.into_request();
7584            req.extensions_mut()
7585                .insert(
7586                    GrpcMethod::new(
7587                        "google.cloud.vmwareengine.v1.VmwareEngine",
7588                        "GrantDnsBindPermission",
7589                    ),
7590                );
7591            self.inner.unary(req, path, codec).await
7592        }
7593        /// Gets all the principals having bind permission on the intranet VPC
7594        /// associated with the consumer project granted by the Grant API.
7595        /// DnsBindPermission is a global resource and location can only be global.
7596        pub async fn get_dns_bind_permission(
7597            &mut self,
7598            request: impl tonic::IntoRequest<super::GetDnsBindPermissionRequest>,
7599        ) -> std::result::Result<
7600            tonic::Response<super::DnsBindPermission>,
7601            tonic::Status,
7602        > {
7603            self.inner
7604                .ready()
7605                .await
7606                .map_err(|e| {
7607                    tonic::Status::unknown(
7608                        format!("Service was not ready: {}", e.into()),
7609                    )
7610                })?;
7611            let codec = tonic_prost::ProstCodec::default();
7612            let path = http::uri::PathAndQuery::from_static(
7613                "/google.cloud.vmwareengine.v1.VmwareEngine/GetDnsBindPermission",
7614            );
7615            let mut req = request.into_request();
7616            req.extensions_mut()
7617                .insert(
7618                    GrpcMethod::new(
7619                        "google.cloud.vmwareengine.v1.VmwareEngine",
7620                        "GetDnsBindPermission",
7621                    ),
7622                );
7623            self.inner.unary(req, path, codec).await
7624        }
7625        /// Revokes the bind permission from the customer provided principal(user /
7626        /// service account) on the intranet VPC associated with the consumer project.
7627        /// DnsBindPermission is a global resource and location can only be global.
7628        pub async fn revoke_dns_bind_permission(
7629            &mut self,
7630            request: impl tonic::IntoRequest<super::RevokeDnsBindPermissionRequest>,
7631        ) -> std::result::Result<
7632            tonic::Response<super::super::super::super::longrunning::Operation>,
7633            tonic::Status,
7634        > {
7635            self.inner
7636                .ready()
7637                .await
7638                .map_err(|e| {
7639                    tonic::Status::unknown(
7640                        format!("Service was not ready: {}", e.into()),
7641                    )
7642                })?;
7643            let codec = tonic_prost::ProstCodec::default();
7644            let path = http::uri::PathAndQuery::from_static(
7645                "/google.cloud.vmwareengine.v1.VmwareEngine/RevokeDnsBindPermission",
7646            );
7647            let mut req = request.into_request();
7648            req.extensions_mut()
7649                .insert(
7650                    GrpcMethod::new(
7651                        "google.cloud.vmwareengine.v1.VmwareEngine",
7652                        "RevokeDnsBindPermission",
7653                    ),
7654                );
7655            self.inner.unary(req, path, codec).await
7656        }
7657    }
7658}