yandex_cloud/
yandex.cloud.mdb.mongodb.v1.rs

1/// A MongoDB Backup resource. For more information, see the
2/// [Developer's Guide](/docs/managed-mongodb/concepts).
3#[allow(clippy::derive_partial_eq_without_eq)]
4#[derive(Clone, PartialEq, ::prost::Message)]
5pub struct Backup {
6    /// ID of the backup. Required.
7    #[prost(string, tag = "1")]
8    pub id: ::prost::alloc::string::String,
9    /// ID of the folder that the backup belongs to.
10    #[prost(string, tag = "2")]
11    pub folder_id: ::prost::alloc::string::String,
12    /// Creation timestamp in \[RFC3339\](<https://www.ietf.org/rfc/rfc3339.txt>) text format
13    /// (i.e. when the backup operation was completed).
14    #[prost(message, optional, tag = "3")]
15    pub created_at: ::core::option::Option<::prost_types::Timestamp>,
16    /// ID of the MongoDB cluster that the backup was created for.
17    #[prost(string, tag = "4")]
18    pub source_cluster_id: ::prost::alloc::string::String,
19    /// Time when the backup operation was started.
20    #[prost(message, optional, tag = "5")]
21    pub started_at: ::core::option::Option<::prost_types::Timestamp>,
22    /// Shard names used as a source for backup.
23    #[prost(string, repeated, tag = "6")]
24    pub source_shard_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25    /// Size of backup in bytes
26    #[prost(int64, tag = "7")]
27    pub size: i64,
28    /// How this backup was created (manual/automatic/etc...)
29    #[prost(enumeration = "backup::BackupType", tag = "8")]
30    pub r#type: i32,
31    /// Size of the journal associated with backup, in bytes
32    #[prost(int64, tag = "9")]
33    pub journal_size: i64,
34}
35/// Nested message and enum types in `Backup`.
36pub mod backup {
37    #[derive(
38        Clone,
39        Copy,
40        Debug,
41        PartialEq,
42        Eq,
43        Hash,
44        PartialOrd,
45        Ord,
46        ::prost::Enumeration
47    )]
48    #[repr(i32)]
49    pub enum BackupType {
50        Unspecified = 0,
51        /// Backup created by automated daily schedule
52        Automated = 1,
53        /// Backup created by user request
54        Manual = 2,
55    }
56    impl BackupType {
57        /// String value of the enum field names used in the ProtoBuf definition.
58        ///
59        /// The values are not transformed in any way and thus are considered stable
60        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
61        pub fn as_str_name(&self) -> &'static str {
62            match self {
63                BackupType::Unspecified => "BACKUP_TYPE_UNSPECIFIED",
64                BackupType::Automated => "AUTOMATED",
65                BackupType::Manual => "MANUAL",
66            }
67        }
68        /// Creates an enum from field names used in the ProtoBuf definition.
69        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
70            match value {
71                "BACKUP_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
72                "AUTOMATED" => Some(Self::Automated),
73                "MANUAL" => Some(Self::Manual),
74                _ => None,
75            }
76        }
77    }
78}
79#[allow(clippy::derive_partial_eq_without_eq)]
80#[derive(Clone, PartialEq, ::prost::Message)]
81pub struct GetBackupRequest {
82    /// ID of the backup to return information about.
83    /// To get the backup ID, use a \[ClusterService.ListBackups\] request.
84    #[prost(string, tag = "1")]
85    pub backup_id: ::prost::alloc::string::String,
86}
87#[allow(clippy::derive_partial_eq_without_eq)]
88#[derive(Clone, PartialEq, ::prost::Message)]
89pub struct ListBackupsRequest {
90    /// ID of the folder to list backups in.
91    /// To get the folder ID, use a \[yandex.cloud.resourcemanager.v1.FolderService.List\] request.
92    #[prost(string, tag = "1")]
93    pub folder_id: ::prost::alloc::string::String,
94    /// The maximum number of results per page to return. If the number of available
95    /// results is larger than \[page_size\], the service returns a \[ListBackupsResponse.next_page_token\]
96    /// that can be used to get the next page of results in subsequent list requests.
97    #[prost(int64, tag = "2")]
98    pub page_size: i64,
99    /// Page token. To get the next page of results, set \[page_token\] to the
100    /// \[ListBackupsResponse.next_page_token\] returned by the previous list request.
101    #[prost(string, tag = "3")]
102    pub page_token: ::prost::alloc::string::String,
103}
104#[allow(clippy::derive_partial_eq_without_eq)]
105#[derive(Clone, PartialEq, ::prost::Message)]
106pub struct ListBackupsResponse {
107    /// List of Backup resources.
108    #[prost(message, repeated, tag = "1")]
109    pub backups: ::prost::alloc::vec::Vec<Backup>,
110    /// This token allows you to get the next page of results for list requests. If the number of results
111    /// is larger than \[ListBackupsRequest.page_size\], use the \[next_page_token\] as the value
112    /// for the \[ListBackupsRequest.page_token\] parameter in the next list request. Each subsequent
113    /// list request will have its own \[next_page_token\] to continue paging through the results.
114    #[prost(string, tag = "2")]
115    pub next_page_token: ::prost::alloc::string::String,
116}
117#[allow(clippy::derive_partial_eq_without_eq)]
118#[derive(Clone, PartialEq, ::prost::Message)]
119pub struct DeleteBackupRequest {
120    /// Required. ID of the backup to delete.
121    #[prost(string, tag = "1")]
122    pub backup_id: ::prost::alloc::string::String,
123}
124#[allow(clippy::derive_partial_eq_without_eq)]
125#[derive(Clone, PartialEq, ::prost::Message)]
126pub struct DeleteBackupMetadata {
127    /// Required. ID of the deleting MongoDB backup.
128    #[prost(string, tag = "1")]
129    pub backup_id: ::prost::alloc::string::String,
130}
131/// Generated client implementations.
132pub mod backup_service_client {
133    #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
134    use tonic::codegen::*;
135    use tonic::codegen::http::Uri;
136    /// A set of methods for managing MongoDB Backup resources.
137    #[derive(Debug, Clone)]
138    pub struct BackupServiceClient<T> {
139        inner: tonic::client::Grpc<T>,
140    }
141    impl BackupServiceClient<tonic::transport::Channel> {
142        /// Attempt to create a new client by connecting to a given endpoint.
143        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
144        where
145            D: TryInto<tonic::transport::Endpoint>,
146            D::Error: Into<StdError>,
147        {
148            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
149            Ok(Self::new(conn))
150        }
151    }
152    impl<T> BackupServiceClient<T>
153    where
154        T: tonic::client::GrpcService<tonic::body::BoxBody>,
155        T::Error: Into<StdError>,
156        T::ResponseBody: Body<Data = Bytes> + Send + 'static,
157        <T::ResponseBody as Body>::Error: Into<StdError> + Send,
158    {
159        pub fn new(inner: T) -> Self {
160            let inner = tonic::client::Grpc::new(inner);
161            Self { inner }
162        }
163        pub fn with_origin(inner: T, origin: Uri) -> Self {
164            let inner = tonic::client::Grpc::with_origin(inner, origin);
165            Self { inner }
166        }
167        pub fn with_interceptor<F>(
168            inner: T,
169            interceptor: F,
170        ) -> BackupServiceClient<InterceptedService<T, F>>
171        where
172            F: tonic::service::Interceptor,
173            T::ResponseBody: Default,
174            T: tonic::codegen::Service<
175                http::Request<tonic::body::BoxBody>,
176                Response = http::Response<
177                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
178                >,
179            >,
180            <T as tonic::codegen::Service<
181                http::Request<tonic::body::BoxBody>,
182            >>::Error: Into<StdError> + Send + Sync,
183        {
184            BackupServiceClient::new(InterceptedService::new(inner, interceptor))
185        }
186        /// Compress requests with the given encoding.
187        ///
188        /// This requires the server to support it otherwise it might respond with an
189        /// error.
190        #[must_use]
191        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
192            self.inner = self.inner.send_compressed(encoding);
193            self
194        }
195        /// Enable decompressing responses.
196        #[must_use]
197        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
198            self.inner = self.inner.accept_compressed(encoding);
199            self
200        }
201        /// Limits the maximum size of a decoded message.
202        ///
203        /// Default: `4MB`
204        #[must_use]
205        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
206            self.inner = self.inner.max_decoding_message_size(limit);
207            self
208        }
209        /// Limits the maximum size of an encoded message.
210        ///
211        /// Default: `usize::MAX`
212        #[must_use]
213        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
214            self.inner = self.inner.max_encoding_message_size(limit);
215            self
216        }
217        /// Returns the specified MongoDB backup.
218        ///
219        /// To get the list of available MongoDB backups, make a [List] request.
220        pub async fn get(
221            &mut self,
222            request: impl tonic::IntoRequest<super::GetBackupRequest>,
223        ) -> std::result::Result<tonic::Response<super::Backup>, tonic::Status> {
224            self.inner
225                .ready()
226                .await
227                .map_err(|e| {
228                    tonic::Status::new(
229                        tonic::Code::Unknown,
230                        format!("Service was not ready: {}", e.into()),
231                    )
232                })?;
233            let codec = tonic::codec::ProstCodec::default();
234            let path = http::uri::PathAndQuery::from_static(
235                "/yandex.cloud.mdb.mongodb.v1.BackupService/Get",
236            );
237            let mut req = request.into_request();
238            req.extensions_mut()
239                .insert(
240                    GrpcMethod::new("yandex.cloud.mdb.mongodb.v1.BackupService", "Get"),
241                );
242            self.inner.unary(req, path, codec).await
243        }
244        /// Retrieves the list of backups available for the specified folder.
245        pub async fn list(
246            &mut self,
247            request: impl tonic::IntoRequest<super::ListBackupsRequest>,
248        ) -> std::result::Result<
249            tonic::Response<super::ListBackupsResponse>,
250            tonic::Status,
251        > {
252            self.inner
253                .ready()
254                .await
255                .map_err(|e| {
256                    tonic::Status::new(
257                        tonic::Code::Unknown,
258                        format!("Service was not ready: {}", e.into()),
259                    )
260                })?;
261            let codec = tonic::codec::ProstCodec::default();
262            let path = http::uri::PathAndQuery::from_static(
263                "/yandex.cloud.mdb.mongodb.v1.BackupService/List",
264            );
265            let mut req = request.into_request();
266            req.extensions_mut()
267                .insert(
268                    GrpcMethod::new("yandex.cloud.mdb.mongodb.v1.BackupService", "List"),
269                );
270            self.inner.unary(req, path, codec).await
271        }
272        /// Returns the list of available backups for the specified MongoDB cluster.
273        pub async fn delete(
274            &mut self,
275            request: impl tonic::IntoRequest<super::DeleteBackupRequest>,
276        ) -> std::result::Result<
277            tonic::Response<super::super::super::super::operation::Operation>,
278            tonic::Status,
279        > {
280            self.inner
281                .ready()
282                .await
283                .map_err(|e| {
284                    tonic::Status::new(
285                        tonic::Code::Unknown,
286                        format!("Service was not ready: {}", e.into()),
287                    )
288                })?;
289            let codec = tonic::codec::ProstCodec::default();
290            let path = http::uri::PathAndQuery::from_static(
291                "/yandex.cloud.mdb.mongodb.v1.BackupService/Delete",
292            );
293            let mut req = request.into_request();
294            req.extensions_mut()
295                .insert(
296                    GrpcMethod::new(
297                        "yandex.cloud.mdb.mongodb.v1.BackupService",
298                        "Delete",
299                    ),
300                );
301            self.inner.unary(req, path, codec).await
302        }
303    }
304}
305/// A maintenance window settings.
306#[allow(clippy::derive_partial_eq_without_eq)]
307#[derive(Clone, PartialEq, ::prost::Message)]
308pub struct MaintenanceWindow {
309    /// The maintenance policy in effect.
310    #[prost(oneof = "maintenance_window::Policy", tags = "1, 2")]
311    pub policy: ::core::option::Option<maintenance_window::Policy>,
312}
313/// Nested message and enum types in `MaintenanceWindow`.
314pub mod maintenance_window {
315    /// The maintenance policy in effect.
316    #[allow(clippy::derive_partial_eq_without_eq)]
317    #[derive(Clone, PartialEq, ::prost::Oneof)]
318    pub enum Policy {
319        /// Maintenance operation can be scheduled anytime.
320        #[prost(message, tag = "1")]
321        Anytime(super::AnytimeMaintenanceWindow),
322        /// Maintenance operation can be scheduled on a weekly basis.
323        #[prost(message, tag = "2")]
324        WeeklyMaintenanceWindow(super::WeeklyMaintenanceWindow),
325    }
326}
327#[allow(clippy::derive_partial_eq_without_eq)]
328#[derive(Clone, PartialEq, ::prost::Message)]
329pub struct AnytimeMaintenanceWindow {}
330/// Weelky maintenance window settings.
331#[allow(clippy::derive_partial_eq_without_eq)]
332#[derive(Clone, PartialEq, ::prost::Message)]
333pub struct WeeklyMaintenanceWindow {
334    /// Day of the week (in `DDD` format).
335    #[prost(enumeration = "weekly_maintenance_window::WeekDay", tag = "1")]
336    pub day: i32,
337    /// Hour of the day in UTC (in `HH` format).
338    #[prost(int64, tag = "2")]
339    pub hour: i64,
340}
341/// Nested message and enum types in `WeeklyMaintenanceWindow`.
342pub mod weekly_maintenance_window {
343    #[derive(
344        Clone,
345        Copy,
346        Debug,
347        PartialEq,
348        Eq,
349        Hash,
350        PartialOrd,
351        Ord,
352        ::prost::Enumeration
353    )]
354    #[repr(i32)]
355    pub enum WeekDay {
356        Unspecified = 0,
357        Mon = 1,
358        Tue = 2,
359        Wed = 3,
360        Thu = 4,
361        Fri = 5,
362        Sat = 6,
363        Sun = 7,
364    }
365    impl WeekDay {
366        /// String value of the enum field names used in the ProtoBuf definition.
367        ///
368        /// The values are not transformed in any way and thus are considered stable
369        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
370        pub fn as_str_name(&self) -> &'static str {
371            match self {
372                WeekDay::Unspecified => "WEEK_DAY_UNSPECIFIED",
373                WeekDay::Mon => "MON",
374                WeekDay::Tue => "TUE",
375                WeekDay::Wed => "WED",
376                WeekDay::Thu => "THU",
377                WeekDay::Fri => "FRI",
378                WeekDay::Sat => "SAT",
379                WeekDay::Sun => "SUN",
380            }
381        }
382        /// Creates an enum from field names used in the ProtoBuf definition.
383        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
384            match value {
385                "WEEK_DAY_UNSPECIFIED" => Some(Self::Unspecified),
386                "MON" => Some(Self::Mon),
387                "TUE" => Some(Self::Tue),
388                "WED" => Some(Self::Wed),
389                "THU" => Some(Self::Thu),
390                "FRI" => Some(Self::Fri),
391                "SAT" => Some(Self::Sat),
392                "SUN" => Some(Self::Sun),
393                _ => None,
394            }
395        }
396    }
397}
398/// A planned maintenance operation.
399#[allow(clippy::derive_partial_eq_without_eq)]
400#[derive(Clone, PartialEq, ::prost::Message)]
401pub struct MaintenanceOperation {
402    /// Information about this maintenance operation.
403    #[prost(string, tag = "1")]
404    pub info: ::prost::alloc::string::String,
405    /// Time until which this maintenance operation is delayed.
406    #[prost(message, optional, tag = "2")]
407    pub delayed_until: ::core::option::Option<::prost_types::Timestamp>,
408}
409/// A managed MongoDB cluster. For more information, see the \[documentation\](/docs/managed-mongodb/concepts).
410#[allow(clippy::derive_partial_eq_without_eq)]
411#[derive(Clone, PartialEq, ::prost::Message)]
412pub struct Cluster {
413    /// ID of the MongoDB cluster.
414    /// This ID is assigned by MDB at creation time.
415    #[prost(string, tag = "1")]
416    pub id: ::prost::alloc::string::String,
417    /// ID of the folder that the MongoDB cluster belongs to.
418    #[prost(string, tag = "2")]
419    pub folder_id: ::prost::alloc::string::String,
420    /// Creation timestamp in \[RFC3339\](<https://www.ietf.org/rfc/rfc3339.txt>) text format.
421    #[prost(message, optional, tag = "3")]
422    pub created_at: ::core::option::Option<::prost_types::Timestamp>,
423    /// Name of the MongoDB cluster.
424    /// The name is unique within the folder. 1-63 characters long.
425    #[prost(string, tag = "4")]
426    pub name: ::prost::alloc::string::String,
427    /// Description of the MongoDB cluster. 0-256 characters long.
428    #[prost(string, tag = "5")]
429    pub description: ::prost::alloc::string::String,
430    /// Custom labels for the MongoDB cluster as `` key:value `` pairs. Maximum 64 per resource.
431    #[prost(map = "string, string", tag = "6")]
432    pub labels: ::std::collections::HashMap<
433        ::prost::alloc::string::String,
434        ::prost::alloc::string::String,
435    >,
436    /// Deployment environment of the MongoDB cluster.
437    #[prost(enumeration = "cluster::Environment", tag = "7")]
438    pub environment: i32,
439    /// Description of monitoring systems relevant to the MongoDB cluster.
440    #[prost(message, repeated, tag = "8")]
441    pub monitoring: ::prost::alloc::vec::Vec<Monitoring>,
442    /// Configuration of the MongoDB cluster.
443    #[prost(message, optional, tag = "9")]
444    pub config: ::core::option::Option<ClusterConfig>,
445    /// ID of the network that the cluster belongs to.
446    #[prost(string, tag = "10")]
447    pub network_id: ::prost::alloc::string::String,
448    /// Aggregated cluster health.
449    #[prost(enumeration = "cluster::Health", tag = "11")]
450    pub health: i32,
451    /// Current state of the cluster.
452    #[prost(enumeration = "cluster::Status", tag = "12")]
453    pub status: i32,
454    /// Indicates current sharding status of the cluster.
455    #[prost(bool, tag = "13")]
456    pub sharded: bool,
457    /// Maintenance window for the cluster.
458    #[prost(message, optional, tag = "14")]
459    pub maintenance_window: ::core::option::Option<MaintenanceWindow>,
460    /// Planned maintenance operation to be started for the cluster within the nearest \[maintenance_window\].
461    #[prost(message, optional, tag = "15")]
462    pub planned_operation: ::core::option::Option<MaintenanceOperation>,
463    /// User security groups
464    #[prost(string, repeated, tag = "16")]
465    pub security_group_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
466    /// Deletion Protection inhibits deletion of the cluster
467    #[prost(bool, tag = "17")]
468    pub deletion_protection: bool,
469}
470/// Nested message and enum types in `Cluster`.
471pub mod cluster {
472    #[derive(
473        Clone,
474        Copy,
475        Debug,
476        PartialEq,
477        Eq,
478        Hash,
479        PartialOrd,
480        Ord,
481        ::prost::Enumeration
482    )]
483    #[repr(i32)]
484    pub enum Environment {
485        Unspecified = 0,
486        /// Stable environment with a conservative update policy: only hotfixes
487        /// are applied during regular maintenance.
488        Production = 1,
489        /// Environment with more aggressive update policy: new versions
490        /// are rolled out irrespective of backward compatibility.
491        Prestable = 2,
492    }
493    impl Environment {
494        /// String value of the enum field names used in the ProtoBuf definition.
495        ///
496        /// The values are not transformed in any way and thus are considered stable
497        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
498        pub fn as_str_name(&self) -> &'static str {
499            match self {
500                Environment::Unspecified => "ENVIRONMENT_UNSPECIFIED",
501                Environment::Production => "PRODUCTION",
502                Environment::Prestable => "PRESTABLE",
503            }
504        }
505        /// Creates an enum from field names used in the ProtoBuf definition.
506        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
507            match value {
508                "ENVIRONMENT_UNSPECIFIED" => Some(Self::Unspecified),
509                "PRODUCTION" => Some(Self::Production),
510                "PRESTABLE" => Some(Self::Prestable),
511                _ => None,
512            }
513        }
514    }
515    #[derive(
516        Clone,
517        Copy,
518        Debug,
519        PartialEq,
520        Eq,
521        Hash,
522        PartialOrd,
523        Ord,
524        ::prost::Enumeration
525    )]
526    #[repr(i32)]
527    pub enum Health {
528        /// State of the cluster is unknown (\[Host.health\] for every host in the cluster is UNKNOWN).
529        Unknown = 0,
530        /// Cluster is alive and well (\[Host.health\] for every host in the cluster is ALIVE).
531        Alive = 1,
532        /// Cluster is inoperable (\[Host.health\] for every host in the cluster is DEAD).
533        Dead = 2,
534        /// Cluster is working below capacity (\[Host.health\] for at least one host in the cluster is not ALIVE).
535        Degraded = 3,
536    }
537    impl Health {
538        /// String value of the enum field names used in the ProtoBuf definition.
539        ///
540        /// The values are not transformed in any way and thus are considered stable
541        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
542        pub fn as_str_name(&self) -> &'static str {
543            match self {
544                Health::Unknown => "HEALTH_UNKNOWN",
545                Health::Alive => "ALIVE",
546                Health::Dead => "DEAD",
547                Health::Degraded => "DEGRADED",
548            }
549        }
550        /// Creates an enum from field names used in the ProtoBuf definition.
551        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
552            match value {
553                "HEALTH_UNKNOWN" => Some(Self::Unknown),
554                "ALIVE" => Some(Self::Alive),
555                "DEAD" => Some(Self::Dead),
556                "DEGRADED" => Some(Self::Degraded),
557                _ => None,
558            }
559        }
560    }
561    #[derive(
562        Clone,
563        Copy,
564        Debug,
565        PartialEq,
566        Eq,
567        Hash,
568        PartialOrd,
569        Ord,
570        ::prost::Enumeration
571    )]
572    #[repr(i32)]
573    pub enum Status {
574        /// Cluster state is unknown.
575        Unknown = 0,
576        /// Cluster is being created.
577        Creating = 1,
578        /// Cluster is running normally.
579        Running = 2,
580        /// Cluster encountered a problem and cannot operate.
581        Error = 3,
582        /// Cluster is being updated.
583        Updating = 4,
584        /// Cluster is stopping.
585        Stopping = 5,
586        /// Cluster stopped.
587        Stopped = 6,
588        /// Cluster is starting.
589        Starting = 7,
590    }
591    impl Status {
592        /// String value of the enum field names used in the ProtoBuf definition.
593        ///
594        /// The values are not transformed in any way and thus are considered stable
595        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
596        pub fn as_str_name(&self) -> &'static str {
597            match self {
598                Status::Unknown => "STATUS_UNKNOWN",
599                Status::Creating => "CREATING",
600                Status::Running => "RUNNING",
601                Status::Error => "ERROR",
602                Status::Updating => "UPDATING",
603                Status::Stopping => "STOPPING",
604                Status::Stopped => "STOPPED",
605                Status::Starting => "STARTING",
606            }
607        }
608        /// Creates an enum from field names used in the ProtoBuf definition.
609        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
610            match value {
611                "STATUS_UNKNOWN" => Some(Self::Unknown),
612                "CREATING" => Some(Self::Creating),
613                "RUNNING" => Some(Self::Running),
614                "ERROR" => Some(Self::Error),
615                "UPDATING" => Some(Self::Updating),
616                "STOPPING" => Some(Self::Stopping),
617                "STOPPED" => Some(Self::Stopped),
618                "STARTING" => Some(Self::Starting),
619                _ => None,
620            }
621        }
622    }
623}
624/// Monitoring system.
625#[allow(clippy::derive_partial_eq_without_eq)]
626#[derive(Clone, PartialEq, ::prost::Message)]
627pub struct Monitoring {
628    /// Name of the monitoring system.
629    #[prost(string, tag = "1")]
630    pub name: ::prost::alloc::string::String,
631    /// Description of the monitoring system.
632    #[prost(string, tag = "2")]
633    pub description: ::prost::alloc::string::String,
634    /// Link to the monitoring system charts for the MongoDB cluster.
635    #[prost(string, tag = "3")]
636    pub link: ::prost::alloc::string::String,
637}
638#[allow(clippy::derive_partial_eq_without_eq)]
639#[derive(Clone, PartialEq, ::prost::Message)]
640pub struct ClusterConfig {
641    /// Version of MongoDB server software. Possible values: `3.6`, `4.0`, `4.2`, `4.4`, `4.4-enterprise`, `5.0`, `5.0-enterprise`, `6.0`, `6.0-enterprise`, `7.0`, `7.0-enterprise`.
642    #[prost(string, tag = "1")]
643    pub version: ::prost::alloc::string::String,
644    /// MongoDB feature compatibility version. See usage details in [MongoDB documentation](<https://docs.mongodb.com/manual/reference/command/setFeatureCompatibilityVersion/>).
645    ///
646    /// Possible values:
647    /// * `3.6` - persist data compatibility for version 3.6. After setting this option the data will not be compatible with 3.4 or lower.
648    /// * `4.0` - persist data compatibility for version 4.0. After setting this option the data will not be compatible with 3.6 or lower.
649    /// * `4.2` - persist data compatibility for version 4.2. After setting this option the data will not be compatible with 4.0 or lower.
650    /// * `4.4` - persist data compatibility for version 4.4. After setting this option the data will not be compatible with 4.2 or lower.
651    /// * `5.0` - persist data compatibility for version 5.0. After setting this option the data will not be compatible with 5.0 or lower.
652    /// * `6.0` - persist data compatibility for version 6.0. After setting this option the data will not be compatible with 6.0 or lower.
653    #[prost(string, tag = "5")]
654    pub feature_compatibility_version: ::prost::alloc::string::String,
655    /// Time to start the daily backup, in the UTC timezone.
656    #[prost(message, optional, tag = "3")]
657    pub backup_window_start: ::core::option::Option<
658        super::super::super::super::super::google::r#type::TimeOfDay,
659    >,
660    /// Retain period of automatically created backup in days
661    #[prost(message, optional, tag = "9")]
662    pub backup_retain_period_days: ::core::option::Option<i64>,
663    /// Performance Diagnostic
664    #[prost(message, optional, tag = "13")]
665    pub performance_diagnostics: ::core::option::Option<PerformanceDiagnosticsConfig>,
666    /// Access policy to DB
667    #[prost(message, optional, tag = "6")]
668    pub access: ::core::option::Option<Access>,
669    /// Configuration and resource allocation for a MongoDB Enterprise cluster.
670    #[prost(message, optional, tag = "19")]
671    pub mongodb_config: ::core::option::Option<Mongodb>,
672    /// Configuration for MongoDB servers in the cluster.
673    #[prost(oneof = "cluster_config::Mongodb", tags = "2, 4, 7, 8, 10, 14, 11, 12, 15")]
674    pub mongodb: ::core::option::Option<cluster_config::Mongodb>,
675}
676/// Nested message and enum types in `ClusterConfig`.
677pub mod cluster_config {
678    /// Configuration for MongoDB servers in the cluster.
679    #[allow(clippy::derive_partial_eq_without_eq)]
680    #[derive(Clone, PartialEq, ::prost::Oneof)]
681    pub enum Mongodb {
682        /// Configuration and resource allocation for a MongoDB 3.6 cluster.
683        #[prost(message, tag = "2")]
684        Mongodb36(super::Mongodb36),
685        /// Configuration and resource allocation for a MongoDB 4.0 cluster.
686        #[prost(message, tag = "4")]
687        Mongodb40(super::Mongodb40),
688        /// Configuration and resource allocation for a MongoDB 4.2 cluster.
689        #[prost(message, tag = "7")]
690        Mongodb42(super::Mongodb42),
691        /// Configuration and resource allocation for a MongoDB 4.4 cluster.
692        #[prost(message, tag = "8")]
693        Mongodb44(super::Mongodb44),
694        /// Configuration and resource allocation for a MongoDB 5.0 cluster.
695        #[prost(message, tag = "10")]
696        Mongodb50(super::Mongodb50),
697        /// Configuration and resource allocation for a MongoDB 6.0 cluster.
698        #[prost(message, tag = "14")]
699        Mongodb60(super::Mongodb60),
700        /// Configuration and resource allocation for a MongoDB 4.4 Enterprise cluster.
701        #[prost(message, tag = "11")]
702        Mongodb44Enterprise(super::Mongodb44Enterprise),
703        /// Configuration and resource allocation for a MongoDB 5.0 Enterprise cluster.
704        #[prost(message, tag = "12")]
705        Mongodb50Enterprise(super::Mongodb50Enterprise),
706        /// Configuration and resource allocation for a MongoDB 6.0 Enterprise cluster.
707        #[prost(message, tag = "15")]
708        Mongodb60Enterprise(super::Mongodb60Enterprise),
709    }
710}
711#[allow(clippy::derive_partial_eq_without_eq)]
712#[derive(Clone, PartialEq, ::prost::Message)]
713pub struct Mongodb36 {
714    /// Configuration and resource allocation for mongod in a MongoDB 3.6 cluster.
715    #[prost(message, optional, tag = "1")]
716    pub mongod: ::core::option::Option<mongodb3_6::Mongod>,
717    /// Configuration and resource allocation for mongocfg in a MongoDB 3.6 cluster.
718    #[prost(message, optional, tag = "2")]
719    pub mongocfg: ::core::option::Option<mongodb3_6::MongoCfg>,
720    /// Configuration and resource allocation for mongos in a MongoDB 3.6 cluster.
721    #[prost(message, optional, tag = "3")]
722    pub mongos: ::core::option::Option<mongodb3_6::Mongos>,
723    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) in a MongoDB 3.6 cluster.
724    #[prost(message, optional, tag = "4")]
725    pub mongoinfra: ::core::option::Option<mongodb3_6::MongoInfra>,
726}
727/// Nested message and enum types in `Mongodb3_6`.
728pub mod mongodb3_6 {
729    #[allow(clippy::derive_partial_eq_without_eq)]
730    #[derive(Clone, PartialEq, ::prost::Message)]
731    pub struct Mongod {
732        /// Configuration for a mongod 3.6 hosts.
733        #[prost(message, optional, tag = "1")]
734        pub config: ::core::option::Option<super::config::MongodConfigSet36>,
735        /// Resources allocated to MongoDB hosts.
736        #[prost(message, optional, tag = "2")]
737        pub resources: ::core::option::Option<super::Resources>,
738        /// Disk size autoscaling settings
739        #[prost(message, optional, tag = "3")]
740        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
741    }
742    #[allow(clippy::derive_partial_eq_without_eq)]
743    #[derive(Clone, PartialEq, ::prost::Message)]
744    pub struct MongoCfg {
745        #[prost(message, optional, tag = "1")]
746        pub config: ::core::option::Option<super::config::MongoCfgConfigSet36>,
747        /// Resources allocated to mongocfg hosts.
748        #[prost(message, optional, tag = "2")]
749        pub resources: ::core::option::Option<super::Resources>,
750        /// Disk size autoscaling settings
751        #[prost(message, optional, tag = "3")]
752        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
753    }
754    #[allow(clippy::derive_partial_eq_without_eq)]
755    #[derive(Clone, PartialEq, ::prost::Message)]
756    pub struct Mongos {
757        #[prost(message, optional, tag = "1")]
758        pub config: ::core::option::Option<super::config::MongosConfigSet36>,
759        /// Resources allocated to mongos hosts.
760        #[prost(message, optional, tag = "2")]
761        pub resources: ::core::option::Option<super::Resources>,
762        /// Disk size autoscaling settings
763        #[prost(message, optional, tag = "3")]
764        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
765    }
766    #[allow(clippy::derive_partial_eq_without_eq)]
767    #[derive(Clone, PartialEq, ::prost::Message)]
768    pub struct MongoInfra {
769        #[prost(message, optional, tag = "1")]
770        pub config_mongos: ::core::option::Option<super::config::MongosConfigSet36>,
771        #[prost(message, optional, tag = "2")]
772        pub config_mongocfg: ::core::option::Option<super::config::MongoCfgConfigSet36>,
773        /// Resources allocated to mongoinfra (mongos+mongocfg) hosts.
774        #[prost(message, optional, tag = "3")]
775        pub resources: ::core::option::Option<super::Resources>,
776        /// Disk size autoscaling settings
777        #[prost(message, optional, tag = "4")]
778        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
779    }
780}
781#[allow(clippy::derive_partial_eq_without_eq)]
782#[derive(Clone, PartialEq, ::prost::Message)]
783pub struct Mongodb40 {
784    /// Configuration and resource allocation for mongod in a MongoDB 4.0 cluster.
785    #[prost(message, optional, tag = "1")]
786    pub mongod: ::core::option::Option<mongodb4_0::Mongod>,
787    /// Configuration and resource allocation for mongocfg in a MongoDB 4.0 cluster.
788    #[prost(message, optional, tag = "2")]
789    pub mongocfg: ::core::option::Option<mongodb4_0::MongoCfg>,
790    /// Configuration and resource allocation for mongos in a MongoDB 4.0 cluster.
791    #[prost(message, optional, tag = "3")]
792    pub mongos: ::core::option::Option<mongodb4_0::Mongos>,
793    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) in a MongoDB 4.0 cluster.
794    #[prost(message, optional, tag = "4")]
795    pub mongoinfra: ::core::option::Option<mongodb4_0::MongoInfra>,
796}
797/// Nested message and enum types in `Mongodb4_0`.
798pub mod mongodb4_0 {
799    #[allow(clippy::derive_partial_eq_without_eq)]
800    #[derive(Clone, PartialEq, ::prost::Message)]
801    pub struct Mongod {
802        /// Configuration for mongod 4.0 hosts.
803        #[prost(message, optional, tag = "1")]
804        pub config: ::core::option::Option<super::config::MongodConfigSet40>,
805        /// Resources allocated to mongod hosts.
806        #[prost(message, optional, tag = "2")]
807        pub resources: ::core::option::Option<super::Resources>,
808        /// Disk size autoscaling settings
809        #[prost(message, optional, tag = "3")]
810        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
811    }
812    #[allow(clippy::derive_partial_eq_without_eq)]
813    #[derive(Clone, PartialEq, ::prost::Message)]
814    pub struct MongoCfg {
815        /// Configuration for mongocfg 4.0 hosts.
816        #[prost(message, optional, tag = "1")]
817        pub config: ::core::option::Option<super::config::MongoCfgConfigSet40>,
818        /// Resources allocated to mongocfg hosts.
819        #[prost(message, optional, tag = "2")]
820        pub resources: ::core::option::Option<super::Resources>,
821        /// Disk size autoscaling settings
822        #[prost(message, optional, tag = "3")]
823        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
824    }
825    #[allow(clippy::derive_partial_eq_without_eq)]
826    #[derive(Clone, PartialEq, ::prost::Message)]
827    pub struct Mongos {
828        /// Configuration for mongos 4.0 hosts.
829        #[prost(message, optional, tag = "1")]
830        pub config: ::core::option::Option<super::config::MongosConfigSet40>,
831        /// Resources allocated to mongos hosts.
832        #[prost(message, optional, tag = "2")]
833        pub resources: ::core::option::Option<super::Resources>,
834        /// Disk size autoscaling settings
835        #[prost(message, optional, tag = "3")]
836        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
837    }
838    #[allow(clippy::derive_partial_eq_without_eq)]
839    #[derive(Clone, PartialEq, ::prost::Message)]
840    pub struct MongoInfra {
841        #[prost(message, optional, tag = "1")]
842        pub config_mongos: ::core::option::Option<super::config::MongosConfigSet40>,
843        #[prost(message, optional, tag = "2")]
844        pub config_mongocfg: ::core::option::Option<super::config::MongoCfgConfigSet40>,
845        /// Resources allocated to mongoinfra (mongos+mongocfg) hosts.
846        #[prost(message, optional, tag = "3")]
847        pub resources: ::core::option::Option<super::Resources>,
848        /// Disk size autoscaling settings
849        #[prost(message, optional, tag = "4")]
850        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
851    }
852}
853#[allow(clippy::derive_partial_eq_without_eq)]
854#[derive(Clone, PartialEq, ::prost::Message)]
855pub struct Mongodb42 {
856    /// Configuration and resource allocation for mongod in a MongoDB 4.2 cluster.
857    #[prost(message, optional, tag = "1")]
858    pub mongod: ::core::option::Option<mongodb4_2::Mongod>,
859    /// Configuration and resource allocation for mongocfg in a MongoDB 4.2 cluster.
860    #[prost(message, optional, tag = "2")]
861    pub mongocfg: ::core::option::Option<mongodb4_2::MongoCfg>,
862    /// Configuration and resource allocation for mongos in a MongoDB 4.2 cluster.
863    #[prost(message, optional, tag = "3")]
864    pub mongos: ::core::option::Option<mongodb4_2::Mongos>,
865    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) in a MongoDB 4.2 cluster.
866    #[prost(message, optional, tag = "4")]
867    pub mongoinfra: ::core::option::Option<mongodb4_2::MongoInfra>,
868}
869/// Nested message and enum types in `Mongodb4_2`.
870pub mod mongodb4_2 {
871    #[allow(clippy::derive_partial_eq_without_eq)]
872    #[derive(Clone, PartialEq, ::prost::Message)]
873    pub struct Mongod {
874        /// Configuration for mongod 4.2 hosts.
875        #[prost(message, optional, tag = "1")]
876        pub config: ::core::option::Option<super::config::MongodConfigSet42>,
877        /// Resources allocated to mongod hosts.
878        #[prost(message, optional, tag = "2")]
879        pub resources: ::core::option::Option<super::Resources>,
880        /// Disk size autoscaling settings
881        #[prost(message, optional, tag = "3")]
882        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
883    }
884    #[allow(clippy::derive_partial_eq_without_eq)]
885    #[derive(Clone, PartialEq, ::prost::Message)]
886    pub struct MongoCfg {
887        /// Configuration for mongocfg 4.2 hosts.
888        #[prost(message, optional, tag = "1")]
889        pub config: ::core::option::Option<super::config::MongoCfgConfigSet42>,
890        /// Resources allocated to mongocfg hosts.
891        #[prost(message, optional, tag = "2")]
892        pub resources: ::core::option::Option<super::Resources>,
893        /// Disk size autoscaling settings
894        #[prost(message, optional, tag = "3")]
895        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
896    }
897    #[allow(clippy::derive_partial_eq_without_eq)]
898    #[derive(Clone, PartialEq, ::prost::Message)]
899    pub struct Mongos {
900        /// Configuration for mongos 4.2 hosts.
901        #[prost(message, optional, tag = "1")]
902        pub config: ::core::option::Option<super::config::MongosConfigSet42>,
903        /// Resources allocated to mongos hosts.
904        #[prost(message, optional, tag = "2")]
905        pub resources: ::core::option::Option<super::Resources>,
906        /// Disk size autoscaling settings
907        #[prost(message, optional, tag = "3")]
908        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
909    }
910    #[allow(clippy::derive_partial_eq_without_eq)]
911    #[derive(Clone, PartialEq, ::prost::Message)]
912    pub struct MongoInfra {
913        #[prost(message, optional, tag = "1")]
914        pub config_mongos: ::core::option::Option<super::config::MongosConfigSet42>,
915        #[prost(message, optional, tag = "2")]
916        pub config_mongocfg: ::core::option::Option<super::config::MongoCfgConfigSet42>,
917        /// Resources allocated to mongoinfra (mongos+mongocfg) hosts.
918        #[prost(message, optional, tag = "3")]
919        pub resources: ::core::option::Option<super::Resources>,
920        /// Disk size autoscaling settings
921        #[prost(message, optional, tag = "4")]
922        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
923    }
924}
925#[allow(clippy::derive_partial_eq_without_eq)]
926#[derive(Clone, PartialEq, ::prost::Message)]
927pub struct Mongodb44 {
928    /// Configuration and resource allocation for mongod in a MongoDB 4.4 cluster.
929    #[prost(message, optional, tag = "1")]
930    pub mongod: ::core::option::Option<mongodb4_4::Mongod>,
931    /// Configuration and resource allocation for mongocfg in a MongoDB 4.4 cluster.
932    #[prost(message, optional, tag = "2")]
933    pub mongocfg: ::core::option::Option<mongodb4_4::MongoCfg>,
934    /// Configuration and resource allocation for mongos in a MongoDB 4.4 cluster.
935    #[prost(message, optional, tag = "3")]
936    pub mongos: ::core::option::Option<mongodb4_4::Mongos>,
937    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) in a MongoDB 4.4 cluster.
938    #[prost(message, optional, tag = "4")]
939    pub mongoinfra: ::core::option::Option<mongodb4_4::MongoInfra>,
940}
941/// Nested message and enum types in `Mongodb4_4`.
942pub mod mongodb4_4 {
943    #[allow(clippy::derive_partial_eq_without_eq)]
944    #[derive(Clone, PartialEq, ::prost::Message)]
945    pub struct Mongod {
946        /// Configuration for mongod 4.4 hosts.
947        #[prost(message, optional, tag = "1")]
948        pub config: ::core::option::Option<super::config::MongodConfigSet44>,
949        /// Resources allocated to mongod hosts.
950        #[prost(message, optional, tag = "2")]
951        pub resources: ::core::option::Option<super::Resources>,
952        /// Disk size autoscaling settings
953        #[prost(message, optional, tag = "3")]
954        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
955    }
956    #[allow(clippy::derive_partial_eq_without_eq)]
957    #[derive(Clone, PartialEq, ::prost::Message)]
958    pub struct MongoCfg {
959        /// Configuration for mongocfg 4.4 hosts.
960        #[prost(message, optional, tag = "1")]
961        pub config: ::core::option::Option<super::config::MongoCfgConfigSet44>,
962        /// Resources allocated to mongocfg hosts.
963        #[prost(message, optional, tag = "2")]
964        pub resources: ::core::option::Option<super::Resources>,
965        /// Disk size autoscaling settings
966        #[prost(message, optional, tag = "3")]
967        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
968    }
969    #[allow(clippy::derive_partial_eq_without_eq)]
970    #[derive(Clone, PartialEq, ::prost::Message)]
971    pub struct Mongos {
972        /// Configuration for mongos 4.4 hosts.
973        #[prost(message, optional, tag = "1")]
974        pub config: ::core::option::Option<super::config::MongosConfigSet44>,
975        /// Resources allocated to mongos hosts.
976        #[prost(message, optional, tag = "2")]
977        pub resources: ::core::option::Option<super::Resources>,
978        /// Disk size autoscaling settings
979        #[prost(message, optional, tag = "3")]
980        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
981    }
982    #[allow(clippy::derive_partial_eq_without_eq)]
983    #[derive(Clone, PartialEq, ::prost::Message)]
984    pub struct MongoInfra {
985        #[prost(message, optional, tag = "1")]
986        pub config_mongos: ::core::option::Option<super::config::MongosConfigSet44>,
987        #[prost(message, optional, tag = "2")]
988        pub config_mongocfg: ::core::option::Option<super::config::MongoCfgConfigSet44>,
989        /// Resources allocated to mongoinfra (mongos+mongocfg) hosts.
990        #[prost(message, optional, tag = "3")]
991        pub resources: ::core::option::Option<super::Resources>,
992        /// Disk size autoscaling settings
993        #[prost(message, optional, tag = "4")]
994        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
995    }
996}
997#[allow(clippy::derive_partial_eq_without_eq)]
998#[derive(Clone, PartialEq, ::prost::Message)]
999pub struct Mongodb44Enterprise {
1000    /// Configuration and resource allocation for mongod in a MongoDB 4.4 cluster.
1001    #[prost(message, optional, tag = "1")]
1002    pub mongod: ::core::option::Option<mongodb4_4_enterprise::Mongod>,
1003    /// Configuration and resource allocation for mongocfg in a MongoDB 4.4 cluster.
1004    #[prost(message, optional, tag = "2")]
1005    pub mongocfg: ::core::option::Option<mongodb4_4_enterprise::MongoCfg>,
1006    /// Configuration and resource allocation for mongos in a MongoDB 4.4 cluster.
1007    #[prost(message, optional, tag = "3")]
1008    pub mongos: ::core::option::Option<mongodb4_4_enterprise::Mongos>,
1009    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) in a MongoDB 4.4 cluster.
1010    #[prost(message, optional, tag = "4")]
1011    pub mongoinfra: ::core::option::Option<mongodb4_4_enterprise::MongoInfra>,
1012}
1013/// Nested message and enum types in `Mongodb4_4_enterprise`.
1014pub mod mongodb4_4_enterprise {
1015    #[allow(clippy::derive_partial_eq_without_eq)]
1016    #[derive(Clone, PartialEq, ::prost::Message)]
1017    pub struct Mongod {
1018        /// Configuration for mongod 4.4 hosts.
1019        #[prost(message, optional, tag = "1")]
1020        pub config: ::core::option::Option<super::config::MongodConfigSet44Enterprise>,
1021        /// Resources allocated to mongod hosts.
1022        #[prost(message, optional, tag = "2")]
1023        pub resources: ::core::option::Option<super::Resources>,
1024        /// Disk size autoscaling settings
1025        #[prost(message, optional, tag = "3")]
1026        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1027    }
1028    #[allow(clippy::derive_partial_eq_without_eq)]
1029    #[derive(Clone, PartialEq, ::prost::Message)]
1030    pub struct MongoCfg {
1031        /// Configuration for mongocfg 4.4 hosts.
1032        #[prost(message, optional, tag = "1")]
1033        pub config: ::core::option::Option<super::config::MongoCfgConfigSet44Enterprise>,
1034        /// Resources allocated to mongocfg hosts.
1035        #[prost(message, optional, tag = "2")]
1036        pub resources: ::core::option::Option<super::Resources>,
1037        /// Disk size autoscaling settings
1038        #[prost(message, optional, tag = "3")]
1039        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1040    }
1041    #[allow(clippy::derive_partial_eq_without_eq)]
1042    #[derive(Clone, PartialEq, ::prost::Message)]
1043    pub struct Mongos {
1044        /// Configuration for mongos 4.4 hosts.
1045        #[prost(message, optional, tag = "1")]
1046        pub config: ::core::option::Option<super::config::MongosConfigSet44Enterprise>,
1047        /// Resources allocated to mongos hosts.
1048        #[prost(message, optional, tag = "2")]
1049        pub resources: ::core::option::Option<super::Resources>,
1050        /// Disk size autoscaling settings
1051        #[prost(message, optional, tag = "3")]
1052        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1053    }
1054    #[allow(clippy::derive_partial_eq_without_eq)]
1055    #[derive(Clone, PartialEq, ::prost::Message)]
1056    pub struct MongoInfra {
1057        #[prost(message, optional, tag = "1")]
1058        pub config_mongos: ::core::option::Option<
1059            super::config::MongosConfigSet44Enterprise,
1060        >,
1061        #[prost(message, optional, tag = "2")]
1062        pub config_mongocfg: ::core::option::Option<
1063            super::config::MongoCfgConfigSet44Enterprise,
1064        >,
1065        /// Resources allocated to mongoinfra (mongos+mongocfg) hosts.
1066        #[prost(message, optional, tag = "3")]
1067        pub resources: ::core::option::Option<super::Resources>,
1068        /// Disk size autoscaling settings
1069        #[prost(message, optional, tag = "4")]
1070        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1071    }
1072}
1073#[allow(clippy::derive_partial_eq_without_eq)]
1074#[derive(Clone, PartialEq, ::prost::Message)]
1075pub struct Mongodb50 {
1076    /// Configuration and resource allocation for mongod in a MongoDB 5.0 cluster.
1077    #[prost(message, optional, tag = "1")]
1078    pub mongod: ::core::option::Option<mongodb5_0::Mongod>,
1079    /// Configuration and resource allocation for mongocfg in a MongoDB 5.0 cluster.
1080    #[prost(message, optional, tag = "2")]
1081    pub mongocfg: ::core::option::Option<mongodb5_0::MongoCfg>,
1082    /// Configuration and resource allocation for mongos in a MongoDB 5.0 cluster.
1083    #[prost(message, optional, tag = "3")]
1084    pub mongos: ::core::option::Option<mongodb5_0::Mongos>,
1085    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) in a MongoDB 5.0 cluster.
1086    #[prost(message, optional, tag = "4")]
1087    pub mongoinfra: ::core::option::Option<mongodb5_0::MongoInfra>,
1088}
1089/// Nested message and enum types in `Mongodb5_0`.
1090pub mod mongodb5_0 {
1091    #[allow(clippy::derive_partial_eq_without_eq)]
1092    #[derive(Clone, PartialEq, ::prost::Message)]
1093    pub struct Mongod {
1094        /// Configuration for mongod 5.0 hosts.
1095        #[prost(message, optional, tag = "1")]
1096        pub config: ::core::option::Option<super::config::MongodConfigSet50>,
1097        /// Resources allocated to mongod hosts.
1098        #[prost(message, optional, tag = "2")]
1099        pub resources: ::core::option::Option<super::Resources>,
1100        /// Disk size autoscaling settings
1101        #[prost(message, optional, tag = "3")]
1102        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1103    }
1104    #[allow(clippy::derive_partial_eq_without_eq)]
1105    #[derive(Clone, PartialEq, ::prost::Message)]
1106    pub struct MongoCfg {
1107        /// Configuration for mongocfg 5.0 hosts.
1108        #[prost(message, optional, tag = "1")]
1109        pub config: ::core::option::Option<super::config::MongoCfgConfigSet50>,
1110        /// Resources allocated to mongocfg hosts.
1111        #[prost(message, optional, tag = "2")]
1112        pub resources: ::core::option::Option<super::Resources>,
1113        /// Disk size autoscaling settings
1114        #[prost(message, optional, tag = "3")]
1115        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1116    }
1117    #[allow(clippy::derive_partial_eq_without_eq)]
1118    #[derive(Clone, PartialEq, ::prost::Message)]
1119    pub struct Mongos {
1120        /// Configuration for mongos 5.0 hosts.
1121        #[prost(message, optional, tag = "1")]
1122        pub config: ::core::option::Option<super::config::MongosConfigSet50>,
1123        /// Resources allocated to mongos hosts.
1124        #[prost(message, optional, tag = "2")]
1125        pub resources: ::core::option::Option<super::Resources>,
1126        /// Disk size autoscaling settings
1127        #[prost(message, optional, tag = "3")]
1128        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1129    }
1130    #[allow(clippy::derive_partial_eq_without_eq)]
1131    #[derive(Clone, PartialEq, ::prost::Message)]
1132    pub struct MongoInfra {
1133        #[prost(message, optional, tag = "1")]
1134        pub config_mongos: ::core::option::Option<super::config::MongosConfigSet50>,
1135        #[prost(message, optional, tag = "2")]
1136        pub config_mongocfg: ::core::option::Option<super::config::MongoCfgConfigSet50>,
1137        /// Resources allocated to mongoinfra (mongos+mongocfg) hosts.
1138        #[prost(message, optional, tag = "3")]
1139        pub resources: ::core::option::Option<super::Resources>,
1140        /// Disk size autoscaling settings
1141        #[prost(message, optional, tag = "4")]
1142        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1143    }
1144}
1145#[allow(clippy::derive_partial_eq_without_eq)]
1146#[derive(Clone, PartialEq, ::prost::Message)]
1147pub struct Mongodb50Enterprise {
1148    /// Configuration and resource allocation for mongod in a MongoDB 5.0 cluster.
1149    #[prost(message, optional, tag = "1")]
1150    pub mongod: ::core::option::Option<mongodb5_0_enterprise::Mongod>,
1151    /// Configuration and resource allocation for mongocfg in a MongoDB 5.0 cluster.
1152    #[prost(message, optional, tag = "2")]
1153    pub mongocfg: ::core::option::Option<mongodb5_0_enterprise::MongoCfg>,
1154    /// Configuration and resource allocation for mongos in a MongoDB 5.0 cluster.
1155    #[prost(message, optional, tag = "3")]
1156    pub mongos: ::core::option::Option<mongodb5_0_enterprise::Mongos>,
1157    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) in a MongoDB 5.0 cluster.
1158    #[prost(message, optional, tag = "4")]
1159    pub mongoinfra: ::core::option::Option<mongodb5_0_enterprise::MongoInfra>,
1160}
1161/// Nested message and enum types in `Mongodb5_0_enterprise`.
1162pub mod mongodb5_0_enterprise {
1163    #[allow(clippy::derive_partial_eq_without_eq)]
1164    #[derive(Clone, PartialEq, ::prost::Message)]
1165    pub struct Mongod {
1166        /// Configuration for mongod 5.0 hosts.
1167        #[prost(message, optional, tag = "1")]
1168        pub config: ::core::option::Option<super::config::MongodConfigSet50Enterprise>,
1169        /// Resources allocated to mongod hosts.
1170        #[prost(message, optional, tag = "2")]
1171        pub resources: ::core::option::Option<super::Resources>,
1172        /// Disk size autoscaling settings
1173        #[prost(message, optional, tag = "3")]
1174        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1175    }
1176    #[allow(clippy::derive_partial_eq_without_eq)]
1177    #[derive(Clone, PartialEq, ::prost::Message)]
1178    pub struct MongoCfg {
1179        /// Configuration for mongocfg 5.0 hosts.
1180        #[prost(message, optional, tag = "1")]
1181        pub config: ::core::option::Option<super::config::MongoCfgConfigSet50Enterprise>,
1182        /// Resources allocated to mongocfg hosts.
1183        #[prost(message, optional, tag = "2")]
1184        pub resources: ::core::option::Option<super::Resources>,
1185        /// Disk size autoscaling settings
1186        #[prost(message, optional, tag = "3")]
1187        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1188    }
1189    #[allow(clippy::derive_partial_eq_without_eq)]
1190    #[derive(Clone, PartialEq, ::prost::Message)]
1191    pub struct Mongos {
1192        /// Configuration for mongos 5.0 hosts.
1193        #[prost(message, optional, tag = "1")]
1194        pub config: ::core::option::Option<super::config::MongosConfigSet50Enterprise>,
1195        /// Resources allocated to mongos hosts.
1196        #[prost(message, optional, tag = "2")]
1197        pub resources: ::core::option::Option<super::Resources>,
1198        /// Disk size autoscaling settings
1199        #[prost(message, optional, tag = "3")]
1200        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1201    }
1202    #[allow(clippy::derive_partial_eq_without_eq)]
1203    #[derive(Clone, PartialEq, ::prost::Message)]
1204    pub struct MongoInfra {
1205        #[prost(message, optional, tag = "1")]
1206        pub config_mongos: ::core::option::Option<
1207            super::config::MongosConfigSet50Enterprise,
1208        >,
1209        #[prost(message, optional, tag = "2")]
1210        pub config_mongocfg: ::core::option::Option<
1211            super::config::MongoCfgConfigSet50Enterprise,
1212        >,
1213        /// Resources allocated to mongoinfra (mongos+mongocfg) hosts.
1214        #[prost(message, optional, tag = "3")]
1215        pub resources: ::core::option::Option<super::Resources>,
1216        /// Disk size autoscaling settings
1217        #[prost(message, optional, tag = "4")]
1218        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1219    }
1220}
1221#[allow(clippy::derive_partial_eq_without_eq)]
1222#[derive(Clone, PartialEq, ::prost::Message)]
1223pub struct Mongodb60 {
1224    /// Configuration and resource allocation for mongod in a MongoDB 6.0 cluster.
1225    #[prost(message, optional, tag = "1")]
1226    pub mongod: ::core::option::Option<mongodb6_0::Mongod>,
1227    /// Configuration and resource allocation for mongocfg in a MongoDB 6.0 cluster.
1228    #[prost(message, optional, tag = "2")]
1229    pub mongocfg: ::core::option::Option<mongodb6_0::MongoCfg>,
1230    /// Configuration and resource allocation for mongos in a MongoDB 6.0 cluster.
1231    #[prost(message, optional, tag = "3")]
1232    pub mongos: ::core::option::Option<mongodb6_0::Mongos>,
1233    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) in a MongoDB 6.0 cluster.
1234    #[prost(message, optional, tag = "4")]
1235    pub mongoinfra: ::core::option::Option<mongodb6_0::MongoInfra>,
1236}
1237/// Nested message and enum types in `Mongodb6_0`.
1238pub mod mongodb6_0 {
1239    #[allow(clippy::derive_partial_eq_without_eq)]
1240    #[derive(Clone, PartialEq, ::prost::Message)]
1241    pub struct Mongod {
1242        /// Configuration for mongod 6.0 hosts.
1243        #[prost(message, optional, tag = "1")]
1244        pub config: ::core::option::Option<super::config::MongodConfigSet60>,
1245        /// Resources allocated to mongod hosts.
1246        #[prost(message, optional, tag = "2")]
1247        pub resources: ::core::option::Option<super::Resources>,
1248        /// Disk size autoscaling settings
1249        #[prost(message, optional, tag = "3")]
1250        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1251    }
1252    #[allow(clippy::derive_partial_eq_without_eq)]
1253    #[derive(Clone, PartialEq, ::prost::Message)]
1254    pub struct MongoCfg {
1255        /// Configuration for mongocfg 6.0 hosts.
1256        #[prost(message, optional, tag = "1")]
1257        pub config: ::core::option::Option<super::config::MongoCfgConfigSet60>,
1258        /// Resources allocated to mongocfg hosts.
1259        #[prost(message, optional, tag = "2")]
1260        pub resources: ::core::option::Option<super::Resources>,
1261        /// Disk size autoscaling settings
1262        #[prost(message, optional, tag = "3")]
1263        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1264    }
1265    #[allow(clippy::derive_partial_eq_without_eq)]
1266    #[derive(Clone, PartialEq, ::prost::Message)]
1267    pub struct Mongos {
1268        /// Configuration for mongos 6.0 hosts.
1269        #[prost(message, optional, tag = "1")]
1270        pub config: ::core::option::Option<super::config::MongosConfigSet60>,
1271        /// Resources allocated to mongos hosts.
1272        #[prost(message, optional, tag = "2")]
1273        pub resources: ::core::option::Option<super::Resources>,
1274        /// Disk size autoscaling settings
1275        #[prost(message, optional, tag = "3")]
1276        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1277    }
1278    #[allow(clippy::derive_partial_eq_without_eq)]
1279    #[derive(Clone, PartialEq, ::prost::Message)]
1280    pub struct MongoInfra {
1281        #[prost(message, optional, tag = "1")]
1282        pub config_mongos: ::core::option::Option<super::config::MongosConfigSet60>,
1283        #[prost(message, optional, tag = "2")]
1284        pub config_mongocfg: ::core::option::Option<super::config::MongoCfgConfigSet60>,
1285        /// Resources allocated to mongoinfra (mongos+mongocfg) hosts.
1286        #[prost(message, optional, tag = "3")]
1287        pub resources: ::core::option::Option<super::Resources>,
1288        /// Disk size autoscaling settings
1289        #[prost(message, optional, tag = "4")]
1290        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1291    }
1292}
1293#[allow(clippy::derive_partial_eq_without_eq)]
1294#[derive(Clone, PartialEq, ::prost::Message)]
1295pub struct Mongodb60Enterprise {
1296    /// Configuration and resource allocation for mongod in a MongoDB 6.0 cluster.
1297    #[prost(message, optional, tag = "1")]
1298    pub mongod: ::core::option::Option<mongodb6_0_enterprise::Mongod>,
1299    /// Configuration and resource allocation for mongocfg in a MongoDB 6.0 cluster.
1300    #[prost(message, optional, tag = "2")]
1301    pub mongocfg: ::core::option::Option<mongodb6_0_enterprise::MongoCfg>,
1302    /// Configuration and resource allocation for mongos in a MongoDB 6.0 cluster.
1303    #[prost(message, optional, tag = "3")]
1304    pub mongos: ::core::option::Option<mongodb6_0_enterprise::Mongos>,
1305    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) in a MongoDB 6.0 cluster.
1306    #[prost(message, optional, tag = "4")]
1307    pub mongoinfra: ::core::option::Option<mongodb6_0_enterprise::MongoInfra>,
1308}
1309/// Nested message and enum types in `Mongodb6_0_enterprise`.
1310pub mod mongodb6_0_enterprise {
1311    #[allow(clippy::derive_partial_eq_without_eq)]
1312    #[derive(Clone, PartialEq, ::prost::Message)]
1313    pub struct Mongod {
1314        /// Configuration for mongod 6.0 hosts.
1315        #[prost(message, optional, tag = "1")]
1316        pub config: ::core::option::Option<super::config::MongodConfigSet60Enterprise>,
1317        /// Resources allocated to mongod hosts.
1318        #[prost(message, optional, tag = "2")]
1319        pub resources: ::core::option::Option<super::Resources>,
1320        /// Disk size autoscaling settings
1321        #[prost(message, optional, tag = "3")]
1322        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1323    }
1324    #[allow(clippy::derive_partial_eq_without_eq)]
1325    #[derive(Clone, PartialEq, ::prost::Message)]
1326    pub struct MongoCfg {
1327        /// Configuration for mongocfg 6.0 hosts.
1328        #[prost(message, optional, tag = "1")]
1329        pub config: ::core::option::Option<super::config::MongoCfgConfigSet60Enterprise>,
1330        /// Resources allocated to mongocfg hosts.
1331        #[prost(message, optional, tag = "2")]
1332        pub resources: ::core::option::Option<super::Resources>,
1333        /// Disk size autoscaling settings
1334        #[prost(message, optional, tag = "3")]
1335        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1336    }
1337    #[allow(clippy::derive_partial_eq_without_eq)]
1338    #[derive(Clone, PartialEq, ::prost::Message)]
1339    pub struct Mongos {
1340        /// Configuration for mongos 6.0 hosts.
1341        #[prost(message, optional, tag = "1")]
1342        pub config: ::core::option::Option<super::config::MongosConfigSet60Enterprise>,
1343        /// Resources allocated to mongos hosts.
1344        #[prost(message, optional, tag = "2")]
1345        pub resources: ::core::option::Option<super::Resources>,
1346        /// Disk size autoscaling settings
1347        #[prost(message, optional, tag = "3")]
1348        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1349    }
1350    #[allow(clippy::derive_partial_eq_without_eq)]
1351    #[derive(Clone, PartialEq, ::prost::Message)]
1352    pub struct MongoInfra {
1353        #[prost(message, optional, tag = "1")]
1354        pub config_mongos: ::core::option::Option<
1355            super::config::MongosConfigSet60Enterprise,
1356        >,
1357        #[prost(message, optional, tag = "2")]
1358        pub config_mongocfg: ::core::option::Option<
1359            super::config::MongoCfgConfigSet60Enterprise,
1360        >,
1361        /// Resources allocated to mongoinfra (mongos+mongocfg) hosts.
1362        #[prost(message, optional, tag = "3")]
1363        pub resources: ::core::option::Option<super::Resources>,
1364        /// Disk size autoscaling settings
1365        #[prost(message, optional, tag = "4")]
1366        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1367    }
1368}
1369#[allow(clippy::derive_partial_eq_without_eq)]
1370#[derive(Clone, PartialEq, ::prost::Message)]
1371pub struct Mongodb {
1372    /// Configuration and resource allocation for mongod in a MongoDB cluster.
1373    #[prost(message, optional, tag = "1")]
1374    pub mongod: ::core::option::Option<mongodb::Mongod>,
1375    /// Configuration and resource allocation for mongocfg in a MongoDB cluster.
1376    #[prost(message, optional, tag = "2")]
1377    pub mongocfg: ::core::option::Option<mongodb::MongoCfg>,
1378    /// Configuration and resource allocation for mongos in a MongoDB cluster.
1379    #[prost(message, optional, tag = "3")]
1380    pub mongos: ::core::option::Option<mongodb::Mongos>,
1381    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) in a MongoDB cluster.
1382    #[prost(message, optional, tag = "4")]
1383    pub mongoinfra: ::core::option::Option<mongodb::MongoInfra>,
1384}
1385/// Nested message and enum types in `Mongodb`.
1386pub mod mongodb {
1387    #[allow(clippy::derive_partial_eq_without_eq)]
1388    #[derive(Clone, PartialEq, ::prost::Message)]
1389    pub struct Mongod {
1390        /// Configuration for mongod hosts.
1391        #[prost(message, optional, tag = "1")]
1392        pub config: ::core::option::Option<super::config::MongodConfigSet>,
1393        /// Resources allocated to mongod hosts.
1394        #[prost(message, optional, tag = "2")]
1395        pub resources: ::core::option::Option<super::Resources>,
1396        /// Disk size autoscaling settings
1397        #[prost(message, optional, tag = "3")]
1398        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1399    }
1400    #[allow(clippy::derive_partial_eq_without_eq)]
1401    #[derive(Clone, PartialEq, ::prost::Message)]
1402    pub struct MongoCfg {
1403        /// Configuration for mongocfg hosts.
1404        #[prost(message, optional, tag = "1")]
1405        pub config: ::core::option::Option<super::config::MongoCfgConfigSet>,
1406        /// Resources allocated to mongocfg hosts.
1407        #[prost(message, optional, tag = "2")]
1408        pub resources: ::core::option::Option<super::Resources>,
1409        /// Disk size autoscaling settings
1410        #[prost(message, optional, tag = "3")]
1411        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1412    }
1413    #[allow(clippy::derive_partial_eq_without_eq)]
1414    #[derive(Clone, PartialEq, ::prost::Message)]
1415    pub struct Mongos {
1416        /// Configuration for mongos hosts.
1417        #[prost(message, optional, tag = "1")]
1418        pub config: ::core::option::Option<super::config::MongosConfigSet>,
1419        /// Resources allocated to mongos hosts.
1420        #[prost(message, optional, tag = "2")]
1421        pub resources: ::core::option::Option<super::Resources>,
1422        /// Disk size autoscaling settings
1423        #[prost(message, optional, tag = "3")]
1424        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1425    }
1426    #[allow(clippy::derive_partial_eq_without_eq)]
1427    #[derive(Clone, PartialEq, ::prost::Message)]
1428    pub struct MongoInfra {
1429        #[prost(message, optional, tag = "1")]
1430        pub config_mongos: ::core::option::Option<super::config::MongosConfigSet>,
1431        #[prost(message, optional, tag = "2")]
1432        pub config_mongocfg: ::core::option::Option<super::config::MongoCfgConfigSet>,
1433        /// Resources allocated to mongoinfra (mongos+mongocfg) hosts.
1434        #[prost(message, optional, tag = "3")]
1435        pub resources: ::core::option::Option<super::Resources>,
1436        /// Disk size autoscaling settings
1437        #[prost(message, optional, tag = "4")]
1438        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
1439    }
1440}
1441#[allow(clippy::derive_partial_eq_without_eq)]
1442#[derive(Clone, PartialEq, ::prost::Message)]
1443pub struct Shard {
1444    /// Name of the shard.
1445    #[prost(string, tag = "1")]
1446    pub name: ::prost::alloc::string::String,
1447    /// ID of the cluster that the shard belongs to.
1448    #[prost(string, tag = "2")]
1449    pub cluster_id: ::prost::alloc::string::String,
1450}
1451#[allow(clippy::derive_partial_eq_without_eq)]
1452#[derive(Clone, PartialEq, ::prost::Message)]
1453pub struct Host {
1454    /// Name of the MongoDB host. The host name is assigned by MDB at creation time, and cannot be changed.
1455    /// 1-63 characters long.
1456    ///
1457    /// The name is unique across all MDB hosts that exist on the platform, as it defines the FQDN of the host.
1458    #[prost(string, tag = "1")]
1459    pub name: ::prost::alloc::string::String,
1460    /// ID of the MongoDB host. The ID is assigned by MDB at creation time.
1461    #[prost(string, tag = "2")]
1462    pub cluster_id: ::prost::alloc::string::String,
1463    /// ID of the availability zone where the MongoDB host resides.
1464    #[prost(string, tag = "3")]
1465    pub zone_id: ::prost::alloc::string::String,
1466    /// Resources allocated to the MongoDB host.
1467    #[prost(message, optional, tag = "4")]
1468    pub resources: ::core::option::Option<Resources>,
1469    /// Role of the host in the cluster. If the field has default value, it is not returned in the response.
1470    #[prost(enumeration = "host::Role", tag = "5")]
1471    pub role: i32,
1472    /// Aggregated health of the host. If the field has default value, it is not returned in the response.
1473    #[prost(enumeration = "host::Health", tag = "6")]
1474    pub health: i32,
1475    /// Services provided by the host.
1476    #[prost(message, repeated, tag = "7")]
1477    pub services: ::prost::alloc::vec::Vec<Service>,
1478    /// ID of the subnet that the host belongs to.
1479    #[prost(string, tag = "8")]
1480    pub subnet_id: ::prost::alloc::string::String,
1481    /// Flag showing public IP assignment status to this host.
1482    #[prost(bool, tag = "9")]
1483    pub assign_public_ip: bool,
1484    /// Shard which this host belongs to.
1485    #[prost(string, tag = "10")]
1486    pub shard_name: ::prost::alloc::string::String,
1487    /// Host type. If the field has default value, it is not returned in the response.
1488    #[prost(enumeration = "host::Type", tag = "11")]
1489    pub r#type: i32,
1490    /// Host parameters
1491    #[prost(message, optional, tag = "12")]
1492    pub host_parameters: ::core::option::Option<host::HostParameters>,
1493}
1494/// Nested message and enum types in `Host`.
1495pub mod host {
1496    #[allow(clippy::derive_partial_eq_without_eq)]
1497    #[derive(Clone, PartialEq, ::prost::Message)]
1498    pub struct HostParameters {
1499        #[prost(bool, tag = "1")]
1500        pub hidden: bool,
1501        #[prost(int64, tag = "2")]
1502        pub secondary_delay_secs: i64,
1503        #[prost(double, tag = "3")]
1504        pub priority: f64,
1505        #[prost(map = "string, string", tag = "4")]
1506        pub tags: ::std::collections::HashMap<
1507            ::prost::alloc::string::String,
1508            ::prost::alloc::string::String,
1509        >,
1510    }
1511    #[derive(
1512        Clone,
1513        Copy,
1514        Debug,
1515        PartialEq,
1516        Eq,
1517        Hash,
1518        PartialOrd,
1519        Ord,
1520        ::prost::Enumeration
1521    )]
1522    #[repr(i32)]
1523    pub enum Type {
1524        /// Type of the host is unspecified. Default value.
1525        Unspecified = 0,
1526        /// A mongod host.
1527        Mongod = 1,
1528        /// A mongos host.
1529        Mongos = 2,
1530        /// A mongocfg host.
1531        Mongocfg = 3,
1532        /// A mongoinfra (mongos+mongocfg) host.
1533        Mongoinfra = 4,
1534    }
1535    impl Type {
1536        /// String value of the enum field names used in the ProtoBuf definition.
1537        ///
1538        /// The values are not transformed in any way and thus are considered stable
1539        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1540        pub fn as_str_name(&self) -> &'static str {
1541            match self {
1542                Type::Unspecified => "TYPE_UNSPECIFIED",
1543                Type::Mongod => "MONGOD",
1544                Type::Mongos => "MONGOS",
1545                Type::Mongocfg => "MONGOCFG",
1546                Type::Mongoinfra => "MONGOINFRA",
1547            }
1548        }
1549        /// Creates an enum from field names used in the ProtoBuf definition.
1550        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1551            match value {
1552                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1553                "MONGOD" => Some(Self::Mongod),
1554                "MONGOS" => Some(Self::Mongos),
1555                "MONGOCFG" => Some(Self::Mongocfg),
1556                "MONGOINFRA" => Some(Self::Mongoinfra),
1557                _ => None,
1558            }
1559        }
1560    }
1561    #[derive(
1562        Clone,
1563        Copy,
1564        Debug,
1565        PartialEq,
1566        Eq,
1567        Hash,
1568        PartialOrd,
1569        Ord,
1570        ::prost::Enumeration
1571    )]
1572    #[repr(i32)]
1573    pub enum Role {
1574        /// Role of the host in the cluster is unknown. Default value.
1575        Unknown = 0,
1576        /// Host is the primary MongoDB server in the cluster.
1577        Primary = 1,
1578        /// Host is a secondary MongoDB server in the cluster.
1579        Secondary = 2,
1580    }
1581    impl Role {
1582        /// String value of the enum field names used in the ProtoBuf definition.
1583        ///
1584        /// The values are not transformed in any way and thus are considered stable
1585        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1586        pub fn as_str_name(&self) -> &'static str {
1587            match self {
1588                Role::Unknown => "ROLE_UNKNOWN",
1589                Role::Primary => "PRIMARY",
1590                Role::Secondary => "SECONDARY",
1591            }
1592        }
1593        /// Creates an enum from field names used in the ProtoBuf definition.
1594        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1595            match value {
1596                "ROLE_UNKNOWN" => Some(Self::Unknown),
1597                "PRIMARY" => Some(Self::Primary),
1598                "SECONDARY" => Some(Self::Secondary),
1599                _ => None,
1600            }
1601        }
1602    }
1603    #[derive(
1604        Clone,
1605        Copy,
1606        Debug,
1607        PartialEq,
1608        Eq,
1609        Hash,
1610        PartialOrd,
1611        Ord,
1612        ::prost::Enumeration
1613    )]
1614    #[repr(i32)]
1615    pub enum Health {
1616        /// Health of the host is unknown. Default value.
1617        Unknown = 0,
1618        /// The host is performing all its functions normally.
1619        Alive = 1,
1620        /// The host is inoperable, and cannot perform any of its essential functions.
1621        Dead = 2,
1622        /// The host is degraded, and can perform only some of its essential functions.
1623        Degraded = 3,
1624    }
1625    impl Health {
1626        /// String value of the enum field names used in the ProtoBuf definition.
1627        ///
1628        /// The values are not transformed in any way and thus are considered stable
1629        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1630        pub fn as_str_name(&self) -> &'static str {
1631            match self {
1632                Health::Unknown => "HEALTH_UNKNOWN",
1633                Health::Alive => "ALIVE",
1634                Health::Dead => "DEAD",
1635                Health::Degraded => "DEGRADED",
1636            }
1637        }
1638        /// Creates an enum from field names used in the ProtoBuf definition.
1639        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1640            match value {
1641                "HEALTH_UNKNOWN" => Some(Self::Unknown),
1642                "ALIVE" => Some(Self::Alive),
1643                "DEAD" => Some(Self::Dead),
1644                "DEGRADED" => Some(Self::Degraded),
1645                _ => None,
1646            }
1647        }
1648    }
1649}
1650#[allow(clippy::derive_partial_eq_without_eq)]
1651#[derive(Clone, PartialEq, ::prost::Message)]
1652pub struct Service {
1653    /// Type of the service provided by the host. If the field has default value, it is not returned in the response.
1654    #[prost(enumeration = "service::Type", tag = "1")]
1655    pub r#type: i32,
1656    /// Aggregated health of the service. If the field has default value, it is not returned in the response.
1657    #[prost(enumeration = "service::Health", tag = "2")]
1658    pub health: i32,
1659}
1660/// Nested message and enum types in `Service`.
1661pub mod service {
1662    #[derive(
1663        Clone,
1664        Copy,
1665        Debug,
1666        PartialEq,
1667        Eq,
1668        Hash,
1669        PartialOrd,
1670        Ord,
1671        ::prost::Enumeration
1672    )]
1673    #[repr(i32)]
1674    pub enum Type {
1675        /// Service type of the host is unspecified. Default value.
1676        Unspecified = 0,
1677        /// The host is running a mongod daemon.
1678        Mongod = 1,
1679        /// The host is running a mongos daemon.
1680        Mongos = 2,
1681        /// The host is running a MongoDB config server.
1682        Mongocfg = 3,
1683    }
1684    impl Type {
1685        /// String value of the enum field names used in the ProtoBuf definition.
1686        ///
1687        /// The values are not transformed in any way and thus are considered stable
1688        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1689        pub fn as_str_name(&self) -> &'static str {
1690            match self {
1691                Type::Unspecified => "TYPE_UNSPECIFIED",
1692                Type::Mongod => "MONGOD",
1693                Type::Mongos => "MONGOS",
1694                Type::Mongocfg => "MONGOCFG",
1695            }
1696        }
1697        /// Creates an enum from field names used in the ProtoBuf definition.
1698        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1699            match value {
1700                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1701                "MONGOD" => Some(Self::Mongod),
1702                "MONGOS" => Some(Self::Mongos),
1703                "MONGOCFG" => Some(Self::Mongocfg),
1704                _ => None,
1705            }
1706        }
1707    }
1708    #[derive(
1709        Clone,
1710        Copy,
1711        Debug,
1712        PartialEq,
1713        Eq,
1714        Hash,
1715        PartialOrd,
1716        Ord,
1717        ::prost::Enumeration
1718    )]
1719    #[repr(i32)]
1720    pub enum Health {
1721        /// Health of the server is unknown.
1722        Unknown = 0,
1723        /// The server is working normally.
1724        Alive = 1,
1725        /// The server is dead or unresponsive.
1726        Dead = 2,
1727    }
1728    impl Health {
1729        /// String value of the enum field names used in the ProtoBuf definition.
1730        ///
1731        /// The values are not transformed in any way and thus are considered stable
1732        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1733        pub fn as_str_name(&self) -> &'static str {
1734            match self {
1735                Health::Unknown => "HEALTH_UNKNOWN",
1736                Health::Alive => "ALIVE",
1737                Health::Dead => "DEAD",
1738            }
1739        }
1740        /// Creates an enum from field names used in the ProtoBuf definition.
1741        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1742            match value {
1743                "HEALTH_UNKNOWN" => Some(Self::Unknown),
1744                "ALIVE" => Some(Self::Alive),
1745                "DEAD" => Some(Self::Dead),
1746                _ => None,
1747            }
1748        }
1749    }
1750}
1751#[allow(clippy::derive_partial_eq_without_eq)]
1752#[derive(Clone, PartialEq, ::prost::Message)]
1753pub struct Resources {
1754    /// ID of the preset for computational resources available to a host (CPU, memory etc.).
1755    /// All available presets are listed in the \[documentation\](/docs/managed-mongodb/concepts/instance-types).
1756    #[prost(string, tag = "1")]
1757    pub resource_preset_id: ::prost::alloc::string::String,
1758    /// Volume of the storage available to a host, in bytes.
1759    #[prost(int64, tag = "2")]
1760    pub disk_size: i64,
1761    /// Type of the storage environment for the host.
1762    /// Possible values:
1763    /// * network-hdd - network HDD drive,
1764    /// * network-ssd - network SSD drive,
1765    /// * local-ssd - local SSD storage.
1766    #[prost(string, tag = "3")]
1767    pub disk_type_id: ::prost::alloc::string::String,
1768}
1769#[allow(clippy::derive_partial_eq_without_eq)]
1770#[derive(Clone, PartialEq, ::prost::Message)]
1771pub struct Access {
1772    /// Allow access for DataLens.
1773    #[prost(bool, tag = "1")]
1774    pub data_lens: bool,
1775    /// Allow access for Web SQL.
1776    #[prost(bool, tag = "2")]
1777    pub web_sql: bool,
1778    /// Allow access for DataTransfer.
1779    #[prost(bool, tag = "3")]
1780    pub data_transfer: bool,
1781}
1782#[allow(clippy::derive_partial_eq_without_eq)]
1783#[derive(Clone, PartialEq, ::prost::Message)]
1784pub struct PerformanceDiagnosticsConfig {
1785    #[prost(bool, tag = "1")]
1786    pub profiling_enabled: bool,
1787}
1788#[allow(clippy::derive_partial_eq_without_eq)]
1789#[derive(Clone, PartialEq, ::prost::Message)]
1790pub struct DiskSizeAutoscaling {
1791    /// Amount of used storage for automatic disk scaling in the maintenance window, 0 means disabled, in percent.
1792    #[prost(message, optional, tag = "1")]
1793    pub planned_usage_threshold: ::core::option::Option<i64>,
1794    /// Amount of used storage for immediately  automatic disk scaling, 0 means disabled, in percent.
1795    #[prost(message, optional, tag = "2")]
1796    pub emergency_usage_threshold: ::core::option::Option<i64>,
1797    /// Limit on how large the storage for database instances can automatically grow, in bytes.
1798    #[prost(message, optional, tag = "3")]
1799    pub disk_size_limit: ::core::option::Option<i64>,
1800}
1801/// A MongoDB Database resource. For more information, see the
1802/// [Developer's Guide](/docs/managed-mongodb/concepts).
1803#[allow(clippy::derive_partial_eq_without_eq)]
1804#[derive(Clone, PartialEq, ::prost::Message)]
1805pub struct Database {
1806    /// Name of the database.
1807    #[prost(string, tag = "1")]
1808    pub name: ::prost::alloc::string::String,
1809    /// ID of the MongoDB cluster that the database belongs to.
1810    #[prost(string, tag = "2")]
1811    pub cluster_id: ::prost::alloc::string::String,
1812}
1813#[allow(clippy::derive_partial_eq_without_eq)]
1814#[derive(Clone, PartialEq, ::prost::Message)]
1815pub struct DatabaseSpec {
1816    /// Name of the MongoDB database. 1-63 characters long.
1817    #[prost(string, tag = "1")]
1818    pub name: ::prost::alloc::string::String,
1819}
1820/// A MongoDB User resource. For more information, see the
1821/// [Developer's Guide](/docs/managed-mongodb/concepts).
1822#[allow(clippy::derive_partial_eq_without_eq)]
1823#[derive(Clone, PartialEq, ::prost::Message)]
1824pub struct User {
1825    /// Name of the MongoDB user.
1826    #[prost(string, tag = "1")]
1827    pub name: ::prost::alloc::string::String,
1828    /// ID of the MongoDB cluster the user belongs to.
1829    #[prost(string, tag = "2")]
1830    pub cluster_id: ::prost::alloc::string::String,
1831    /// Set of permissions granted to the user.
1832    #[prost(message, repeated, tag = "3")]
1833    pub permissions: ::prost::alloc::vec::Vec<Permission>,
1834}
1835#[allow(clippy::derive_partial_eq_without_eq)]
1836#[derive(Clone, PartialEq, ::prost::Message)]
1837pub struct Permission {
1838    /// Name of the database that the permission grants access to.
1839    #[prost(string, tag = "1")]
1840    pub database_name: ::prost::alloc::string::String,
1841    /// MongoDB roles for the \[database_name\] database that the permission grants.
1842    #[prost(string, repeated, tag = "2")]
1843    pub roles: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1844}
1845#[allow(clippy::derive_partial_eq_without_eq)]
1846#[derive(Clone, PartialEq, ::prost::Message)]
1847pub struct UserSpec {
1848    /// Name of the MongoDB user.
1849    #[prost(string, tag = "1")]
1850    pub name: ::prost::alloc::string::String,
1851    /// Password of the MongoDB user.
1852    #[prost(string, tag = "2")]
1853    pub password: ::prost::alloc::string::String,
1854    /// Set of permissions to grant to the user.
1855    #[prost(message, repeated, tag = "3")]
1856    pub permissions: ::prost::alloc::vec::Vec<Permission>,
1857}
1858#[allow(clippy::derive_partial_eq_without_eq)]
1859#[derive(Clone, PartialEq, ::prost::Message)]
1860pub struct GetClusterRequest {
1861    /// ID of the MongoDB Cluster resource to return.
1862    /// To get the cluster ID, use a \[ClusterService.List\] request.
1863    #[prost(string, tag = "1")]
1864    pub cluster_id: ::prost::alloc::string::String,
1865}
1866#[allow(clippy::derive_partial_eq_without_eq)]
1867#[derive(Clone, PartialEq, ::prost::Message)]
1868pub struct ListClustersRequest {
1869    /// ID of the folder to list MongoDB clusters in.
1870    /// To get the folder ID, use a \[yandex.cloud.resourcemanager.v1.FolderService.List\] request.
1871    #[prost(string, tag = "1")]
1872    pub folder_id: ::prost::alloc::string::String,
1873    /// The maximum number of results per page to return. If the number of available
1874    /// results is larger than \[page_size\], the service returns a \[ListClustersResponse.next_page_token\]
1875    /// that can be used to get the next page of results in subsequent list requests.
1876    /// Acceptable values are 0 to 1000, inclusive. Default value: 100.
1877    #[prost(int64, tag = "2")]
1878    pub page_size: i64,
1879    /// Page token. To get the next page of results, set \[page_token\]
1880    /// to the \[ListClustersResponse.next_page_token\] returned by the previous list request.
1881    #[prost(string, tag = "3")]
1882    pub page_token: ::prost::alloc::string::String,
1883    /// A filter expression that filters resources listed in the response.
1884    /// The expression must specify:
1885    /// 1. The field name. Currently you can only use filtering with the \[Cluster.name\] field.
1886    /// 2. An `=` operator.
1887    /// 3. The value in double quotes (`"`). Must be 1-63 characters long and match the regular expression `\[a-zA-Z0-9_-\]+`.
1888    #[prost(string, tag = "4")]
1889    pub filter: ::prost::alloc::string::String,
1890}
1891#[allow(clippy::derive_partial_eq_without_eq)]
1892#[derive(Clone, PartialEq, ::prost::Message)]
1893pub struct ListClustersResponse {
1894    /// List of MongoDB Cluster resources.
1895    #[prost(message, repeated, tag = "1")]
1896    pub clusters: ::prost::alloc::vec::Vec<Cluster>,
1897    /// This token allows you to get the next page of results for list requests. If the number of results
1898    /// is larger than \[ListClustersRequest.page_size\], use the \[next_page_token\] as the value
1899    /// for the \[ListClustersRequest.page_token\] parameter in the next list request. Each subsequent
1900    /// list request will have its own \[next_page_token\] to continue paging through the results.
1901    #[prost(string, tag = "2")]
1902    pub next_page_token: ::prost::alloc::string::String,
1903}
1904#[allow(clippy::derive_partial_eq_without_eq)]
1905#[derive(Clone, PartialEq, ::prost::Message)]
1906pub struct CreateClusterRequest {
1907    /// ID of the folder to create MongoDB cluster in.
1908    #[prost(string, tag = "1")]
1909    pub folder_id: ::prost::alloc::string::String,
1910    /// Name of the MongoDB cluster. The name must be unique within the folder.
1911    #[prost(string, tag = "2")]
1912    pub name: ::prost::alloc::string::String,
1913    /// Description of the MongoDB cluster.
1914    #[prost(string, tag = "3")]
1915    pub description: ::prost::alloc::string::String,
1916    /// Custom labels for the MongoDB cluster as `` key:value `` pairs. Maximum 64 per resource.
1917    /// For example, "project": "mvp" or "source": "dictionary".
1918    #[prost(map = "string, string", tag = "4")]
1919    pub labels: ::std::collections::HashMap<
1920        ::prost::alloc::string::String,
1921        ::prost::alloc::string::String,
1922    >,
1923    /// Deployment environment of the MongoDB cluster.
1924    #[prost(enumeration = "cluster::Environment", tag = "5")]
1925    pub environment: i32,
1926    /// Configuration and resources for hosts that should be created for the MongoDB cluster.
1927    #[prost(message, optional, tag = "6")]
1928    pub config_spec: ::core::option::Option<ConfigSpec>,
1929    /// Descriptions of databases to be created in the MongoDB cluster.
1930    #[prost(message, repeated, tag = "7")]
1931    pub database_specs: ::prost::alloc::vec::Vec<DatabaseSpec>,
1932    /// Descriptions of database users to be created in the MongoDB cluster.
1933    #[prost(message, repeated, tag = "8")]
1934    pub user_specs: ::prost::alloc::vec::Vec<UserSpec>,
1935    /// Individual configurations for hosts that should be created for the MongoDB cluster.
1936    #[prost(message, repeated, tag = "9")]
1937    pub host_specs: ::prost::alloc::vec::Vec<HostSpec>,
1938    /// ID of the network to create the cluster in.
1939    #[prost(string, tag = "10")]
1940    pub network_id: ::prost::alloc::string::String,
1941    /// User security groups
1942    #[prost(string, repeated, tag = "11")]
1943    pub security_group_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1944    /// Deletion Protection inhibits deletion of the cluster
1945    #[prost(bool, tag = "12")]
1946    pub deletion_protection: bool,
1947    /// Maintenance window settings for the cluster.
1948    #[prost(message, optional, tag = "13")]
1949    pub maintenance_window: ::core::option::Option<MaintenanceWindow>,
1950}
1951#[allow(clippy::derive_partial_eq_without_eq)]
1952#[derive(Clone, PartialEq, ::prost::Message)]
1953pub struct CreateClusterMetadata {
1954    /// ID of the MongoDB cluster that is being created.
1955    #[prost(string, tag = "1")]
1956    pub cluster_id: ::prost::alloc::string::String,
1957}
1958#[allow(clippy::derive_partial_eq_without_eq)]
1959#[derive(Clone, PartialEq, ::prost::Message)]
1960pub struct UpdateClusterRequest {
1961    /// ID of the MongoDB Cluster resource to update.
1962    /// To get the MongoDB cluster ID use a \[ClusterService.List\] request.
1963    #[prost(string, tag = "1")]
1964    pub cluster_id: ::prost::alloc::string::String,
1965    /// Field mask that specifies which fields of the MongoDB Cluster resource should be updated.
1966    #[prost(message, optional, tag = "2")]
1967    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
1968    /// New description of the MongoDB cluster.
1969    #[prost(string, tag = "3")]
1970    pub description: ::prost::alloc::string::String,
1971    /// Custom labels for the MongoDB cluster as `` key:value `` pairs. Maximum 64 per resource.
1972    /// For example, "project": "mvp" or "source": "dictionary".
1973    ///
1974    /// The new set of labels will completely replace the old ones. To add a label, request the current
1975    /// set with the \[ClusterService.Get\] method, then send an \[ClusterService.Update\] request with the new label added to the set.
1976    #[prost(map = "string, string", tag = "4")]
1977    pub labels: ::std::collections::HashMap<
1978        ::prost::alloc::string::String,
1979        ::prost::alloc::string::String,
1980    >,
1981    /// New configuration and resources for hosts in the cluster.
1982    #[prost(message, optional, tag = "5")]
1983    pub config_spec: ::core::option::Option<ConfigSpec>,
1984    /// New name for the cluster.
1985    #[prost(string, tag = "6")]
1986    pub name: ::prost::alloc::string::String,
1987    /// New maintenance window settings for the cluster.
1988    #[prost(message, optional, tag = "7")]
1989    pub maintenance_window: ::core::option::Option<MaintenanceWindow>,
1990    /// User security groups
1991    #[prost(string, repeated, tag = "8")]
1992    pub security_group_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1993    /// Deletion Protection inhibits deletion of the cluster
1994    #[prost(bool, tag = "9")]
1995    pub deletion_protection: bool,
1996    /// ID of the network to move the cluster to.
1997    #[prost(string, tag = "10")]
1998    pub network_id: ::prost::alloc::string::String,
1999}
2000#[allow(clippy::derive_partial_eq_without_eq)]
2001#[derive(Clone, PartialEq, ::prost::Message)]
2002pub struct UpdateClusterMetadata {
2003    /// ID of the MongoDB Cluster resource that is being updated.
2004    #[prost(string, tag = "1")]
2005    pub cluster_id: ::prost::alloc::string::String,
2006}
2007#[allow(clippy::derive_partial_eq_without_eq)]
2008#[derive(Clone, PartialEq, ::prost::Message)]
2009pub struct DeleteClusterRequest {
2010    /// ID of the MongoDB cluster to delete.
2011    /// To get the MongoDB cluster ID, use a \[ClusterService.List\] request.
2012    #[prost(string, tag = "1")]
2013    pub cluster_id: ::prost::alloc::string::String,
2014}
2015#[allow(clippy::derive_partial_eq_without_eq)]
2016#[derive(Clone, PartialEq, ::prost::Message)]
2017pub struct DeleteClusterMetadata {
2018    /// ID of the MongoDB cluster that is being deleted.
2019    #[prost(string, tag = "1")]
2020    pub cluster_id: ::prost::alloc::string::String,
2021}
2022#[allow(clippy::derive_partial_eq_without_eq)]
2023#[derive(Clone, PartialEq, ::prost::Message)]
2024pub struct StartClusterRequest {
2025    /// ID of the MongoDB cluster to start.
2026    #[prost(string, tag = "1")]
2027    pub cluster_id: ::prost::alloc::string::String,
2028}
2029#[allow(clippy::derive_partial_eq_without_eq)]
2030#[derive(Clone, PartialEq, ::prost::Message)]
2031pub struct StartClusterMetadata {
2032    /// ID of the MongoDB cluster.
2033    #[prost(string, tag = "1")]
2034    pub cluster_id: ::prost::alloc::string::String,
2035}
2036#[allow(clippy::derive_partial_eq_without_eq)]
2037#[derive(Clone, PartialEq, ::prost::Message)]
2038pub struct StopClusterRequest {
2039    /// ID of the MongoDB cluster to stop.
2040    #[prost(string, tag = "1")]
2041    pub cluster_id: ::prost::alloc::string::String,
2042}
2043#[allow(clippy::derive_partial_eq_without_eq)]
2044#[derive(Clone, PartialEq, ::prost::Message)]
2045pub struct StopClusterMetadata {
2046    /// ID of the MongoDB cluster.
2047    #[prost(string, tag = "1")]
2048    pub cluster_id: ::prost::alloc::string::String,
2049}
2050#[allow(clippy::derive_partial_eq_without_eq)]
2051#[derive(Clone, PartialEq, ::prost::Message)]
2052pub struct MoveClusterRequest {
2053    /// ID of the MongoDB cluster to move.
2054    #[prost(string, tag = "1")]
2055    pub cluster_id: ::prost::alloc::string::String,
2056    /// ID of the destination folder.
2057    #[prost(string, tag = "2")]
2058    pub destination_folder_id: ::prost::alloc::string::String,
2059}
2060#[allow(clippy::derive_partial_eq_without_eq)]
2061#[derive(Clone, PartialEq, ::prost::Message)]
2062pub struct MoveClusterMetadata {
2063    /// ID of the MongoDB cluster being moved.
2064    #[prost(string, tag = "1")]
2065    pub cluster_id: ::prost::alloc::string::String,
2066    /// ID of the source folder.
2067    #[prost(string, tag = "2")]
2068    pub source_folder_id: ::prost::alloc::string::String,
2069    /// ID of the destnation folder.
2070    #[prost(string, tag = "3")]
2071    pub destination_folder_id: ::prost::alloc::string::String,
2072}
2073#[allow(clippy::derive_partial_eq_without_eq)]
2074#[derive(Clone, PartialEq, ::prost::Message)]
2075pub struct BackupClusterRequest {
2076    /// ID of the MongoDB cluster to back up.
2077    /// To get the MongoDB cluster ID, use a \[ClusterService.List\] request.
2078    #[prost(string, tag = "1")]
2079    pub cluster_id: ::prost::alloc::string::String,
2080}
2081#[allow(clippy::derive_partial_eq_without_eq)]
2082#[derive(Clone, PartialEq, ::prost::Message)]
2083pub struct BackupClusterMetadata {
2084    /// ID of the MongoDB cluster that is being backed up.
2085    #[prost(string, tag = "1")]
2086    pub cluster_id: ::prost::alloc::string::String,
2087}
2088#[allow(clippy::derive_partial_eq_without_eq)]
2089#[derive(Clone, PartialEq, ::prost::Message)]
2090pub struct RestoreClusterRequest {
2091    /// ID of the backup to create a cluster from.
2092    /// To get the backup ID, use a \[ClusterService.ListBackups\] request.
2093    #[prost(string, tag = "1")]
2094    pub backup_id: ::prost::alloc::string::String,
2095    /// Name of the new MongoDB cluster. The name must be unique within the folder.
2096    /// The name can't be changed after the MongoDB cluster is created.
2097    #[prost(string, tag = "2")]
2098    pub name: ::prost::alloc::string::String,
2099    /// Description of the new MongoDB cluster.
2100    #[prost(string, tag = "3")]
2101    pub description: ::prost::alloc::string::String,
2102    /// Custom labels for the MongoDB cluster as `` key:value `` pairs. Maximum 64 per resource.
2103    /// For example, "project": "mvp" or "source": "dictionary".
2104    #[prost(map = "string, string", tag = "4")]
2105    pub labels: ::std::collections::HashMap<
2106        ::prost::alloc::string::String,
2107        ::prost::alloc::string::String,
2108    >,
2109    /// Deployment environment of the new MongoDB cluster.
2110    #[prost(enumeration = "cluster::Environment", tag = "5")]
2111    pub environment: i32,
2112    /// Configuration for the MongoDB cluster to be created.
2113    #[prost(message, optional, tag = "6")]
2114    pub config_spec: ::core::option::Option<ConfigSpec>,
2115    /// Configurations for MongoDB hosts that should be created for
2116    /// the cluster that is being created from the backup.
2117    #[prost(message, repeated, tag = "7")]
2118    pub host_specs: ::prost::alloc::vec::Vec<HostSpec>,
2119    /// ID of the network to create the MongoDB cluster in.
2120    #[prost(string, tag = "8")]
2121    pub network_id: ::prost::alloc::string::String,
2122    /// Required. ID of the folder to create the MongoDB cluster in.
2123    #[prost(string, tag = "9")]
2124    pub folder_id: ::prost::alloc::string::String,
2125    /// Specification of the moment to which the MongoDB cluster should be restored.
2126    #[prost(message, optional, tag = "10")]
2127    pub recovery_target_spec: ::core::option::Option<
2128        restore_cluster_request::RecoveryTargetSpec,
2129    >,
2130    /// User security groups
2131    #[prost(string, repeated, tag = "11")]
2132    pub security_group_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2133    /// Deletion Protection inhibits deletion of the cluster
2134    #[prost(bool, tag = "12")]
2135    pub deletion_protection: bool,
2136    /// Maintenance window settings for the cluster.
2137    #[prost(message, optional, tag = "13")]
2138    pub maintenance_window: ::core::option::Option<MaintenanceWindow>,
2139}
2140/// Nested message and enum types in `RestoreClusterRequest`.
2141pub mod restore_cluster_request {
2142    #[allow(clippy::derive_partial_eq_without_eq)]
2143    #[derive(Clone, PartialEq, ::prost::Message)]
2144    pub struct RecoveryTargetSpec {
2145        /// Timestamp of the recovery target
2146        #[prost(int64, tag = "1")]
2147        pub timestamp: i64,
2148    }
2149}
2150#[allow(clippy::derive_partial_eq_without_eq)]
2151#[derive(Clone, PartialEq, ::prost::Message)]
2152pub struct RestoreClusterMetadata {
2153    /// ID of the new MongoDB cluster that is being created from a backup.
2154    #[prost(string, tag = "1")]
2155    pub cluster_id: ::prost::alloc::string::String,
2156    /// ID of the backup that is being used for creating a cluster.
2157    #[prost(string, tag = "2")]
2158    pub backup_id: ::prost::alloc::string::String,
2159}
2160#[allow(clippy::derive_partial_eq_without_eq)]
2161#[derive(Clone, PartialEq, ::prost::Message)]
2162pub struct RescheduleMaintenanceRequest {
2163    /// ID of the MongoDB cluster to reschedule the maintenance operation for.
2164    #[prost(string, tag = "1")]
2165    pub cluster_id: ::prost::alloc::string::String,
2166    /// The type of reschedule request.
2167    #[prost(enumeration = "reschedule_maintenance_request::RescheduleType", tag = "2")]
2168    pub reschedule_type: i32,
2169    /// The time until which this maintenance operation should be delayed. The value should be ahead of the first time when the maintenance operation has been scheduled for no more than two weeks. The value can also point to the past moment of time if \[reschedule_type.IMMEDIATE\] reschedule type is chosen.
2170    #[prost(message, optional, tag = "3")]
2171    pub delayed_until: ::core::option::Option<::prost_types::Timestamp>,
2172}
2173/// Nested message and enum types in `RescheduleMaintenanceRequest`.
2174pub mod reschedule_maintenance_request {
2175    #[derive(
2176        Clone,
2177        Copy,
2178        Debug,
2179        PartialEq,
2180        Eq,
2181        Hash,
2182        PartialOrd,
2183        Ord,
2184        ::prost::Enumeration
2185    )]
2186    #[repr(i32)]
2187    pub enum RescheduleType {
2188        Unspecified = 0,
2189        /// Start the maintenance operation immediately.
2190        Immediate = 1,
2191        /// Start the maintenance operation within the next available maintenance window.
2192        NextAvailableWindow = 2,
2193        /// Start the maintenance operation at the specific time.
2194        SpecificTime = 3,
2195    }
2196    impl RescheduleType {
2197        /// String value of the enum field names used in the ProtoBuf definition.
2198        ///
2199        /// The values are not transformed in any way and thus are considered stable
2200        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2201        pub fn as_str_name(&self) -> &'static str {
2202            match self {
2203                RescheduleType::Unspecified => "RESCHEDULE_TYPE_UNSPECIFIED",
2204                RescheduleType::Immediate => "IMMEDIATE",
2205                RescheduleType::NextAvailableWindow => "NEXT_AVAILABLE_WINDOW",
2206                RescheduleType::SpecificTime => "SPECIFIC_TIME",
2207            }
2208        }
2209        /// Creates an enum from field names used in the ProtoBuf definition.
2210        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2211            match value {
2212                "RESCHEDULE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
2213                "IMMEDIATE" => Some(Self::Immediate),
2214                "NEXT_AVAILABLE_WINDOW" => Some(Self::NextAvailableWindow),
2215                "SPECIFIC_TIME" => Some(Self::SpecificTime),
2216                _ => None,
2217            }
2218        }
2219    }
2220}
2221/// Rescheduled maintenance operation metadata.
2222#[allow(clippy::derive_partial_eq_without_eq)]
2223#[derive(Clone, PartialEq, ::prost::Message)]
2224pub struct RescheduleMaintenanceMetadata {
2225    /// Required. ID of the MongoDB cluster.
2226    #[prost(string, tag = "1")]
2227    pub cluster_id: ::prost::alloc::string::String,
2228    /// Required. The time until which this maintenance operation is to be delayed.
2229    #[prost(message, optional, tag = "4")]
2230    pub delayed_until: ::core::option::Option<::prost_types::Timestamp>,
2231}
2232#[allow(clippy::derive_partial_eq_without_eq)]
2233#[derive(Clone, PartialEq, ::prost::Message)]
2234pub struct LogRecord {
2235    /// Log record timestamp in \[RFC3339\](<https://www.ietf.org/rfc/rfc3339.txt>) text format.
2236    #[prost(message, optional, tag = "1")]
2237    pub timestamp: ::core::option::Option<::prost_types::Timestamp>,
2238    /// Contents of the log record.
2239    #[prost(map = "string, string", tag = "2")]
2240    pub message: ::std::collections::HashMap<
2241        ::prost::alloc::string::String,
2242        ::prost::alloc::string::String,
2243    >,
2244}
2245#[allow(clippy::derive_partial_eq_without_eq)]
2246#[derive(Clone, PartialEq, ::prost::Message)]
2247pub struct ListClusterLogsRequest {
2248    /// ID of the MongoDB cluster to request logs for.
2249    /// To get the MongoDB cluster ID use a \[ClusterService.List\] request.
2250    #[prost(string, tag = "1")]
2251    pub cluster_id: ::prost::alloc::string::String,
2252    /// Columns from the logs table to request.
2253    /// If no columns are specified, entire log records are returned.
2254    #[prost(string, repeated, tag = "2")]
2255    pub column_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2256    /// Type of the service to request logs about.
2257    #[prost(enumeration = "list_cluster_logs_request::ServiceType", tag = "3")]
2258    pub service_type: i32,
2259    /// Start timestamp for the logs request, in \[RFC3339\](<https://www.ietf.org/rfc/rfc3339.txt>) text format.
2260    #[prost(message, optional, tag = "4")]
2261    pub from_time: ::core::option::Option<::prost_types::Timestamp>,
2262    /// End timestamp for the logs request, in \[RFC3339\](<https://www.ietf.org/rfc/rfc3339.txt>) text format.
2263    #[prost(message, optional, tag = "5")]
2264    pub to_time: ::core::option::Option<::prost_types::Timestamp>,
2265    /// The maximum number of results per page to return. If the number of available
2266    /// results is larger than \[page_size\], the service returns a \[ListClusterLogsResponse.next_page_token\]
2267    /// that can be used to get the next page of results in subsequent list requests.
2268    /// Acceptable values are 0 to 1000, inclusive. Default value: 100.
2269    #[prost(int64, tag = "6")]
2270    pub page_size: i64,
2271    /// Page token. To get the next page of results, set \[page_token\] to the
2272    /// \[ListClusterLogsResponse.next_page_token\] returned by the previous list request.
2273    #[prost(string, tag = "7")]
2274    pub page_token: ::prost::alloc::string::String,
2275}
2276/// Nested message and enum types in `ListClusterLogsRequest`.
2277pub mod list_cluster_logs_request {
2278    #[derive(
2279        Clone,
2280        Copy,
2281        Debug,
2282        PartialEq,
2283        Eq,
2284        Hash,
2285        PartialOrd,
2286        Ord,
2287        ::prost::Enumeration
2288    )]
2289    #[repr(i32)]
2290    pub enum ServiceType {
2291        Unspecified = 0,
2292        /// Logs of MongoDB activity.
2293        Mongod = 1,
2294        Mongos = 2,
2295        Mongocfg = 3,
2296        Audit = 4,
2297    }
2298    impl ServiceType {
2299        /// String value of the enum field names used in the ProtoBuf definition.
2300        ///
2301        /// The values are not transformed in any way and thus are considered stable
2302        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2303        pub fn as_str_name(&self) -> &'static str {
2304            match self {
2305                ServiceType::Unspecified => "SERVICE_TYPE_UNSPECIFIED",
2306                ServiceType::Mongod => "MONGOD",
2307                ServiceType::Mongos => "MONGOS",
2308                ServiceType::Mongocfg => "MONGOCFG",
2309                ServiceType::Audit => "AUDIT",
2310            }
2311        }
2312        /// Creates an enum from field names used in the ProtoBuf definition.
2313        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2314            match value {
2315                "SERVICE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
2316                "MONGOD" => Some(Self::Mongod),
2317                "MONGOS" => Some(Self::Mongos),
2318                "MONGOCFG" => Some(Self::Mongocfg),
2319                "AUDIT" => Some(Self::Audit),
2320                _ => None,
2321            }
2322        }
2323    }
2324}
2325#[allow(clippy::derive_partial_eq_without_eq)]
2326#[derive(Clone, PartialEq, ::prost::Message)]
2327pub struct ListClusterLogsResponse {
2328    /// Requested log records.
2329    #[prost(message, repeated, tag = "1")]
2330    pub logs: ::prost::alloc::vec::Vec<LogRecord>,
2331    /// This token allows you to get the next page of results for list requests. If the number of results
2332    /// is larger than \[ListClusterLogsRequest.page_size\], use the \[next_page_token\] as the value
2333    /// for the \[ListClusterLogsRequest.page_token\] query parameter in the next list request.
2334    /// Each subsequent list request will have its own \[next_page_token\] to continue paging through the results.
2335    /// This value is interchangeable with `next_record_token` from StreamLogs method.
2336    #[prost(string, tag = "2")]
2337    pub next_page_token: ::prost::alloc::string::String,
2338}
2339#[allow(clippy::derive_partial_eq_without_eq)]
2340#[derive(Clone, PartialEq, ::prost::Message)]
2341pub struct StreamLogRecord {
2342    /// One of the requested log records.
2343    #[prost(message, optional, tag = "1")]
2344    pub record: ::core::option::Option<LogRecord>,
2345    /// This token allows you to continue streaming logs starting from the exact
2346    /// same record. To continue streaming, specify value of `next_record_token`
2347    /// as value for `record_token` parameter in the next StreamLogs request.
2348    /// This value is interchangeable with `next_page_token` from ListLogs method.
2349    #[prost(string, tag = "2")]
2350    pub next_record_token: ::prost::alloc::string::String,
2351}
2352#[allow(clippy::derive_partial_eq_without_eq)]
2353#[derive(Clone, PartialEq, ::prost::Message)]
2354pub struct StreamClusterLogsRequest {
2355    /// Required. ID of the MongoDB cluster.
2356    #[prost(string, tag = "1")]
2357    pub cluster_id: ::prost::alloc::string::String,
2358    /// Columns from logs table to get in the response.
2359    #[prost(string, repeated, tag = "2")]
2360    pub column_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2361    #[prost(enumeration = "stream_cluster_logs_request::ServiceType", tag = "3")]
2362    pub service_type: i32,
2363    /// Start timestamp for the logs request.
2364    #[prost(message, optional, tag = "4")]
2365    pub from_time: ::core::option::Option<::prost_types::Timestamp>,
2366    /// End timestamp for the logs request.
2367    /// If this field is not set, all existing logs will be sent and then the new ones as
2368    /// they appear. In essence it has 'tail -f' semantics.
2369    #[prost(message, optional, tag = "5")]
2370    pub to_time: ::core::option::Option<::prost_types::Timestamp>,
2371    /// Record token. Set `record_token` to the `next_record_token` returned by a previous StreamLogs
2372    /// request to start streaming from next log record.
2373    #[prost(string, tag = "6")]
2374    pub record_token: ::prost::alloc::string::String,
2375    /// A filter expression that filters resources listed in the response.
2376    /// The expression must specify:
2377    /// 1. The field name. Currently filtering can be applied to the \[LogRecord.logs.message.hostname\], \[LogRecord.logs.message.severity\] fields.
2378    /// 2. An `=` operator.
2379    /// 3. The value in double quotes (`"`). Must be 1-63 characters long and match the regular expression `\[a-z0-9.-\]{1,61}`.
2380    /// Examples of a filter: `message.hostname='node1.db.cloud.yandex.net'`, `message.severity IN ('E', 'F')`
2381    #[prost(string, tag = "7")]
2382    pub filter: ::prost::alloc::string::String,
2383}
2384/// Nested message and enum types in `StreamClusterLogsRequest`.
2385pub mod stream_cluster_logs_request {
2386    #[derive(
2387        Clone,
2388        Copy,
2389        Debug,
2390        PartialEq,
2391        Eq,
2392        Hash,
2393        PartialOrd,
2394        Ord,
2395        ::prost::Enumeration
2396    )]
2397    #[repr(i32)]
2398    pub enum ServiceType {
2399        Unspecified = 0,
2400        /// Logs of MongoDB activity.
2401        Mongod = 1,
2402        Mongos = 2,
2403        Mongocfg = 3,
2404        /// MongoDB Enterprise audit logs
2405        Audit = 4,
2406    }
2407    impl ServiceType {
2408        /// String value of the enum field names used in the ProtoBuf definition.
2409        ///
2410        /// The values are not transformed in any way and thus are considered stable
2411        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2412        pub fn as_str_name(&self) -> &'static str {
2413            match self {
2414                ServiceType::Unspecified => "SERVICE_TYPE_UNSPECIFIED",
2415                ServiceType::Mongod => "MONGOD",
2416                ServiceType::Mongos => "MONGOS",
2417                ServiceType::Mongocfg => "MONGOCFG",
2418                ServiceType::Audit => "AUDIT",
2419            }
2420        }
2421        /// Creates an enum from field names used in the ProtoBuf definition.
2422        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2423            match value {
2424                "SERVICE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
2425                "MONGOD" => Some(Self::Mongod),
2426                "MONGOS" => Some(Self::Mongos),
2427                "MONGOCFG" => Some(Self::Mongocfg),
2428                "AUDIT" => Some(Self::Audit),
2429                _ => None,
2430            }
2431        }
2432    }
2433}
2434#[allow(clippy::derive_partial_eq_without_eq)]
2435#[derive(Clone, PartialEq, ::prost::Message)]
2436pub struct ListClusterOperationsRequest {
2437    /// ID of the MongoDB Cluster resource to list operations for.
2438    #[prost(string, tag = "1")]
2439    pub cluster_id: ::prost::alloc::string::String,
2440    /// The maximum number of results per page to return. If the number of available
2441    /// results is larger than \[page_size\], the service returns a \[ListClusterOperationsResponse.next_page_token\]
2442    /// that can be used to get the next page of results in subsequent list requests.
2443    /// Acceptable values are 0 to 1000, inclusive. Default value: 100.
2444    #[prost(int64, tag = "2")]
2445    pub page_size: i64,
2446    /// Page token. To get the next page of results, set \[page_token\] to the
2447    /// \[ListClusterOperationsResponse.next_page_token\] returned by the previous list request.
2448    #[prost(string, tag = "3")]
2449    pub page_token: ::prost::alloc::string::String,
2450}
2451#[allow(clippy::derive_partial_eq_without_eq)]
2452#[derive(Clone, PartialEq, ::prost::Message)]
2453pub struct ListClusterOperationsResponse {
2454    /// List of Operation resources for the specified MongoDB cluster.
2455    #[prost(message, repeated, tag = "1")]
2456    pub operations: ::prost::alloc::vec::Vec<super::super::super::operation::Operation>,
2457    /// This token allows you to get the next page of results for list requests. If the number of results
2458    /// is larger than \[ListClusterOperationsRequest.page_size\], use the \[next_page_token\] as the value
2459    /// for the \[ListClusterOperationsRequest.page_token\] query parameter in the next list request.
2460    /// Each subsequent list request will have its own \[next_page_token\] to continue paging through the results.
2461    #[prost(string, tag = "2")]
2462    pub next_page_token: ::prost::alloc::string::String,
2463}
2464#[allow(clippy::derive_partial_eq_without_eq)]
2465#[derive(Clone, PartialEq, ::prost::Message)]
2466pub struct ListClusterBackupsRequest {
2467    /// ID of the MongoDB cluster.
2468    /// To get the MongoDB cluster ID, use a \[ClusterService.List\] request.
2469    #[prost(string, tag = "1")]
2470    pub cluster_id: ::prost::alloc::string::String,
2471    /// The maximum number of results per page to return. If the number of available
2472    /// results is larger than \[page_size\], the service returns a \[ListClusterBackupsResponse.next_page_token\]
2473    /// that can be used to get the next page of results in subsequent list requests.
2474    /// Acceptable values are 0 to 1000, inclusive. Default value: 100.
2475    #[prost(int64, tag = "2")]
2476    pub page_size: i64,
2477    /// Page token.  To get the next page of results, set \[page_token\] to the
2478    /// \[ListClusterBackupsResponse.next_page_token\] returned by the previous list request.
2479    #[prost(string, tag = "3")]
2480    pub page_token: ::prost::alloc::string::String,
2481}
2482#[allow(clippy::derive_partial_eq_without_eq)]
2483#[derive(Clone, PartialEq, ::prost::Message)]
2484pub struct ListClusterBackupsResponse {
2485    /// List of MongoDB Backup resources.
2486    #[prost(message, repeated, tag = "1")]
2487    pub backups: ::prost::alloc::vec::Vec<Backup>,
2488    /// This token allows you to get the next page of results for list requests. If the number of results
2489    /// is larger than \[ListClusterBackupsRequest.page_size\], use the \[next_page_token\] as the value
2490    /// for the \[ListClusterBackupsRequest.page_token\] query parameter in the next list request.
2491    /// Each subsequent list request will have its own \[next_page_token\] to continue paging through the results.
2492    #[prost(string, tag = "2")]
2493    pub next_page_token: ::prost::alloc::string::String,
2494}
2495#[allow(clippy::derive_partial_eq_without_eq)]
2496#[derive(Clone, PartialEq, ::prost::Message)]
2497pub struct ListClusterHostsRequest {
2498    /// ID of the MongoDB cluster.
2499    /// To get the MongoDB cluster ID, use a \[ClusterService.List\] request.
2500    #[prost(string, tag = "1")]
2501    pub cluster_id: ::prost::alloc::string::String,
2502    /// The maximum number of results per page to return. If the number of available
2503    /// results is larger than \[page_size\], the service returns a \[ListClusterHostsResponse.next_page_token\]
2504    /// that can be used to get the next page of results in subsequent list requests.
2505    /// Acceptable values are 0 to 1000, inclusive. Default value: 100.
2506    #[prost(int64, tag = "2")]
2507    pub page_size: i64,
2508    /// Page token. To get the next page of results, set \[page_token\] to the
2509    /// \[ListClusterHostsResponse.next_page_token\] returned by the previous list request.
2510    #[prost(string, tag = "3")]
2511    pub page_token: ::prost::alloc::string::String,
2512}
2513#[allow(clippy::derive_partial_eq_without_eq)]
2514#[derive(Clone, PartialEq, ::prost::Message)]
2515pub struct ListClusterHostsResponse {
2516    /// List of Host resources.
2517    #[prost(message, repeated, tag = "1")]
2518    pub hosts: ::prost::alloc::vec::Vec<Host>,
2519    /// This token allows you to get the next page of results for list requests. If the number of results
2520    /// is larger than \[ListClusterHostsRequest.page_size\], use the \[next_page_token\] as the value
2521    /// for the \[ListClusterHostsRequest.page_token\] query parameter in the next list request.
2522    /// Each subsequent list request will have its own \[next_page_token\] to continue paging through the results.
2523    #[prost(string, tag = "2")]
2524    pub next_page_token: ::prost::alloc::string::String,
2525}
2526#[allow(clippy::derive_partial_eq_without_eq)]
2527#[derive(Clone, PartialEq, ::prost::Message)]
2528pub struct AddClusterHostsRequest {
2529    /// ID of the MongoDB cluster to add hosts to.
2530    /// To get the MongoDB cluster ID use a \[ClusterService.List\] request.
2531    #[prost(string, tag = "1")]
2532    pub cluster_id: ::prost::alloc::string::String,
2533    /// Configurations for MongoDB hosts that should be added to the cluster.
2534    #[prost(message, repeated, tag = "2")]
2535    pub host_specs: ::prost::alloc::vec::Vec<HostSpec>,
2536}
2537#[allow(clippy::derive_partial_eq_without_eq)]
2538#[derive(Clone, PartialEq, ::prost::Message)]
2539pub struct AddClusterHostsMetadata {
2540    /// ID of the MongoDB cluster to which the hosts are being added.
2541    #[prost(string, tag = "1")]
2542    pub cluster_id: ::prost::alloc::string::String,
2543    /// Names of hosts that are being added to the cluster.
2544    #[prost(string, repeated, tag = "2")]
2545    pub host_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2546}
2547#[allow(clippy::derive_partial_eq_without_eq)]
2548#[derive(Clone, PartialEq, ::prost::Message)]
2549pub struct DeleteClusterHostsRequest {
2550    /// ID of the MongoDB cluster to remove hosts from.
2551    /// To get the MongoDB cluster ID, use a \[ClusterService.List\] request.
2552    #[prost(string, tag = "1")]
2553    pub cluster_id: ::prost::alloc::string::String,
2554    /// Names of hosts to delete.
2555    #[prost(string, repeated, tag = "2")]
2556    pub host_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2557}
2558#[allow(clippy::derive_partial_eq_without_eq)]
2559#[derive(Clone, PartialEq, ::prost::Message)]
2560pub struct DeleteClusterHostsMetadata {
2561    /// ID of the MongoDB cluster to remove hosts from.
2562    #[prost(string, tag = "1")]
2563    pub cluster_id: ::prost::alloc::string::String,
2564    /// Names of hosts that are being deleted.
2565    #[prost(string, repeated, tag = "2")]
2566    pub host_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2567}
2568#[allow(clippy::derive_partial_eq_without_eq)]
2569#[derive(Clone, PartialEq, ::prost::Message)]
2570pub struct UpdateClusterHostsRequest {
2571    /// ID of the MongoDB cluster to update hosts from.
2572    /// To get the MongoDB cluster ID, use a \[ClusterService.List\] request.
2573    #[prost(string, tag = "1")]
2574    pub cluster_id: ::prost::alloc::string::String,
2575    /// New configurations to apply to hosts of a Managed Service for MongoDB cluster.
2576    #[prost(message, repeated, tag = "2")]
2577    pub update_host_specs: ::prost::alloc::vec::Vec<UpdateHostSpec>,
2578}
2579#[allow(clippy::derive_partial_eq_without_eq)]
2580#[derive(Clone, PartialEq, ::prost::Message)]
2581pub struct UpdateClusterHostsMetadata {
2582    /// ID of the MongoDB cluster to update host from.
2583    #[prost(string, tag = "1")]
2584    pub cluster_id: ::prost::alloc::string::String,
2585    /// Name of host that are being updated.
2586    #[prost(string, repeated, tag = "2")]
2587    pub host_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2588}
2589#[allow(clippy::derive_partial_eq_without_eq)]
2590#[derive(Clone, PartialEq, ::prost::Message)]
2591pub struct UpdateHostSpec {
2592    /// Host to be updated. Specify the [host FQDN](<https://yandex.cloud/en/docs/managed-mongodb/operations/connect/#fqdn>).
2593    #[prost(string, tag = "1")]
2594    pub host_name: ::prost::alloc::string::String,
2595    /// Determines if the host is a hidden replica set member.
2596    ///
2597    /// Such members cannot become primary in a replica set, and they are invisible to client applications. However, hidden members can participate in elections of the primary host. For more information, see the [MongoDB documentation](<https://www.mongodb.com/docs/manual/core/replica-set-hidden-member/>).
2598    #[prost(message, optional, tag = "2")]
2599    pub hidden: ::core::option::Option<bool>,
2600    /// The time, in seconds, by which the given replica set member lags behind the primary host.
2601    #[prost(message, optional, tag = "3")]
2602    pub secondary_delay_secs: ::core::option::Option<i64>,
2603    /// Priority of the host to be elected as the primary in the replica set.
2604    ///
2605    /// The minimum value is `0` if the Managed Service for MongoDB cluster contains three or more secondary hosts. Otherwise, the minimum value is `1`.
2606    #[prost(message, optional, tag = "4")]
2607    pub priority: ::core::option::Option<f64>,
2608    /// Determines whether the host should get a public IP address after the update.
2609    #[prost(bool, tag = "5")]
2610    pub assign_public_ip: bool,
2611    /// Field mask that specifies which fields of the MongoDB host should be updated.
2612    #[prost(message, optional, tag = "6")]
2613    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
2614    /// Host tag list that contains key-value pairs for the given replica set member. For more information about how to specify the tags and what values to choose, see the [MongoDB documentation](<https://www.mongodb.com/docs/manual/reference/replica-configuration/#mongodb-rsconf-rsconf.members-n-.tags>).
2615    #[prost(map = "string, string", tag = "7")]
2616    pub tags: ::std::collections::HashMap<
2617        ::prost::alloc::string::String,
2618        ::prost::alloc::string::String,
2619    >,
2620}
2621#[allow(clippy::derive_partial_eq_without_eq)]
2622#[derive(Clone, PartialEq, ::prost::Message)]
2623pub struct EnableClusterShardingRequest {
2624    /// ID of the MongoDB cluster to enable sharding for.
2625    #[prost(string, tag = "1")]
2626    pub cluster_id: ::prost::alloc::string::String,
2627    /// mongocfg specification for sharding.
2628    #[prost(message, optional, tag = "2")]
2629    pub mongocfg: ::core::option::Option<enable_cluster_sharding_request::MongoCfg>,
2630    /// mongos specification for sharding.
2631    #[prost(message, optional, tag = "3")]
2632    pub mongos: ::core::option::Option<enable_cluster_sharding_request::Mongos>,
2633    /// Configurations for mongos and mongocfg hosts.
2634    #[prost(message, repeated, tag = "4")]
2635    pub host_specs: ::prost::alloc::vec::Vec<HostSpec>,
2636    /// mongos specification for sharding.
2637    #[prost(message, optional, tag = "5")]
2638    pub mongoinfra: ::core::option::Option<enable_cluster_sharding_request::MongoInfra>,
2639}
2640/// Nested message and enum types in `EnableClusterShardingRequest`.
2641pub mod enable_cluster_sharding_request {
2642    #[allow(clippy::derive_partial_eq_without_eq)]
2643    #[derive(Clone, PartialEq, ::prost::Message)]
2644    pub struct MongoCfg {
2645        /// Resources for mongocfg hosts.
2646        #[prost(message, optional, tag = "1")]
2647        pub resources: ::core::option::Option<super::Resources>,
2648    }
2649    #[allow(clippy::derive_partial_eq_without_eq)]
2650    #[derive(Clone, PartialEq, ::prost::Message)]
2651    pub struct Mongos {
2652        /// Resources for mongos hosts.
2653        #[prost(message, optional, tag = "1")]
2654        pub resources: ::core::option::Option<super::Resources>,
2655    }
2656    #[allow(clippy::derive_partial_eq_without_eq)]
2657    #[derive(Clone, PartialEq, ::prost::Message)]
2658    pub struct MongoInfra {
2659        /// Resources for mongoinfra (mongos+mongocfg) hosts.
2660        #[prost(message, optional, tag = "1")]
2661        pub resources: ::core::option::Option<super::Resources>,
2662    }
2663}
2664#[allow(clippy::derive_partial_eq_without_eq)]
2665#[derive(Clone, PartialEq, ::prost::Message)]
2666pub struct EnableClusterShardingMetadata {
2667    /// ID of the MongoDB cluster that sharding is being enabled for.
2668    #[prost(string, tag = "1")]
2669    pub cluster_id: ::prost::alloc::string::String,
2670}
2671#[allow(clippy::derive_partial_eq_without_eq)]
2672#[derive(Clone, PartialEq, ::prost::Message)]
2673pub struct GetClusterShardRequest {
2674    /// ID of the MongoDB cluster that the shard belongs to.
2675    /// To get the cluster ID use a \[ClusterService.List\] request.
2676    #[prost(string, tag = "1")]
2677    pub cluster_id: ::prost::alloc::string::String,
2678    /// Name of the MongoDB shard to return.
2679    /// To get the name of the shard use a \[ClusterService.ListShards\] request.
2680    #[prost(string, tag = "2")]
2681    pub shard_name: ::prost::alloc::string::String,
2682}
2683#[allow(clippy::derive_partial_eq_without_eq)]
2684#[derive(Clone, PartialEq, ::prost::Message)]
2685pub struct ListClusterShardsRequest {
2686    /// ID of the MongoDB cluster to list databases in.
2687    /// To get the cluster ID, use a \[ClusterService.List\] request.
2688    #[prost(string, tag = "1")]
2689    pub cluster_id: ::prost::alloc::string::String,
2690    /// The maximum number of results per page to return. If the number of available
2691    /// results is larger than \[page_size\], the service returns a \[ListClusterShardsResponse.next_page_token\]
2692    /// that can be used to get the next page of results in subsequent list requests.
2693    #[prost(int64, tag = "2")]
2694    pub page_size: i64,
2695    /// Page token. To get the next page of results, set \[page_token\] to the
2696    /// \[ListClusterShardsResponse.next_page_token\] returned by the previous list request.
2697    #[prost(string, tag = "3")]
2698    pub page_token: ::prost::alloc::string::String,
2699}
2700#[allow(clippy::derive_partial_eq_without_eq)]
2701#[derive(Clone, PartialEq, ::prost::Message)]
2702pub struct ListClusterShardsResponse {
2703    /// List of MongoDB shards.
2704    #[prost(message, repeated, tag = "1")]
2705    pub shards: ::prost::alloc::vec::Vec<Shard>,
2706    /// This token allows you to get the next page of results for list requests. If the number of results
2707    /// is larger than \[ListClusterShardsRequest.page_size\], use the \[next_page_token\] as the value
2708    /// for the \[ListClusterShardsRequest.page_token\] parameter in the next list request. Each subsequent
2709    /// list request will have its own \[next_page_token\] to continue paging through the results.
2710    #[prost(string, tag = "2")]
2711    pub next_page_token: ::prost::alloc::string::String,
2712}
2713#[allow(clippy::derive_partial_eq_without_eq)]
2714#[derive(Clone, PartialEq, ::prost::Message)]
2715pub struct AddClusterShardRequest {
2716    /// ID of the MongoDB cluster to add a shard to.
2717    /// To get the cluster ID, use a \[ClusterService.List\] request.
2718    #[prost(string, tag = "1")]
2719    pub cluster_id: ::prost::alloc::string::String,
2720    /// Name of the MongoDB shard to create.
2721    #[prost(string, tag = "2")]
2722    pub shard_name: ::prost::alloc::string::String,
2723    /// Configurations for mongod hosts to be created with the shard.
2724    #[prost(message, repeated, tag = "3")]
2725    pub host_specs: ::prost::alloc::vec::Vec<HostSpec>,
2726}
2727#[allow(clippy::derive_partial_eq_without_eq)]
2728#[derive(Clone, PartialEq, ::prost::Message)]
2729pub struct AddClusterShardMetadata {
2730    /// ID of the MongoDB cluster that a shard is being added to.
2731    #[prost(string, tag = "1")]
2732    pub cluster_id: ::prost::alloc::string::String,
2733    /// Name of the shard being added.
2734    #[prost(string, tag = "2")]
2735    pub shard_name: ::prost::alloc::string::String,
2736}
2737#[allow(clippy::derive_partial_eq_without_eq)]
2738#[derive(Clone, PartialEq, ::prost::Message)]
2739pub struct DeleteClusterShardRequest {
2740    /// ID of the MongoDB cluster to delete a shard in.
2741    /// To get the cluster ID, use a \[ClusterService.List\] request.
2742    #[prost(string, tag = "1")]
2743    pub cluster_id: ::prost::alloc::string::String,
2744    /// Name of the MongoDB shard to delete.
2745    /// To get the name of the shard use a \[ClusterService.ListShards\] request.
2746    #[prost(string, tag = "2")]
2747    pub shard_name: ::prost::alloc::string::String,
2748}
2749#[allow(clippy::derive_partial_eq_without_eq)]
2750#[derive(Clone, PartialEq, ::prost::Message)]
2751pub struct DeleteClusterShardMetadata {
2752    /// ID of the MongoDB cluster that a shard is being deleted in.
2753    #[prost(string, tag = "1")]
2754    pub cluster_id: ::prost::alloc::string::String,
2755    /// Name of the shard being deleted.
2756    #[prost(string, tag = "2")]
2757    pub shard_name: ::prost::alloc::string::String,
2758}
2759#[allow(clippy::derive_partial_eq_without_eq)]
2760#[derive(Clone, PartialEq, ::prost::Message)]
2761pub struct ResetupHostsRequest {
2762    /// Required. ID of the MongoDB cluster.
2763    #[prost(string, tag = "1")]
2764    pub cluster_id: ::prost::alloc::string::String,
2765    /// Required. Name of the hosts to resetup.
2766    #[prost(string, repeated, tag = "2")]
2767    pub host_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2768}
2769#[allow(clippy::derive_partial_eq_without_eq)]
2770#[derive(Clone, PartialEq, ::prost::Message)]
2771pub struct ResetupHostsMetadata {
2772    /// Required. ID of the MongoDB cluster.
2773    #[prost(string, tag = "1")]
2774    pub cluster_id: ::prost::alloc::string::String,
2775    /// Required. The name of hosts to resetup.
2776    #[prost(string, repeated, tag = "2")]
2777    pub host_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2778}
2779#[allow(clippy::derive_partial_eq_without_eq)]
2780#[derive(Clone, PartialEq, ::prost::Message)]
2781pub struct RestartHostsRequest {
2782    /// Required. ID of the MongoDB cluster.
2783    #[prost(string, tag = "1")]
2784    pub cluster_id: ::prost::alloc::string::String,
2785    /// Required. Name of the hosts to restart.
2786    #[prost(string, repeated, tag = "2")]
2787    pub host_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2788}
2789#[allow(clippy::derive_partial_eq_without_eq)]
2790#[derive(Clone, PartialEq, ::prost::Message)]
2791pub struct RestartHostsMetadata {
2792    /// Required. ID of the MongoDB cluster.
2793    #[prost(string, tag = "1")]
2794    pub cluster_id: ::prost::alloc::string::String,
2795    /// Required. The name of hosts to restart.
2796    #[prost(string, repeated, tag = "2")]
2797    pub host_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2798}
2799#[allow(clippy::derive_partial_eq_without_eq)]
2800#[derive(Clone, PartialEq, ::prost::Message)]
2801pub struct StepdownHostsRequest {
2802    /// Required. ID of the MongoDB cluster.
2803    #[prost(string, tag = "1")]
2804    pub cluster_id: ::prost::alloc::string::String,
2805    /// Required. Name of the hosts to resetup.
2806    #[prost(string, repeated, tag = "2")]
2807    pub host_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2808}
2809#[allow(clippy::derive_partial_eq_without_eq)]
2810#[derive(Clone, PartialEq, ::prost::Message)]
2811pub struct StepdownHostsMetadata {
2812    /// Required. ID of the MongoDB cluster.
2813    #[prost(string, tag = "1")]
2814    pub cluster_id: ::prost::alloc::string::String,
2815    /// Required. The name of hosts to resetup.
2816    #[prost(string, repeated, tag = "2")]
2817    pub host_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2818}
2819#[allow(clippy::derive_partial_eq_without_eq)]
2820#[derive(Clone, PartialEq, ::prost::Message)]
2821pub struct HostSpec {
2822    /// ID of the availability zone where the host resides.
2823    /// To get a list of available zones, use the \[yandex.cloud.compute.v1.ZoneService.List\] request.
2824    #[prost(string, tag = "1")]
2825    pub zone_id: ::prost::alloc::string::String,
2826    /// ID of the subnet that the host should belong to. This subnet should be a part
2827    /// of the network that the cluster belongs to.
2828    /// The network ID is set in the \[Cluster.network_id\] field.
2829    #[prost(string, tag = "2")]
2830    pub subnet_id: ::prost::alloc::string::String,
2831    /// Whether the host should get a public IP address on creation.
2832    ///
2833    /// After a host has been created, this setting cannot be changed. To remove an assigned public IP, or to assign
2834    /// a public IP to a host without one, recreate the host with \[assign_public_ip\] set as needed.
2835    ///
2836    /// Possible values:
2837    /// * false - don't assign a public IP to the host.
2838    /// * true - the host should have a public IP address.
2839    #[prost(bool, tag = "3")]
2840    pub assign_public_ip: bool,
2841    /// Type of the host to be deployed.
2842    #[prost(enumeration = "host::Type", tag = "4")]
2843    pub r#type: i32,
2844    /// Name of the shard that the host belongs to.
2845    #[prost(string, tag = "5")]
2846    pub shard_name: ::prost::alloc::string::String,
2847    /// Is host hidden in replSet
2848    #[prost(message, optional, tag = "6")]
2849    pub hidden: ::core::option::Option<bool>,
2850    /// The number of seconds "behind" the primary that this replica set member should "lag"
2851    #[prost(message, optional, tag = "7")]
2852    pub secondary_delay_secs: ::core::option::Option<i64>,
2853    /// Priority of host for the election in replSet
2854    #[prost(message, optional, tag = "8")]
2855    pub priority: ::core::option::Option<f64>,
2856    /// Host tags
2857    #[prost(map = "string, string", tag = "9")]
2858    pub tags: ::std::collections::HashMap<
2859        ::prost::alloc::string::String,
2860        ::prost::alloc::string::String,
2861    >,
2862}
2863#[allow(clippy::derive_partial_eq_without_eq)]
2864#[derive(Clone, PartialEq, ::prost::Message)]
2865pub struct MongodbSpec36 {
2866    /// Configuration and resource allocation for mongod 3.6 hosts.
2867    #[prost(message, optional, tag = "1")]
2868    pub mongod: ::core::option::Option<mongodb_spec3_6::Mongod>,
2869    /// Configuration and resource allocation for mongocfg 3.6 hosts.
2870    #[prost(message, optional, tag = "2")]
2871    pub mongocfg: ::core::option::Option<mongodb_spec3_6::MongoCfg>,
2872    /// Configuration and resource allocation for mongos 3.6 hosts.
2873    #[prost(message, optional, tag = "3")]
2874    pub mongos: ::core::option::Option<mongodb_spec3_6::Mongos>,
2875    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) 3.6 hosts.
2876    #[prost(message, optional, tag = "4")]
2877    pub mongoinfra: ::core::option::Option<mongodb_spec3_6::MongoInfra>,
2878}
2879/// Nested message and enum types in `MongodbSpec3_6`.
2880pub mod mongodb_spec3_6 {
2881    #[allow(clippy::derive_partial_eq_without_eq)]
2882    #[derive(Clone, PartialEq, ::prost::Message)]
2883    pub struct Mongod {
2884        /// Configuration for mongod 3.6 hosts.
2885        #[prost(message, optional, tag = "1")]
2886        pub config: ::core::option::Option<super::config::MongodConfig36>,
2887        /// Resources allocated to each mongod host.
2888        #[prost(message, optional, tag = "2")]
2889        pub resources: ::core::option::Option<super::Resources>,
2890        /// Disk size autoscaling settings
2891        #[prost(message, optional, tag = "3")]
2892        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
2893    }
2894    #[allow(clippy::derive_partial_eq_without_eq)]
2895    #[derive(Clone, PartialEq, ::prost::Message)]
2896    pub struct MongoCfg {
2897        /// Configuration for mongocfg 3.6 hosts.
2898        #[prost(message, optional, tag = "1")]
2899        pub config: ::core::option::Option<super::config::MongoCfgConfig36>,
2900        /// Resources allocated to each mongocfg host.
2901        #[prost(message, optional, tag = "2")]
2902        pub resources: ::core::option::Option<super::Resources>,
2903        /// Disk size autoscaling settings
2904        #[prost(message, optional, tag = "3")]
2905        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
2906    }
2907    #[allow(clippy::derive_partial_eq_without_eq)]
2908    #[derive(Clone, PartialEq, ::prost::Message)]
2909    pub struct Mongos {
2910        /// Configuration for mongos 3.6 hosts.
2911        #[prost(message, optional, tag = "1")]
2912        pub config: ::core::option::Option<super::config::MongosConfig36>,
2913        /// Resources allocated to each mongos host.
2914        #[prost(message, optional, tag = "2")]
2915        pub resources: ::core::option::Option<super::Resources>,
2916        /// Disk size autoscaling settings
2917        #[prost(message, optional, tag = "3")]
2918        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
2919    }
2920    #[allow(clippy::derive_partial_eq_without_eq)]
2921    #[derive(Clone, PartialEq, ::prost::Message)]
2922    pub struct MongoInfra {
2923        /// Configuration for mongoinfra 3.6 hosts.
2924        #[prost(message, optional, tag = "1")]
2925        pub config_mongos: ::core::option::Option<super::config::MongosConfig36>,
2926        #[prost(message, optional, tag = "2")]
2927        pub config_mongocfg: ::core::option::Option<super::config::MongoCfgConfig36>,
2928        /// Resources allocated to each mongoinfra (mongos+mongocfg) host.
2929        #[prost(message, optional, tag = "3")]
2930        pub resources: ::core::option::Option<super::Resources>,
2931        /// Disk size autoscaling settings
2932        #[prost(message, optional, tag = "4")]
2933        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
2934    }
2935}
2936#[allow(clippy::derive_partial_eq_without_eq)]
2937#[derive(Clone, PartialEq, ::prost::Message)]
2938pub struct MongodbSpec40 {
2939    /// Configuration and resource allocation for mongod 4.0 hosts.
2940    #[prost(message, optional, tag = "1")]
2941    pub mongod: ::core::option::Option<mongodb_spec4_0::Mongod>,
2942    /// Configuration and resource allocation for mongocfg 4.0 hosts.
2943    #[prost(message, optional, tag = "2")]
2944    pub mongocfg: ::core::option::Option<mongodb_spec4_0::MongoCfg>,
2945    /// Configuration and resource allocation for mongos 4.0 hosts.
2946    #[prost(message, optional, tag = "3")]
2947    pub mongos: ::core::option::Option<mongodb_spec4_0::Mongos>,
2948    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) 4.0 hosts.
2949    #[prost(message, optional, tag = "4")]
2950    pub mongoinfra: ::core::option::Option<mongodb_spec4_0::MongoInfra>,
2951}
2952/// Nested message and enum types in `MongodbSpec4_0`.
2953pub mod mongodb_spec4_0 {
2954    #[allow(clippy::derive_partial_eq_without_eq)]
2955    #[derive(Clone, PartialEq, ::prost::Message)]
2956    pub struct Mongod {
2957        /// Configuration for mongod 4.0 hosts.
2958        #[prost(message, optional, tag = "1")]
2959        pub config: ::core::option::Option<super::config::MongodConfig40>,
2960        /// Resources allocated to each mongod host.
2961        #[prost(message, optional, tag = "2")]
2962        pub resources: ::core::option::Option<super::Resources>,
2963        /// Disk size autoscaling settings
2964        #[prost(message, optional, tag = "3")]
2965        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
2966    }
2967    #[allow(clippy::derive_partial_eq_without_eq)]
2968    #[derive(Clone, PartialEq, ::prost::Message)]
2969    pub struct MongoCfg {
2970        /// Configuration for mongocfg 4.0 hosts.
2971        #[prost(message, optional, tag = "1")]
2972        pub config: ::core::option::Option<super::config::MongoCfgConfig40>,
2973        /// Resources allocated to each mongocfg host.
2974        #[prost(message, optional, tag = "2")]
2975        pub resources: ::core::option::Option<super::Resources>,
2976        /// Disk size autoscaling settings
2977        #[prost(message, optional, tag = "3")]
2978        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
2979    }
2980    #[allow(clippy::derive_partial_eq_without_eq)]
2981    #[derive(Clone, PartialEq, ::prost::Message)]
2982    pub struct Mongos {
2983        /// Configuration for mongos 4.0 hosts.
2984        #[prost(message, optional, tag = "1")]
2985        pub config: ::core::option::Option<super::config::MongosConfig40>,
2986        /// Resources allocated to each mongos host.
2987        #[prost(message, optional, tag = "2")]
2988        pub resources: ::core::option::Option<super::Resources>,
2989        /// Disk size autoscaling settings
2990        #[prost(message, optional, tag = "3")]
2991        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
2992    }
2993    #[allow(clippy::derive_partial_eq_without_eq)]
2994    #[derive(Clone, PartialEq, ::prost::Message)]
2995    pub struct MongoInfra {
2996        /// Configuration for mongoinfra 4.0 hosts.
2997        #[prost(message, optional, tag = "1")]
2998        pub config_mongos: ::core::option::Option<super::config::MongosConfig40>,
2999        #[prost(message, optional, tag = "2")]
3000        pub config_mongocfg: ::core::option::Option<super::config::MongoCfgConfig40>,
3001        /// Resources allocated to each mongoinfra (mongos+mongocfg) host.
3002        #[prost(message, optional, tag = "3")]
3003        pub resources: ::core::option::Option<super::Resources>,
3004        /// Disk size autoscaling settings
3005        #[prost(message, optional, tag = "4")]
3006        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3007    }
3008}
3009#[allow(clippy::derive_partial_eq_without_eq)]
3010#[derive(Clone, PartialEq, ::prost::Message)]
3011pub struct MongodbSpec42 {
3012    /// Configuration and resource allocation for mongod 4.2 hosts.
3013    #[prost(message, optional, tag = "1")]
3014    pub mongod: ::core::option::Option<mongodb_spec4_2::Mongod>,
3015    /// Configuration and resource allocation for mongocfg 4.2 hosts.
3016    #[prost(message, optional, tag = "2")]
3017    pub mongocfg: ::core::option::Option<mongodb_spec4_2::MongoCfg>,
3018    /// Configuration and resource allocation for mongos 4.2 hosts.
3019    #[prost(message, optional, tag = "3")]
3020    pub mongos: ::core::option::Option<mongodb_spec4_2::Mongos>,
3021    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) 4.2 hosts.
3022    #[prost(message, optional, tag = "4")]
3023    pub mongoinfra: ::core::option::Option<mongodb_spec4_2::MongoInfra>,
3024}
3025/// Nested message and enum types in `MongodbSpec4_2`.
3026pub mod mongodb_spec4_2 {
3027    #[allow(clippy::derive_partial_eq_without_eq)]
3028    #[derive(Clone, PartialEq, ::prost::Message)]
3029    pub struct Mongod {
3030        /// Configuration for mongod 4.2 hosts.
3031        #[prost(message, optional, tag = "1")]
3032        pub config: ::core::option::Option<super::config::MongodConfig42>,
3033        /// Resources allocated to each mongod host.
3034        #[prost(message, optional, tag = "2")]
3035        pub resources: ::core::option::Option<super::Resources>,
3036        /// Disk size autoscaling settings
3037        #[prost(message, optional, tag = "3")]
3038        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3039    }
3040    #[allow(clippy::derive_partial_eq_without_eq)]
3041    #[derive(Clone, PartialEq, ::prost::Message)]
3042    pub struct MongoCfg {
3043        /// Configuration for mongocfg 4.2 hosts.
3044        #[prost(message, optional, tag = "1")]
3045        pub config: ::core::option::Option<super::config::MongoCfgConfig42>,
3046        /// Resources allocated to each mongocfg host.
3047        #[prost(message, optional, tag = "2")]
3048        pub resources: ::core::option::Option<super::Resources>,
3049        /// Disk size autoscaling settings
3050        #[prost(message, optional, tag = "3")]
3051        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3052    }
3053    #[allow(clippy::derive_partial_eq_without_eq)]
3054    #[derive(Clone, PartialEq, ::prost::Message)]
3055    pub struct Mongos {
3056        /// Configuration for mongos 4.2 hosts.
3057        #[prost(message, optional, tag = "1")]
3058        pub config: ::core::option::Option<super::config::MongosConfig42>,
3059        /// Resources allocated to each mongos host.
3060        #[prost(message, optional, tag = "2")]
3061        pub resources: ::core::option::Option<super::Resources>,
3062        /// Disk size autoscaling settings
3063        #[prost(message, optional, tag = "3")]
3064        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3065    }
3066    #[allow(clippy::derive_partial_eq_without_eq)]
3067    #[derive(Clone, PartialEq, ::prost::Message)]
3068    pub struct MongoInfra {
3069        /// Configuration for mongoinfra 4.2 hosts.
3070        #[prost(message, optional, tag = "1")]
3071        pub config_mongos: ::core::option::Option<super::config::MongosConfig42>,
3072        #[prost(message, optional, tag = "2")]
3073        pub config_mongocfg: ::core::option::Option<super::config::MongoCfgConfig42>,
3074        /// Resources allocated to each mongoinfra (mongos+mongocfg) host.
3075        #[prost(message, optional, tag = "3")]
3076        pub resources: ::core::option::Option<super::Resources>,
3077        /// Disk size autoscaling settings
3078        #[prost(message, optional, tag = "4")]
3079        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3080    }
3081}
3082#[allow(clippy::derive_partial_eq_without_eq)]
3083#[derive(Clone, PartialEq, ::prost::Message)]
3084pub struct MongodbSpec44 {
3085    /// Configuration and resource allocation for mongod 4.4 hosts.
3086    #[prost(message, optional, tag = "1")]
3087    pub mongod: ::core::option::Option<mongodb_spec4_4::Mongod>,
3088    /// Configuration and resource allocation for mongocfg 4.4 hosts.
3089    #[prost(message, optional, tag = "2")]
3090    pub mongocfg: ::core::option::Option<mongodb_spec4_4::MongoCfg>,
3091    /// Configuration and resource allocation for mongos 4.4 hosts.
3092    #[prost(message, optional, tag = "3")]
3093    pub mongos: ::core::option::Option<mongodb_spec4_4::Mongos>,
3094    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) 4.4 hosts.
3095    #[prost(message, optional, tag = "4")]
3096    pub mongoinfra: ::core::option::Option<mongodb_spec4_4::MongoInfra>,
3097}
3098/// Nested message and enum types in `MongodbSpec4_4`.
3099pub mod mongodb_spec4_4 {
3100    #[allow(clippy::derive_partial_eq_without_eq)]
3101    #[derive(Clone, PartialEq, ::prost::Message)]
3102    pub struct Mongod {
3103        /// Configuration for mongod 4.4 hosts.
3104        #[prost(message, optional, tag = "1")]
3105        pub config: ::core::option::Option<super::config::MongodConfig44>,
3106        /// Resources allocated to each mongod host.
3107        #[prost(message, optional, tag = "2")]
3108        pub resources: ::core::option::Option<super::Resources>,
3109        /// Disk size autoscaling settings
3110        #[prost(message, optional, tag = "3")]
3111        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3112    }
3113    #[allow(clippy::derive_partial_eq_without_eq)]
3114    #[derive(Clone, PartialEq, ::prost::Message)]
3115    pub struct MongoCfg {
3116        /// Configuration for mongocfg 4.4 hosts.
3117        #[prost(message, optional, tag = "1")]
3118        pub config: ::core::option::Option<super::config::MongoCfgConfig44>,
3119        /// Resources allocated to each mongocfg host.
3120        #[prost(message, optional, tag = "2")]
3121        pub resources: ::core::option::Option<super::Resources>,
3122        /// Disk size autoscaling settings
3123        #[prost(message, optional, tag = "3")]
3124        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3125    }
3126    #[allow(clippy::derive_partial_eq_without_eq)]
3127    #[derive(Clone, PartialEq, ::prost::Message)]
3128    pub struct Mongos {
3129        /// Configuration for mongos 4.4 hosts.
3130        #[prost(message, optional, tag = "1")]
3131        pub config: ::core::option::Option<super::config::MongosConfig44>,
3132        /// Resources allocated to each mongos host.
3133        #[prost(message, optional, tag = "2")]
3134        pub resources: ::core::option::Option<super::Resources>,
3135        /// Disk size autoscaling settings
3136        #[prost(message, optional, tag = "3")]
3137        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3138    }
3139    #[allow(clippy::derive_partial_eq_without_eq)]
3140    #[derive(Clone, PartialEq, ::prost::Message)]
3141    pub struct MongoInfra {
3142        /// Configuration for mongoinfra 4.4 hosts.
3143        #[prost(message, optional, tag = "1")]
3144        pub config_mongos: ::core::option::Option<super::config::MongosConfig44>,
3145        #[prost(message, optional, tag = "2")]
3146        pub config_mongocfg: ::core::option::Option<super::config::MongoCfgConfig44>,
3147        /// Resources allocated to each mongoinfra (mongos+mongocfg) host.
3148        #[prost(message, optional, tag = "3")]
3149        pub resources: ::core::option::Option<super::Resources>,
3150        /// Disk size autoscaling settings
3151        #[prost(message, optional, tag = "4")]
3152        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3153    }
3154}
3155#[allow(clippy::derive_partial_eq_without_eq)]
3156#[derive(Clone, PartialEq, ::prost::Message)]
3157pub struct MongodbSpec44Enterprise {
3158    /// Configuration and resource allocation for mongod 4.4 hosts.
3159    #[prost(message, optional, tag = "1")]
3160    pub mongod: ::core::option::Option<mongodb_spec4_4_enterprise::Mongod>,
3161    /// Configuration and resource allocation for mongocfg 4.4 hosts.
3162    #[prost(message, optional, tag = "2")]
3163    pub mongocfg: ::core::option::Option<mongodb_spec4_4_enterprise::MongoCfg>,
3164    /// Configuration and resource allocation for mongos 4.4 hosts.
3165    #[prost(message, optional, tag = "3")]
3166    pub mongos: ::core::option::Option<mongodb_spec4_4_enterprise::Mongos>,
3167    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) 4.4 hosts.
3168    #[prost(message, optional, tag = "4")]
3169    pub mongoinfra: ::core::option::Option<mongodb_spec4_4_enterprise::MongoInfra>,
3170}
3171/// Nested message and enum types in `MongodbSpec4_4_enterprise`.
3172pub mod mongodb_spec4_4_enterprise {
3173    #[allow(clippy::derive_partial_eq_without_eq)]
3174    #[derive(Clone, PartialEq, ::prost::Message)]
3175    pub struct Mongod {
3176        /// Configuration for mongod 4.4 hosts.
3177        #[prost(message, optional, tag = "1")]
3178        pub config: ::core::option::Option<super::config::MongodConfig44Enterprise>,
3179        /// Resources allocated to each mongod host.
3180        #[prost(message, optional, tag = "2")]
3181        pub resources: ::core::option::Option<super::Resources>,
3182        /// Disk size autoscaling settings
3183        #[prost(message, optional, tag = "3")]
3184        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3185    }
3186    #[allow(clippy::derive_partial_eq_without_eq)]
3187    #[derive(Clone, PartialEq, ::prost::Message)]
3188    pub struct MongoCfg {
3189        /// Configuration for mongocfg 4.4 hosts.
3190        #[prost(message, optional, tag = "1")]
3191        pub config: ::core::option::Option<super::config::MongoCfgConfig44Enterprise>,
3192        /// Resources allocated to each mongocfg host.
3193        #[prost(message, optional, tag = "2")]
3194        pub resources: ::core::option::Option<super::Resources>,
3195        /// Disk size autoscaling settings
3196        #[prost(message, optional, tag = "3")]
3197        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3198    }
3199    #[allow(clippy::derive_partial_eq_without_eq)]
3200    #[derive(Clone, PartialEq, ::prost::Message)]
3201    pub struct Mongos {
3202        /// Configuration for mongos 4.4 hosts.
3203        #[prost(message, optional, tag = "1")]
3204        pub config: ::core::option::Option<super::config::MongosConfig44Enterprise>,
3205        /// Resources allocated to each mongos host.
3206        #[prost(message, optional, tag = "2")]
3207        pub resources: ::core::option::Option<super::Resources>,
3208        /// Disk size autoscaling settings
3209        #[prost(message, optional, tag = "3")]
3210        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3211    }
3212    #[allow(clippy::derive_partial_eq_without_eq)]
3213    #[derive(Clone, PartialEq, ::prost::Message)]
3214    pub struct MongoInfra {
3215        /// Configuration for mongoinfra 4.4 hosts.
3216        #[prost(message, optional, tag = "1")]
3217        pub config_mongos: ::core::option::Option<
3218            super::config::MongosConfig44Enterprise,
3219        >,
3220        #[prost(message, optional, tag = "2")]
3221        pub config_mongocfg: ::core::option::Option<
3222            super::config::MongoCfgConfig44Enterprise,
3223        >,
3224        /// Resources allocated to each mongoinfra (mongos+mongocfg) host.
3225        #[prost(message, optional, tag = "3")]
3226        pub resources: ::core::option::Option<super::Resources>,
3227        /// Disk size autoscaling settings
3228        #[prost(message, optional, tag = "4")]
3229        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3230    }
3231}
3232#[allow(clippy::derive_partial_eq_without_eq)]
3233#[derive(Clone, PartialEq, ::prost::Message)]
3234pub struct MongodbSpec50 {
3235    /// Configuration and resource allocation for mongod 5.0 hosts.
3236    #[prost(message, optional, tag = "1")]
3237    pub mongod: ::core::option::Option<mongodb_spec5_0::Mongod>,
3238    /// Configuration and resource allocation for mongocfg 5.0 hosts.
3239    #[prost(message, optional, tag = "2")]
3240    pub mongocfg: ::core::option::Option<mongodb_spec5_0::MongoCfg>,
3241    /// Configuration and resource allocation for mongos 5.0 hosts.
3242    #[prost(message, optional, tag = "3")]
3243    pub mongos: ::core::option::Option<mongodb_spec5_0::Mongos>,
3244    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) 5.0 hosts.
3245    #[prost(message, optional, tag = "4")]
3246    pub mongoinfra: ::core::option::Option<mongodb_spec5_0::MongoInfra>,
3247}
3248/// Nested message and enum types in `MongodbSpec5_0`.
3249pub mod mongodb_spec5_0 {
3250    #[allow(clippy::derive_partial_eq_without_eq)]
3251    #[derive(Clone, PartialEq, ::prost::Message)]
3252    pub struct Mongod {
3253        /// Configuration for mongod 5.0 hosts.
3254        #[prost(message, optional, tag = "1")]
3255        pub config: ::core::option::Option<super::config::MongodConfig50>,
3256        /// Resources allocated to each mongod host.
3257        #[prost(message, optional, tag = "2")]
3258        pub resources: ::core::option::Option<super::Resources>,
3259        /// Disk size autoscaling settings
3260        #[prost(message, optional, tag = "3")]
3261        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3262    }
3263    #[allow(clippy::derive_partial_eq_without_eq)]
3264    #[derive(Clone, PartialEq, ::prost::Message)]
3265    pub struct MongoCfg {
3266        /// Configuration for mongocfg 5.0 hosts.
3267        #[prost(message, optional, tag = "1")]
3268        pub config: ::core::option::Option<super::config::MongoCfgConfig50>,
3269        /// Resources allocated to each mongocfg host.
3270        #[prost(message, optional, tag = "2")]
3271        pub resources: ::core::option::Option<super::Resources>,
3272        /// Disk size autoscaling settings
3273        #[prost(message, optional, tag = "3")]
3274        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3275    }
3276    #[allow(clippy::derive_partial_eq_without_eq)]
3277    #[derive(Clone, PartialEq, ::prost::Message)]
3278    pub struct Mongos {
3279        /// Configuration for mongos 5.0 hosts.
3280        #[prost(message, optional, tag = "1")]
3281        pub config: ::core::option::Option<super::config::MongosConfig50>,
3282        /// Resources allocated to each mongos host.
3283        #[prost(message, optional, tag = "2")]
3284        pub resources: ::core::option::Option<super::Resources>,
3285        /// Disk size autoscaling settings
3286        #[prost(message, optional, tag = "3")]
3287        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3288    }
3289    #[allow(clippy::derive_partial_eq_without_eq)]
3290    #[derive(Clone, PartialEq, ::prost::Message)]
3291    pub struct MongoInfra {
3292        /// Configuration for mongoinfra 5.0 hosts.
3293        #[prost(message, optional, tag = "1")]
3294        pub config_mongos: ::core::option::Option<super::config::MongosConfig50>,
3295        #[prost(message, optional, tag = "2")]
3296        pub config_mongocfg: ::core::option::Option<super::config::MongoCfgConfig50>,
3297        /// Resources allocated to each mongoinfra (mongos+mongocfg) host.
3298        #[prost(message, optional, tag = "3")]
3299        pub resources: ::core::option::Option<super::Resources>,
3300        /// Disk size autoscaling settings
3301        #[prost(message, optional, tag = "4")]
3302        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3303    }
3304}
3305#[allow(clippy::derive_partial_eq_without_eq)]
3306#[derive(Clone, PartialEq, ::prost::Message)]
3307pub struct MongodbSpec50Enterprise {
3308    /// Configuration and resource allocation for mongod 5.0 hosts.
3309    #[prost(message, optional, tag = "1")]
3310    pub mongod: ::core::option::Option<mongodb_spec5_0_enterprise::Mongod>,
3311    /// Configuration and resource allocation for mongocfg 5.0 hosts.
3312    #[prost(message, optional, tag = "2")]
3313    pub mongocfg: ::core::option::Option<mongodb_spec5_0_enterprise::MongoCfg>,
3314    /// Configuration and resource allocation for mongos 5.0 hosts.
3315    #[prost(message, optional, tag = "3")]
3316    pub mongos: ::core::option::Option<mongodb_spec5_0_enterprise::Mongos>,
3317    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) 5.0 hosts.
3318    #[prost(message, optional, tag = "4")]
3319    pub mongoinfra: ::core::option::Option<mongodb_spec5_0_enterprise::MongoInfra>,
3320}
3321/// Nested message and enum types in `MongodbSpec5_0_enterprise`.
3322pub mod mongodb_spec5_0_enterprise {
3323    #[allow(clippy::derive_partial_eq_without_eq)]
3324    #[derive(Clone, PartialEq, ::prost::Message)]
3325    pub struct Mongod {
3326        /// Configuration for mongod 5.0 hosts.
3327        #[prost(message, optional, tag = "1")]
3328        pub config: ::core::option::Option<super::config::MongodConfig50Enterprise>,
3329        /// Resources allocated to each mongod host.
3330        #[prost(message, optional, tag = "2")]
3331        pub resources: ::core::option::Option<super::Resources>,
3332        /// Disk size autoscaling settings
3333        #[prost(message, optional, tag = "3")]
3334        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3335    }
3336    #[allow(clippy::derive_partial_eq_without_eq)]
3337    #[derive(Clone, PartialEq, ::prost::Message)]
3338    pub struct MongoCfg {
3339        /// Configuration for mongocfg 5.0 hosts.
3340        #[prost(message, optional, tag = "1")]
3341        pub config: ::core::option::Option<super::config::MongoCfgConfig50Enterprise>,
3342        /// Resources allocated to each mongocfg host.
3343        #[prost(message, optional, tag = "2")]
3344        pub resources: ::core::option::Option<super::Resources>,
3345        /// Disk size autoscaling settings
3346        #[prost(message, optional, tag = "3")]
3347        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3348    }
3349    #[allow(clippy::derive_partial_eq_without_eq)]
3350    #[derive(Clone, PartialEq, ::prost::Message)]
3351    pub struct Mongos {
3352        /// Configuration for mongos 5.0 hosts.
3353        #[prost(message, optional, tag = "1")]
3354        pub config: ::core::option::Option<super::config::MongosConfig50Enterprise>,
3355        /// Resources allocated to each mongos host.
3356        #[prost(message, optional, tag = "2")]
3357        pub resources: ::core::option::Option<super::Resources>,
3358        /// Disk size autoscaling settings
3359        #[prost(message, optional, tag = "3")]
3360        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3361    }
3362    #[allow(clippy::derive_partial_eq_without_eq)]
3363    #[derive(Clone, PartialEq, ::prost::Message)]
3364    pub struct MongoInfra {
3365        /// Configuration for mongoinfra 5.0 hosts.
3366        #[prost(message, optional, tag = "1")]
3367        pub config_mongos: ::core::option::Option<
3368            super::config::MongosConfig50Enterprise,
3369        >,
3370        #[prost(message, optional, tag = "2")]
3371        pub config_mongocfg: ::core::option::Option<
3372            super::config::MongoCfgConfig50Enterprise,
3373        >,
3374        /// Resources allocated to each mongoinfra (mongos+mongocfg) host.
3375        #[prost(message, optional, tag = "3")]
3376        pub resources: ::core::option::Option<super::Resources>,
3377        /// Disk size autoscaling settings
3378        #[prost(message, optional, tag = "4")]
3379        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3380    }
3381}
3382#[allow(clippy::derive_partial_eq_without_eq)]
3383#[derive(Clone, PartialEq, ::prost::Message)]
3384pub struct MongodbSpec60 {
3385    /// Configuration and resource allocation for mongod 6.0 hosts.
3386    #[prost(message, optional, tag = "1")]
3387    pub mongod: ::core::option::Option<mongodb_spec6_0::Mongod>,
3388    /// Configuration and resource allocation for mongocfg 6.0 hosts.
3389    #[prost(message, optional, tag = "2")]
3390    pub mongocfg: ::core::option::Option<mongodb_spec6_0::MongoCfg>,
3391    /// Configuration and resource allocation for mongos 6.0 hosts.
3392    #[prost(message, optional, tag = "3")]
3393    pub mongos: ::core::option::Option<mongodb_spec6_0::Mongos>,
3394    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) 6.0 hosts.
3395    #[prost(message, optional, tag = "4")]
3396    pub mongoinfra: ::core::option::Option<mongodb_spec6_0::MongoInfra>,
3397}
3398/// Nested message and enum types in `MongodbSpec6_0`.
3399pub mod mongodb_spec6_0 {
3400    #[allow(clippy::derive_partial_eq_without_eq)]
3401    #[derive(Clone, PartialEq, ::prost::Message)]
3402    pub struct Mongod {
3403        /// Configuration for mongod 6.0 hosts.
3404        #[prost(message, optional, tag = "1")]
3405        pub config: ::core::option::Option<super::config::MongodConfig60>,
3406        /// Resources allocated to each mongod host.
3407        #[prost(message, optional, tag = "2")]
3408        pub resources: ::core::option::Option<super::Resources>,
3409        /// Disk size autoscaling settings
3410        #[prost(message, optional, tag = "3")]
3411        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3412    }
3413    #[allow(clippy::derive_partial_eq_without_eq)]
3414    #[derive(Clone, PartialEq, ::prost::Message)]
3415    pub struct MongoCfg {
3416        /// Configuration for mongocfg 6.0 hosts.
3417        #[prost(message, optional, tag = "1")]
3418        pub config: ::core::option::Option<super::config::MongoCfgConfig60>,
3419        /// Resources allocated to each mongocfg host.
3420        #[prost(message, optional, tag = "2")]
3421        pub resources: ::core::option::Option<super::Resources>,
3422        /// Disk size autoscaling settings
3423        #[prost(message, optional, tag = "3")]
3424        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3425    }
3426    #[allow(clippy::derive_partial_eq_without_eq)]
3427    #[derive(Clone, PartialEq, ::prost::Message)]
3428    pub struct Mongos {
3429        /// Configuration for mongos 6.0 hosts.
3430        #[prost(message, optional, tag = "1")]
3431        pub config: ::core::option::Option<super::config::MongosConfig60>,
3432        /// Resources allocated to each mongos host.
3433        #[prost(message, optional, tag = "2")]
3434        pub resources: ::core::option::Option<super::Resources>,
3435        /// Disk size autoscaling settings
3436        #[prost(message, optional, tag = "3")]
3437        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3438    }
3439    #[allow(clippy::derive_partial_eq_without_eq)]
3440    #[derive(Clone, PartialEq, ::prost::Message)]
3441    pub struct MongoInfra {
3442        /// Configuration for mongoinfra 6.0 hosts.
3443        #[prost(message, optional, tag = "1")]
3444        pub config_mongos: ::core::option::Option<super::config::MongosConfig60>,
3445        #[prost(message, optional, tag = "2")]
3446        pub config_mongocfg: ::core::option::Option<super::config::MongoCfgConfig60>,
3447        /// Resources allocated to each mongoinfra (mongos+mongocfg) host.
3448        #[prost(message, optional, tag = "3")]
3449        pub resources: ::core::option::Option<super::Resources>,
3450        /// Disk size autoscaling settings
3451        #[prost(message, optional, tag = "4")]
3452        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3453    }
3454}
3455#[allow(clippy::derive_partial_eq_without_eq)]
3456#[derive(Clone, PartialEq, ::prost::Message)]
3457pub struct MongodbSpec60Enterprise {
3458    /// Configuration and resource allocation for mongod 6.0 hosts.
3459    #[prost(message, optional, tag = "1")]
3460    pub mongod: ::core::option::Option<mongodb_spec6_0_enterprise::Mongod>,
3461    /// Configuration and resource allocation for mongocfg 6.0 hosts.
3462    #[prost(message, optional, tag = "2")]
3463    pub mongocfg: ::core::option::Option<mongodb_spec6_0_enterprise::MongoCfg>,
3464    /// Configuration and resource allocation for mongos 6.0 hosts.
3465    #[prost(message, optional, tag = "3")]
3466    pub mongos: ::core::option::Option<mongodb_spec6_0_enterprise::Mongos>,
3467    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) 6.0 hosts.
3468    #[prost(message, optional, tag = "4")]
3469    pub mongoinfra: ::core::option::Option<mongodb_spec6_0_enterprise::MongoInfra>,
3470}
3471/// Nested message and enum types in `MongodbSpec6_0_enterprise`.
3472pub mod mongodb_spec6_0_enterprise {
3473    #[allow(clippy::derive_partial_eq_without_eq)]
3474    #[derive(Clone, PartialEq, ::prost::Message)]
3475    pub struct Mongod {
3476        /// Configuration for mongod 6.0 hosts.
3477        #[prost(message, optional, tag = "1")]
3478        pub config: ::core::option::Option<super::config::MongodConfig60Enterprise>,
3479        /// Resources allocated to each mongod host.
3480        #[prost(message, optional, tag = "2")]
3481        pub resources: ::core::option::Option<super::Resources>,
3482        /// Disk size autoscaling settings
3483        #[prost(message, optional, tag = "3")]
3484        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3485    }
3486    #[allow(clippy::derive_partial_eq_without_eq)]
3487    #[derive(Clone, PartialEq, ::prost::Message)]
3488    pub struct MongoCfg {
3489        /// Configuration for mongocfg 6.0 hosts.
3490        #[prost(message, optional, tag = "1")]
3491        pub config: ::core::option::Option<super::config::MongoCfgConfig60Enterprise>,
3492        /// Resources allocated to each mongocfg host.
3493        #[prost(message, optional, tag = "2")]
3494        pub resources: ::core::option::Option<super::Resources>,
3495        /// Disk size autoscaling settings
3496        #[prost(message, optional, tag = "3")]
3497        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3498    }
3499    #[allow(clippy::derive_partial_eq_without_eq)]
3500    #[derive(Clone, PartialEq, ::prost::Message)]
3501    pub struct Mongos {
3502        /// Configuration for mongos 6.0 hosts.
3503        #[prost(message, optional, tag = "1")]
3504        pub config: ::core::option::Option<super::config::MongosConfig60Enterprise>,
3505        /// Resources allocated to each mongos host.
3506        #[prost(message, optional, tag = "2")]
3507        pub resources: ::core::option::Option<super::Resources>,
3508        /// Disk size autoscaling settings
3509        #[prost(message, optional, tag = "3")]
3510        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3511    }
3512    #[allow(clippy::derive_partial_eq_without_eq)]
3513    #[derive(Clone, PartialEq, ::prost::Message)]
3514    pub struct MongoInfra {
3515        /// Configuration for mongoinfra 6.0 hosts.
3516        #[prost(message, optional, tag = "1")]
3517        pub config_mongos: ::core::option::Option<
3518            super::config::MongosConfig60Enterprise,
3519        >,
3520        #[prost(message, optional, tag = "2")]
3521        pub config_mongocfg: ::core::option::Option<
3522            super::config::MongoCfgConfig60Enterprise,
3523        >,
3524        /// Resources allocated to each mongoinfra (mongos+mongocfg) host.
3525        #[prost(message, optional, tag = "3")]
3526        pub resources: ::core::option::Option<super::Resources>,
3527        /// Disk size autoscaling settings
3528        #[prost(message, optional, tag = "4")]
3529        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3530    }
3531}
3532#[allow(clippy::derive_partial_eq_without_eq)]
3533#[derive(Clone, PartialEq, ::prost::Message)]
3534pub struct MongodbSpec {
3535    /// Configuration and resource allocation for mongod hosts.
3536    #[prost(message, optional, tag = "1")]
3537    pub mongod: ::core::option::Option<mongodb_spec::Mongod>,
3538    /// Configuration and resource allocation for mongocfg hosts.
3539    #[prost(message, optional, tag = "2")]
3540    pub mongocfg: ::core::option::Option<mongodb_spec::MongoCfg>,
3541    /// Configuration and resource allocation for mongos hosts.
3542    #[prost(message, optional, tag = "3")]
3543    pub mongos: ::core::option::Option<mongodb_spec::Mongos>,
3544    /// Configuration and resource allocation for mongoinfra (mongos+mongocfg) hosts.
3545    #[prost(message, optional, tag = "4")]
3546    pub mongoinfra: ::core::option::Option<mongodb_spec::MongoInfra>,
3547}
3548/// Nested message and enum types in `MongodbSpec`.
3549pub mod mongodb_spec {
3550    #[allow(clippy::derive_partial_eq_without_eq)]
3551    #[derive(Clone, PartialEq, ::prost::Message)]
3552    pub struct Mongod {
3553        #[prost(message, optional, tag = "1")]
3554        pub config: ::core::option::Option<super::config::MongodConfig>,
3555        /// Resources allocated to each mongod host.
3556        #[prost(message, optional, tag = "2")]
3557        pub resources: ::core::option::Option<super::Resources>,
3558        /// Disk size autoscaling settings
3559        #[prost(message, optional, tag = "3")]
3560        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3561    }
3562    #[allow(clippy::derive_partial_eq_without_eq)]
3563    #[derive(Clone, PartialEq, ::prost::Message)]
3564    pub struct MongoCfg {
3565        /// Configuration for mongocfg hosts.
3566        #[prost(message, optional, tag = "1")]
3567        pub config: ::core::option::Option<super::config::MongoCfgConfig>,
3568        /// Resources allocated to each mongocfg host.
3569        #[prost(message, optional, tag = "2")]
3570        pub resources: ::core::option::Option<super::Resources>,
3571        /// Disk size autoscaling settings
3572        #[prost(message, optional, tag = "3")]
3573        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3574    }
3575    #[allow(clippy::derive_partial_eq_without_eq)]
3576    #[derive(Clone, PartialEq, ::prost::Message)]
3577    pub struct Mongos {
3578        /// Configuration for mongos hosts.
3579        #[prost(message, optional, tag = "1")]
3580        pub config: ::core::option::Option<super::config::MongosConfig>,
3581        /// Resources allocated to each mongos host.
3582        #[prost(message, optional, tag = "2")]
3583        pub resources: ::core::option::Option<super::Resources>,
3584        /// Disk size autoscaling settings
3585        #[prost(message, optional, tag = "3")]
3586        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3587    }
3588    #[allow(clippy::derive_partial_eq_without_eq)]
3589    #[derive(Clone, PartialEq, ::prost::Message)]
3590    pub struct MongoInfra {
3591        /// Configuration for mongoinfra hosts.
3592        #[prost(message, optional, tag = "1")]
3593        pub config_mongos: ::core::option::Option<super::config::MongosConfig>,
3594        #[prost(message, optional, tag = "2")]
3595        pub config_mongocfg: ::core::option::Option<super::config::MongoCfgConfig>,
3596        /// Resources allocated to each mongoinfra (mongos+mongocfg) host.
3597        #[prost(message, optional, tag = "3")]
3598        pub resources: ::core::option::Option<super::Resources>,
3599        /// Disk size autoscaling settings
3600        #[prost(message, optional, tag = "4")]
3601        pub disk_size_autoscaling: ::core::option::Option<super::DiskSizeAutoscaling>,
3602    }
3603}
3604#[allow(clippy::derive_partial_eq_without_eq)]
3605#[derive(Clone, PartialEq, ::prost::Message)]
3606pub struct ConfigSpec {
3607    /// Version of MongoDB used in the cluster. Possible values: `3.6`, `4.0`, `4.2`, `4.4`, `4.4-enterprise`, `5.0`, `5.0-enterprise`, `6.0`, `6.0-enterprise`.
3608    #[prost(string, tag = "1")]
3609    pub version: ::prost::alloc::string::String,
3610    /// MongoDB feature compatibility version. See usage details in [MongoDB documentation](<https://docs.mongodb.com/manual/reference/command/setFeatureCompatibilityVersion/>).
3611    ///
3612    /// Possible values:
3613    /// * `3.6` - persist data compatibility for version 3.6. After setting this option the data will not be compatible with 3.4 or older.
3614    /// * `4.0` - persist data compatibility for version 4.0. After setting this option the data will not be compatible with 3.6 or older.
3615    /// * `4.2` - persist data compatibility for version 4.2. After setting this option the data will not be compatible with 4.0 or older.
3616    /// * `4.4` - persist data compatibility for version 4.4. After setting this option the data will not be compatible with 4.2 or older.
3617    /// * `5.0` - persist data compatibility for version 5.0. After setting this option the data will not be compatible with 4.4 or older.
3618    /// * `6.0` - persist data compatibility for version 6.0. After setting this option the data will not be compatible with 5.0 or older.
3619    #[prost(string, tag = "5")]
3620    pub feature_compatibility_version: ::prost::alloc::string::String,
3621    /// Time to start the daily backup, in the UTC timezone.
3622    #[prost(message, optional, tag = "3")]
3623    pub backup_window_start: ::core::option::Option<
3624        super::super::super::super::super::google::r#type::TimeOfDay,
3625    >,
3626    /// Retain period of automatically created backup in days
3627    #[prost(message, optional, tag = "9")]
3628    pub backup_retain_period_days: ::core::option::Option<i64>,
3629    /// Performance Diagnosics configuration
3630    #[prost(message, optional, tag = "13")]
3631    pub performance_diagnostics: ::core::option::Option<PerformanceDiagnosticsConfig>,
3632    /// Access policy to DB
3633    #[prost(message, optional, tag = "6")]
3634    pub access: ::core::option::Option<Access>,
3635    /// Configuration and resource allocation for a MongoDB 7.0 Enterprise cluster.
3636    #[prost(message, optional, tag = "20")]
3637    pub mongodb: ::core::option::Option<MongodbSpec>,
3638    #[prost(oneof = "config_spec::MongodbSpec", tags = "2, 4, 7, 8, 10, 14, 11, 12, 15")]
3639    pub mongodb_spec: ::core::option::Option<config_spec::MongodbSpec>,
3640}
3641/// Nested message and enum types in `ConfigSpec`.
3642pub mod config_spec {
3643    #[allow(clippy::derive_partial_eq_without_eq)]
3644    #[derive(Clone, PartialEq, ::prost::Oneof)]
3645    pub enum MongodbSpec {
3646        /// Configuration and resource allocation for a MongoDB 3.6 cluster.
3647        #[prost(message, tag = "2")]
3648        MongodbSpec36(super::MongodbSpec36),
3649        /// Configuration and resource allocation for a MongoDB 4.0 cluster.
3650        #[prost(message, tag = "4")]
3651        MongodbSpec40(super::MongodbSpec40),
3652        /// Configuration and resource allocation for a MongoDB 4.2 cluster.
3653        #[prost(message, tag = "7")]
3654        MongodbSpec42(super::MongodbSpec42),
3655        /// Configuration and resource allocation for a MongoDB 4.4 cluster.
3656        #[prost(message, tag = "8")]
3657        MongodbSpec44(super::MongodbSpec44),
3658        /// Configuration and resource allocation for a MongoDB 5.0 cluster.
3659        #[prost(message, tag = "10")]
3660        MongodbSpec50(super::MongodbSpec50),
3661        /// Configuration and resource allocation for a MongoDB 6.0 cluster.
3662        #[prost(message, tag = "14")]
3663        MongodbSpec60(super::MongodbSpec60),
3664        /// Configuration and resource allocation for a MongoDB 4.4 Enterprise cluster.
3665        #[prost(message, tag = "11")]
3666        MongodbSpec44Enterprise(super::MongodbSpec44Enterprise),
3667        /// Configuration and resource allocation for a MongoDB 5.0 Enterprise cluster.
3668        #[prost(message, tag = "12")]
3669        MongodbSpec50Enterprise(super::MongodbSpec50Enterprise),
3670        /// Configuration and resource allocation for a MongoDB 6.0 Enterprise cluster.
3671        #[prost(message, tag = "15")]
3672        MongodbSpec60Enterprise(super::MongodbSpec60Enterprise),
3673    }
3674}
3675/// Generated client implementations.
3676pub mod cluster_service_client {
3677    #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
3678    use tonic::codegen::*;
3679    use tonic::codegen::http::Uri;
3680    /// A set of methods for managing MongoDB Cluster resources.
3681    #[derive(Debug, Clone)]
3682    pub struct ClusterServiceClient<T> {
3683        inner: tonic::client::Grpc<T>,
3684    }
3685    impl ClusterServiceClient<tonic::transport::Channel> {
3686        /// Attempt to create a new client by connecting to a given endpoint.
3687        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
3688        where
3689            D: TryInto<tonic::transport::Endpoint>,
3690            D::Error: Into<StdError>,
3691        {
3692            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
3693            Ok(Self::new(conn))
3694        }
3695    }
3696    impl<T> ClusterServiceClient<T>
3697    where
3698        T: tonic::client::GrpcService<tonic::body::BoxBody>,
3699        T::Error: Into<StdError>,
3700        T::ResponseBody: Body<Data = Bytes> + Send + 'static,
3701        <T::ResponseBody as Body>::Error: Into<StdError> + Send,
3702    {
3703        pub fn new(inner: T) -> Self {
3704            let inner = tonic::client::Grpc::new(inner);
3705            Self { inner }
3706        }
3707        pub fn with_origin(inner: T, origin: Uri) -> Self {
3708            let inner = tonic::client::Grpc::with_origin(inner, origin);
3709            Self { inner }
3710        }
3711        pub fn with_interceptor<F>(
3712            inner: T,
3713            interceptor: F,
3714        ) -> ClusterServiceClient<InterceptedService<T, F>>
3715        where
3716            F: tonic::service::Interceptor,
3717            T::ResponseBody: Default,
3718            T: tonic::codegen::Service<
3719                http::Request<tonic::body::BoxBody>,
3720                Response = http::Response<
3721                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
3722                >,
3723            >,
3724            <T as tonic::codegen::Service<
3725                http::Request<tonic::body::BoxBody>,
3726            >>::Error: Into<StdError> + Send + Sync,
3727        {
3728            ClusterServiceClient::new(InterceptedService::new(inner, interceptor))
3729        }
3730        /// Compress requests with the given encoding.
3731        ///
3732        /// This requires the server to support it otherwise it might respond with an
3733        /// error.
3734        #[must_use]
3735        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
3736            self.inner = self.inner.send_compressed(encoding);
3737            self
3738        }
3739        /// Enable decompressing responses.
3740        #[must_use]
3741        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
3742            self.inner = self.inner.accept_compressed(encoding);
3743            self
3744        }
3745        /// Limits the maximum size of a decoded message.
3746        ///
3747        /// Default: `4MB`
3748        #[must_use]
3749        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
3750            self.inner = self.inner.max_decoding_message_size(limit);
3751            self
3752        }
3753        /// Limits the maximum size of an encoded message.
3754        ///
3755        /// Default: `usize::MAX`
3756        #[must_use]
3757        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
3758            self.inner = self.inner.max_encoding_message_size(limit);
3759            self
3760        }
3761        /// Returns the specified MongoDB Cluster resource.
3762        ///
3763        /// To get the list of available MongoDB Cluster resources, make a [List] request.
3764        pub async fn get(
3765            &mut self,
3766            request: impl tonic::IntoRequest<super::GetClusterRequest>,
3767        ) -> std::result::Result<tonic::Response<super::Cluster>, tonic::Status> {
3768            self.inner
3769                .ready()
3770                .await
3771                .map_err(|e| {
3772                    tonic::Status::new(
3773                        tonic::Code::Unknown,
3774                        format!("Service was not ready: {}", e.into()),
3775                    )
3776                })?;
3777            let codec = tonic::codec::ProstCodec::default();
3778            let path = http::uri::PathAndQuery::from_static(
3779                "/yandex.cloud.mdb.mongodb.v1.ClusterService/Get",
3780            );
3781            let mut req = request.into_request();
3782            req.extensions_mut()
3783                .insert(
3784                    GrpcMethod::new("yandex.cloud.mdb.mongodb.v1.ClusterService", "Get"),
3785                );
3786            self.inner.unary(req, path, codec).await
3787        }
3788        /// Retrieves the list of MongoDB Cluster resources that belong
3789        /// to the specified folder.
3790        pub async fn list(
3791            &mut self,
3792            request: impl tonic::IntoRequest<super::ListClustersRequest>,
3793        ) -> std::result::Result<
3794            tonic::Response<super::ListClustersResponse>,
3795            tonic::Status,
3796        > {
3797            self.inner
3798                .ready()
3799                .await
3800                .map_err(|e| {
3801                    tonic::Status::new(
3802                        tonic::Code::Unknown,
3803                        format!("Service was not ready: {}", e.into()),
3804                    )
3805                })?;
3806            let codec = tonic::codec::ProstCodec::default();
3807            let path = http::uri::PathAndQuery::from_static(
3808                "/yandex.cloud.mdb.mongodb.v1.ClusterService/List",
3809            );
3810            let mut req = request.into_request();
3811            req.extensions_mut()
3812                .insert(
3813                    GrpcMethod::new("yandex.cloud.mdb.mongodb.v1.ClusterService", "List"),
3814                );
3815            self.inner.unary(req, path, codec).await
3816        }
3817        /// Creates a MongoDB cluster in the specified folder.
3818        pub async fn create(
3819            &mut self,
3820            request: impl tonic::IntoRequest<super::CreateClusterRequest>,
3821        ) -> std::result::Result<
3822            tonic::Response<super::super::super::super::operation::Operation>,
3823            tonic::Status,
3824        > {
3825            self.inner
3826                .ready()
3827                .await
3828                .map_err(|e| {
3829                    tonic::Status::new(
3830                        tonic::Code::Unknown,
3831                        format!("Service was not ready: {}", e.into()),
3832                    )
3833                })?;
3834            let codec = tonic::codec::ProstCodec::default();
3835            let path = http::uri::PathAndQuery::from_static(
3836                "/yandex.cloud.mdb.mongodb.v1.ClusterService/Create",
3837            );
3838            let mut req = request.into_request();
3839            req.extensions_mut()
3840                .insert(
3841                    GrpcMethod::new(
3842                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
3843                        "Create",
3844                    ),
3845                );
3846            self.inner.unary(req, path, codec).await
3847        }
3848        /// Updates the specified MongoDB cluster.
3849        pub async fn update(
3850            &mut self,
3851            request: impl tonic::IntoRequest<super::UpdateClusterRequest>,
3852        ) -> std::result::Result<
3853            tonic::Response<super::super::super::super::operation::Operation>,
3854            tonic::Status,
3855        > {
3856            self.inner
3857                .ready()
3858                .await
3859                .map_err(|e| {
3860                    tonic::Status::new(
3861                        tonic::Code::Unknown,
3862                        format!("Service was not ready: {}", e.into()),
3863                    )
3864                })?;
3865            let codec = tonic::codec::ProstCodec::default();
3866            let path = http::uri::PathAndQuery::from_static(
3867                "/yandex.cloud.mdb.mongodb.v1.ClusterService/Update",
3868            );
3869            let mut req = request.into_request();
3870            req.extensions_mut()
3871                .insert(
3872                    GrpcMethod::new(
3873                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
3874                        "Update",
3875                    ),
3876                );
3877            self.inner.unary(req, path, codec).await
3878        }
3879        /// Deletes the specified MongoDB cluster.
3880        pub async fn delete(
3881            &mut self,
3882            request: impl tonic::IntoRequest<super::DeleteClusterRequest>,
3883        ) -> std::result::Result<
3884            tonic::Response<super::super::super::super::operation::Operation>,
3885            tonic::Status,
3886        > {
3887            self.inner
3888                .ready()
3889                .await
3890                .map_err(|e| {
3891                    tonic::Status::new(
3892                        tonic::Code::Unknown,
3893                        format!("Service was not ready: {}", e.into()),
3894                    )
3895                })?;
3896            let codec = tonic::codec::ProstCodec::default();
3897            let path = http::uri::PathAndQuery::from_static(
3898                "/yandex.cloud.mdb.mongodb.v1.ClusterService/Delete",
3899            );
3900            let mut req = request.into_request();
3901            req.extensions_mut()
3902                .insert(
3903                    GrpcMethod::new(
3904                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
3905                        "Delete",
3906                    ),
3907                );
3908            self.inner.unary(req, path, codec).await
3909        }
3910        /// Start the specified MongoDB cluster.
3911        pub async fn start(
3912            &mut self,
3913            request: impl tonic::IntoRequest<super::StartClusterRequest>,
3914        ) -> std::result::Result<
3915            tonic::Response<super::super::super::super::operation::Operation>,
3916            tonic::Status,
3917        > {
3918            self.inner
3919                .ready()
3920                .await
3921                .map_err(|e| {
3922                    tonic::Status::new(
3923                        tonic::Code::Unknown,
3924                        format!("Service was not ready: {}", e.into()),
3925                    )
3926                })?;
3927            let codec = tonic::codec::ProstCodec::default();
3928            let path = http::uri::PathAndQuery::from_static(
3929                "/yandex.cloud.mdb.mongodb.v1.ClusterService/Start",
3930            );
3931            let mut req = request.into_request();
3932            req.extensions_mut()
3933                .insert(
3934                    GrpcMethod::new(
3935                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
3936                        "Start",
3937                    ),
3938                );
3939            self.inner.unary(req, path, codec).await
3940        }
3941        /// Stop the specified MongoDB cluster.
3942        pub async fn stop(
3943            &mut self,
3944            request: impl tonic::IntoRequest<super::StopClusterRequest>,
3945        ) -> std::result::Result<
3946            tonic::Response<super::super::super::super::operation::Operation>,
3947            tonic::Status,
3948        > {
3949            self.inner
3950                .ready()
3951                .await
3952                .map_err(|e| {
3953                    tonic::Status::new(
3954                        tonic::Code::Unknown,
3955                        format!("Service was not ready: {}", e.into()),
3956                    )
3957                })?;
3958            let codec = tonic::codec::ProstCodec::default();
3959            let path = http::uri::PathAndQuery::from_static(
3960                "/yandex.cloud.mdb.mongodb.v1.ClusterService/Stop",
3961            );
3962            let mut req = request.into_request();
3963            req.extensions_mut()
3964                .insert(
3965                    GrpcMethod::new("yandex.cloud.mdb.mongodb.v1.ClusterService", "Stop"),
3966                );
3967            self.inner.unary(req, path, codec).await
3968        }
3969        /// Moves the specified MongoDB cluster to the specified folder.
3970        pub async fn r#move(
3971            &mut self,
3972            request: impl tonic::IntoRequest<super::MoveClusterRequest>,
3973        ) -> std::result::Result<
3974            tonic::Response<super::super::super::super::operation::Operation>,
3975            tonic::Status,
3976        > {
3977            self.inner
3978                .ready()
3979                .await
3980                .map_err(|e| {
3981                    tonic::Status::new(
3982                        tonic::Code::Unknown,
3983                        format!("Service was not ready: {}", e.into()),
3984                    )
3985                })?;
3986            let codec = tonic::codec::ProstCodec::default();
3987            let path = http::uri::PathAndQuery::from_static(
3988                "/yandex.cloud.mdb.mongodb.v1.ClusterService/Move",
3989            );
3990            let mut req = request.into_request();
3991            req.extensions_mut()
3992                .insert(
3993                    GrpcMethod::new("yandex.cloud.mdb.mongodb.v1.ClusterService", "Move"),
3994                );
3995            self.inner.unary(req, path, codec).await
3996        }
3997        /// Creates a backup for the specified MongoDB cluster.
3998        pub async fn backup(
3999            &mut self,
4000            request: impl tonic::IntoRequest<super::BackupClusterRequest>,
4001        ) -> std::result::Result<
4002            tonic::Response<super::super::super::super::operation::Operation>,
4003            tonic::Status,
4004        > {
4005            self.inner
4006                .ready()
4007                .await
4008                .map_err(|e| {
4009                    tonic::Status::new(
4010                        tonic::Code::Unknown,
4011                        format!("Service was not ready: {}", e.into()),
4012                    )
4013                })?;
4014            let codec = tonic::codec::ProstCodec::default();
4015            let path = http::uri::PathAndQuery::from_static(
4016                "/yandex.cloud.mdb.mongodb.v1.ClusterService/Backup",
4017            );
4018            let mut req = request.into_request();
4019            req.extensions_mut()
4020                .insert(
4021                    GrpcMethod::new(
4022                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4023                        "Backup",
4024                    ),
4025                );
4026            self.inner.unary(req, path, codec).await
4027        }
4028        /// Creates a new MongoDB cluster using the specified backup.
4029        pub async fn restore(
4030            &mut self,
4031            request: impl tonic::IntoRequest<super::RestoreClusterRequest>,
4032        ) -> std::result::Result<
4033            tonic::Response<super::super::super::super::operation::Operation>,
4034            tonic::Status,
4035        > {
4036            self.inner
4037                .ready()
4038                .await
4039                .map_err(|e| {
4040                    tonic::Status::new(
4041                        tonic::Code::Unknown,
4042                        format!("Service was not ready: {}", e.into()),
4043                    )
4044                })?;
4045            let codec = tonic::codec::ProstCodec::default();
4046            let path = http::uri::PathAndQuery::from_static(
4047                "/yandex.cloud.mdb.mongodb.v1.ClusterService/Restore",
4048            );
4049            let mut req = request.into_request();
4050            req.extensions_mut()
4051                .insert(
4052                    GrpcMethod::new(
4053                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4054                        "Restore",
4055                    ),
4056                );
4057            self.inner.unary(req, path, codec).await
4058        }
4059        /// Reschedules planned maintenance operation.
4060        pub async fn reschedule_maintenance(
4061            &mut self,
4062            request: impl tonic::IntoRequest<super::RescheduleMaintenanceRequest>,
4063        ) -> std::result::Result<
4064            tonic::Response<super::super::super::super::operation::Operation>,
4065            tonic::Status,
4066        > {
4067            self.inner
4068                .ready()
4069                .await
4070                .map_err(|e| {
4071                    tonic::Status::new(
4072                        tonic::Code::Unknown,
4073                        format!("Service was not ready: {}", e.into()),
4074                    )
4075                })?;
4076            let codec = tonic::codec::ProstCodec::default();
4077            let path = http::uri::PathAndQuery::from_static(
4078                "/yandex.cloud.mdb.mongodb.v1.ClusterService/RescheduleMaintenance",
4079            );
4080            let mut req = request.into_request();
4081            req.extensions_mut()
4082                .insert(
4083                    GrpcMethod::new(
4084                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4085                        "RescheduleMaintenance",
4086                    ),
4087                );
4088            self.inner.unary(req, path, codec).await
4089        }
4090        /// Retrieves logs for the specified MongoDB cluster.
4091        pub async fn list_logs(
4092            &mut self,
4093            request: impl tonic::IntoRequest<super::ListClusterLogsRequest>,
4094        ) -> std::result::Result<
4095            tonic::Response<super::ListClusterLogsResponse>,
4096            tonic::Status,
4097        > {
4098            self.inner
4099                .ready()
4100                .await
4101                .map_err(|e| {
4102                    tonic::Status::new(
4103                        tonic::Code::Unknown,
4104                        format!("Service was not ready: {}", e.into()),
4105                    )
4106                })?;
4107            let codec = tonic::codec::ProstCodec::default();
4108            let path = http::uri::PathAndQuery::from_static(
4109                "/yandex.cloud.mdb.mongodb.v1.ClusterService/ListLogs",
4110            );
4111            let mut req = request.into_request();
4112            req.extensions_mut()
4113                .insert(
4114                    GrpcMethod::new(
4115                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4116                        "ListLogs",
4117                    ),
4118                );
4119            self.inner.unary(req, path, codec).await
4120        }
4121        /// Same as ListLogs but using server-side streaming. Also allows for 'tail -f' semantics.
4122        pub async fn stream_logs(
4123            &mut self,
4124            request: impl tonic::IntoRequest<super::StreamClusterLogsRequest>,
4125        ) -> std::result::Result<
4126            tonic::Response<tonic::codec::Streaming<super::StreamLogRecord>>,
4127            tonic::Status,
4128        > {
4129            self.inner
4130                .ready()
4131                .await
4132                .map_err(|e| {
4133                    tonic::Status::new(
4134                        tonic::Code::Unknown,
4135                        format!("Service was not ready: {}", e.into()),
4136                    )
4137                })?;
4138            let codec = tonic::codec::ProstCodec::default();
4139            let path = http::uri::PathAndQuery::from_static(
4140                "/yandex.cloud.mdb.mongodb.v1.ClusterService/StreamLogs",
4141            );
4142            let mut req = request.into_request();
4143            req.extensions_mut()
4144                .insert(
4145                    GrpcMethod::new(
4146                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4147                        "StreamLogs",
4148                    ),
4149                );
4150            self.inner.server_streaming(req, path, codec).await
4151        }
4152        /// Retrieves the list of Operation resources for the specified cluster.
4153        pub async fn list_operations(
4154            &mut self,
4155            request: impl tonic::IntoRequest<super::ListClusterOperationsRequest>,
4156        ) -> std::result::Result<
4157            tonic::Response<super::ListClusterOperationsResponse>,
4158            tonic::Status,
4159        > {
4160            self.inner
4161                .ready()
4162                .await
4163                .map_err(|e| {
4164                    tonic::Status::new(
4165                        tonic::Code::Unknown,
4166                        format!("Service was not ready: {}", e.into()),
4167                    )
4168                })?;
4169            let codec = tonic::codec::ProstCodec::default();
4170            let path = http::uri::PathAndQuery::from_static(
4171                "/yandex.cloud.mdb.mongodb.v1.ClusterService/ListOperations",
4172            );
4173            let mut req = request.into_request();
4174            req.extensions_mut()
4175                .insert(
4176                    GrpcMethod::new(
4177                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4178                        "ListOperations",
4179                    ),
4180                );
4181            self.inner.unary(req, path, codec).await
4182        }
4183        /// Retrieves the list of available backups for the specified MongoDB cluster.
4184        pub async fn list_backups(
4185            &mut self,
4186            request: impl tonic::IntoRequest<super::ListClusterBackupsRequest>,
4187        ) -> std::result::Result<
4188            tonic::Response<super::ListClusterBackupsResponse>,
4189            tonic::Status,
4190        > {
4191            self.inner
4192                .ready()
4193                .await
4194                .map_err(|e| {
4195                    tonic::Status::new(
4196                        tonic::Code::Unknown,
4197                        format!("Service was not ready: {}", e.into()),
4198                    )
4199                })?;
4200            let codec = tonic::codec::ProstCodec::default();
4201            let path = http::uri::PathAndQuery::from_static(
4202                "/yandex.cloud.mdb.mongodb.v1.ClusterService/ListBackups",
4203            );
4204            let mut req = request.into_request();
4205            req.extensions_mut()
4206                .insert(
4207                    GrpcMethod::new(
4208                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4209                        "ListBackups",
4210                    ),
4211                );
4212            self.inner.unary(req, path, codec).await
4213        }
4214        /// Retrieves a list of hosts for the specified cluster.
4215        pub async fn list_hosts(
4216            &mut self,
4217            request: impl tonic::IntoRequest<super::ListClusterHostsRequest>,
4218        ) -> std::result::Result<
4219            tonic::Response<super::ListClusterHostsResponse>,
4220            tonic::Status,
4221        > {
4222            self.inner
4223                .ready()
4224                .await
4225                .map_err(|e| {
4226                    tonic::Status::new(
4227                        tonic::Code::Unknown,
4228                        format!("Service was not ready: {}", e.into()),
4229                    )
4230                })?;
4231            let codec = tonic::codec::ProstCodec::default();
4232            let path = http::uri::PathAndQuery::from_static(
4233                "/yandex.cloud.mdb.mongodb.v1.ClusterService/ListHosts",
4234            );
4235            let mut req = request.into_request();
4236            req.extensions_mut()
4237                .insert(
4238                    GrpcMethod::new(
4239                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4240                        "ListHosts",
4241                    ),
4242                );
4243            self.inner.unary(req, path, codec).await
4244        }
4245        /// Creates new hosts for a cluster.
4246        pub async fn add_hosts(
4247            &mut self,
4248            request: impl tonic::IntoRequest<super::AddClusterHostsRequest>,
4249        ) -> std::result::Result<
4250            tonic::Response<super::super::super::super::operation::Operation>,
4251            tonic::Status,
4252        > {
4253            self.inner
4254                .ready()
4255                .await
4256                .map_err(|e| {
4257                    tonic::Status::new(
4258                        tonic::Code::Unknown,
4259                        format!("Service was not ready: {}", e.into()),
4260                    )
4261                })?;
4262            let codec = tonic::codec::ProstCodec::default();
4263            let path = http::uri::PathAndQuery::from_static(
4264                "/yandex.cloud.mdb.mongodb.v1.ClusterService/AddHosts",
4265            );
4266            let mut req = request.into_request();
4267            req.extensions_mut()
4268                .insert(
4269                    GrpcMethod::new(
4270                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4271                        "AddHosts",
4272                    ),
4273                );
4274            self.inner.unary(req, path, codec).await
4275        }
4276        /// Deletes the specified hosts for a cluster.
4277        pub async fn delete_hosts(
4278            &mut self,
4279            request: impl tonic::IntoRequest<super::DeleteClusterHostsRequest>,
4280        ) -> std::result::Result<
4281            tonic::Response<super::super::super::super::operation::Operation>,
4282            tonic::Status,
4283        > {
4284            self.inner
4285                .ready()
4286                .await
4287                .map_err(|e| {
4288                    tonic::Status::new(
4289                        tonic::Code::Unknown,
4290                        format!("Service was not ready: {}", e.into()),
4291                    )
4292                })?;
4293            let codec = tonic::codec::ProstCodec::default();
4294            let path = http::uri::PathAndQuery::from_static(
4295                "/yandex.cloud.mdb.mongodb.v1.ClusterService/DeleteHosts",
4296            );
4297            let mut req = request.into_request();
4298            req.extensions_mut()
4299                .insert(
4300                    GrpcMethod::new(
4301                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4302                        "DeleteHosts",
4303                    ),
4304                );
4305            self.inner.unary(req, path, codec).await
4306        }
4307        /// Updates the specified parameters for the host.
4308        pub async fn update_hosts(
4309            &mut self,
4310            request: impl tonic::IntoRequest<super::UpdateClusterHostsRequest>,
4311        ) -> std::result::Result<
4312            tonic::Response<super::super::super::super::operation::Operation>,
4313            tonic::Status,
4314        > {
4315            self.inner
4316                .ready()
4317                .await
4318                .map_err(|e| {
4319                    tonic::Status::new(
4320                        tonic::Code::Unknown,
4321                        format!("Service was not ready: {}", e.into()),
4322                    )
4323                })?;
4324            let codec = tonic::codec::ProstCodec::default();
4325            let path = http::uri::PathAndQuery::from_static(
4326                "/yandex.cloud.mdb.mongodb.v1.ClusterService/UpdateHosts",
4327            );
4328            let mut req = request.into_request();
4329            req.extensions_mut()
4330                .insert(
4331                    GrpcMethod::new(
4332                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4333                        "UpdateHosts",
4334                    ),
4335                );
4336            self.inner.unary(req, path, codec).await
4337        }
4338        /// Enables sharding for the cluster:
4339        /// creates 3 mongoinfra (or 3 mongocfg and 2 mongos) hosts
4340        /// that would support adding and using shards in the cluster.
4341        pub async fn enable_sharding(
4342            &mut self,
4343            request: impl tonic::IntoRequest<super::EnableClusterShardingRequest>,
4344        ) -> std::result::Result<
4345            tonic::Response<super::super::super::super::operation::Operation>,
4346            tonic::Status,
4347        > {
4348            self.inner
4349                .ready()
4350                .await
4351                .map_err(|e| {
4352                    tonic::Status::new(
4353                        tonic::Code::Unknown,
4354                        format!("Service was not ready: {}", e.into()),
4355                    )
4356                })?;
4357            let codec = tonic::codec::ProstCodec::default();
4358            let path = http::uri::PathAndQuery::from_static(
4359                "/yandex.cloud.mdb.mongodb.v1.ClusterService/EnableSharding",
4360            );
4361            let mut req = request.into_request();
4362            req.extensions_mut()
4363                .insert(
4364                    GrpcMethod::new(
4365                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4366                        "EnableSharding",
4367                    ),
4368                );
4369            self.inner.unary(req, path, codec).await
4370        }
4371        /// Returns the specified shard.
4372        pub async fn get_shard(
4373            &mut self,
4374            request: impl tonic::IntoRequest<super::GetClusterShardRequest>,
4375        ) -> std::result::Result<tonic::Response<super::Shard>, tonic::Status> {
4376            self.inner
4377                .ready()
4378                .await
4379                .map_err(|e| {
4380                    tonic::Status::new(
4381                        tonic::Code::Unknown,
4382                        format!("Service was not ready: {}", e.into()),
4383                    )
4384                })?;
4385            let codec = tonic::codec::ProstCodec::default();
4386            let path = http::uri::PathAndQuery::from_static(
4387                "/yandex.cloud.mdb.mongodb.v1.ClusterService/GetShard",
4388            );
4389            let mut req = request.into_request();
4390            req.extensions_mut()
4391                .insert(
4392                    GrpcMethod::new(
4393                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4394                        "GetShard",
4395                    ),
4396                );
4397            self.inner.unary(req, path, codec).await
4398        }
4399        /// Retrieves a list of shards.
4400        pub async fn list_shards(
4401            &mut self,
4402            request: impl tonic::IntoRequest<super::ListClusterShardsRequest>,
4403        ) -> std::result::Result<
4404            tonic::Response<super::ListClusterShardsResponse>,
4405            tonic::Status,
4406        > {
4407            self.inner
4408                .ready()
4409                .await
4410                .map_err(|e| {
4411                    tonic::Status::new(
4412                        tonic::Code::Unknown,
4413                        format!("Service was not ready: {}", e.into()),
4414                    )
4415                })?;
4416            let codec = tonic::codec::ProstCodec::default();
4417            let path = http::uri::PathAndQuery::from_static(
4418                "/yandex.cloud.mdb.mongodb.v1.ClusterService/ListShards",
4419            );
4420            let mut req = request.into_request();
4421            req.extensions_mut()
4422                .insert(
4423                    GrpcMethod::new(
4424                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4425                        "ListShards",
4426                    ),
4427                );
4428            self.inner.unary(req, path, codec).await
4429        }
4430        /// Creates a new shard.
4431        pub async fn add_shard(
4432            &mut self,
4433            request: impl tonic::IntoRequest<super::AddClusterShardRequest>,
4434        ) -> std::result::Result<
4435            tonic::Response<super::super::super::super::operation::Operation>,
4436            tonic::Status,
4437        > {
4438            self.inner
4439                .ready()
4440                .await
4441                .map_err(|e| {
4442                    tonic::Status::new(
4443                        tonic::Code::Unknown,
4444                        format!("Service was not ready: {}", e.into()),
4445                    )
4446                })?;
4447            let codec = tonic::codec::ProstCodec::default();
4448            let path = http::uri::PathAndQuery::from_static(
4449                "/yandex.cloud.mdb.mongodb.v1.ClusterService/AddShard",
4450            );
4451            let mut req = request.into_request();
4452            req.extensions_mut()
4453                .insert(
4454                    GrpcMethod::new(
4455                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4456                        "AddShard",
4457                    ),
4458                );
4459            self.inner.unary(req, path, codec).await
4460        }
4461        /// Deletes the specified shard.
4462        pub async fn delete_shard(
4463            &mut self,
4464            request: impl tonic::IntoRequest<super::DeleteClusterShardRequest>,
4465        ) -> std::result::Result<
4466            tonic::Response<super::super::super::super::operation::Operation>,
4467            tonic::Status,
4468        > {
4469            self.inner
4470                .ready()
4471                .await
4472                .map_err(|e| {
4473                    tonic::Status::new(
4474                        tonic::Code::Unknown,
4475                        format!("Service was not ready: {}", e.into()),
4476                    )
4477                })?;
4478            let codec = tonic::codec::ProstCodec::default();
4479            let path = http::uri::PathAndQuery::from_static(
4480                "/yandex.cloud.mdb.mongodb.v1.ClusterService/DeleteShard",
4481            );
4482            let mut req = request.into_request();
4483            req.extensions_mut()
4484                .insert(
4485                    GrpcMethod::new(
4486                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4487                        "DeleteShard",
4488                    ),
4489                );
4490            self.inner.unary(req, path, codec).await
4491        }
4492        /// Resetups hosts.
4493        pub async fn resetup_hosts(
4494            &mut self,
4495            request: impl tonic::IntoRequest<super::ResetupHostsRequest>,
4496        ) -> std::result::Result<
4497            tonic::Response<super::super::super::super::operation::Operation>,
4498            tonic::Status,
4499        > {
4500            self.inner
4501                .ready()
4502                .await
4503                .map_err(|e| {
4504                    tonic::Status::new(
4505                        tonic::Code::Unknown,
4506                        format!("Service was not ready: {}", e.into()),
4507                    )
4508                })?;
4509            let codec = tonic::codec::ProstCodec::default();
4510            let path = http::uri::PathAndQuery::from_static(
4511                "/yandex.cloud.mdb.mongodb.v1.ClusterService/ResetupHosts",
4512            );
4513            let mut req = request.into_request();
4514            req.extensions_mut()
4515                .insert(
4516                    GrpcMethod::new(
4517                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4518                        "ResetupHosts",
4519                    ),
4520                );
4521            self.inner.unary(req, path, codec).await
4522        }
4523        /// Restarts hosts.
4524        pub async fn restart_hosts(
4525            &mut self,
4526            request: impl tonic::IntoRequest<super::RestartHostsRequest>,
4527        ) -> std::result::Result<
4528            tonic::Response<super::super::super::super::operation::Operation>,
4529            tonic::Status,
4530        > {
4531            self.inner
4532                .ready()
4533                .await
4534                .map_err(|e| {
4535                    tonic::Status::new(
4536                        tonic::Code::Unknown,
4537                        format!("Service was not ready: {}", e.into()),
4538                    )
4539                })?;
4540            let codec = tonic::codec::ProstCodec::default();
4541            let path = http::uri::PathAndQuery::from_static(
4542                "/yandex.cloud.mdb.mongodb.v1.ClusterService/RestartHosts",
4543            );
4544            let mut req = request.into_request();
4545            req.extensions_mut()
4546                .insert(
4547                    GrpcMethod::new(
4548                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4549                        "RestartHosts",
4550                    ),
4551                );
4552            self.inner.unary(req, path, codec).await
4553        }
4554        /// Stepdown hosts.
4555        pub async fn stepdown_hosts(
4556            &mut self,
4557            request: impl tonic::IntoRequest<super::StepdownHostsRequest>,
4558        ) -> std::result::Result<
4559            tonic::Response<super::super::super::super::operation::Operation>,
4560            tonic::Status,
4561        > {
4562            self.inner
4563                .ready()
4564                .await
4565                .map_err(|e| {
4566                    tonic::Status::new(
4567                        tonic::Code::Unknown,
4568                        format!("Service was not ready: {}", e.into()),
4569                    )
4570                })?;
4571            let codec = tonic::codec::ProstCodec::default();
4572            let path = http::uri::PathAndQuery::from_static(
4573                "/yandex.cloud.mdb.mongodb.v1.ClusterService/StepdownHosts",
4574            );
4575            let mut req = request.into_request();
4576            req.extensions_mut()
4577                .insert(
4578                    GrpcMethod::new(
4579                        "yandex.cloud.mdb.mongodb.v1.ClusterService",
4580                        "StepdownHosts",
4581                    ),
4582                );
4583            self.inner.unary(req, path, codec).await
4584        }
4585    }
4586}
4587#[allow(clippy::derive_partial_eq_without_eq)]
4588#[derive(Clone, PartialEq, ::prost::Message)]
4589pub struct GetDatabaseRequest {
4590    /// ID of the MongoDB cluster that the database belongs to.
4591    /// To get the cluster ID use a \[ClusterService.List\] request.
4592    #[prost(string, tag = "1")]
4593    pub cluster_id: ::prost::alloc::string::String,
4594    /// Name of the MongoDB database to return.
4595    /// To get the name of the database use a \[DatabaseService.List\] request.
4596    #[prost(string, tag = "2")]
4597    pub database_name: ::prost::alloc::string::String,
4598}
4599#[allow(clippy::derive_partial_eq_without_eq)]
4600#[derive(Clone, PartialEq, ::prost::Message)]
4601pub struct ListDatabasesRequest {
4602    /// ID of the MongoDB cluster to list databases in.
4603    /// To get the cluster ID, use a \[ClusterService.List\] request.
4604    #[prost(string, tag = "1")]
4605    pub cluster_id: ::prost::alloc::string::String,
4606    /// The maximum number of results per page to return. If the number of available
4607    /// results is larger than \[page_size\], the service returns a \[ListDatabasesResponse.next_page_token\]
4608    /// that can be used to get the next page of results in subsequent list requests.
4609    #[prost(int64, tag = "2")]
4610    pub page_size: i64,
4611    /// Page token. To get the next page of results, set \[page_token\] to the
4612    /// \[ListDatabasesResponse.next_page_token\] returned by the previous list request.
4613    #[prost(string, tag = "3")]
4614    pub page_token: ::prost::alloc::string::String,
4615}
4616#[allow(clippy::derive_partial_eq_without_eq)]
4617#[derive(Clone, PartialEq, ::prost::Message)]
4618pub struct ListDatabasesResponse {
4619    /// List of MongoDB databases.
4620    #[prost(message, repeated, tag = "1")]
4621    pub databases: ::prost::alloc::vec::Vec<Database>,
4622    /// This token allows you to get the next page of results for list requests. If the number of results
4623    /// is larger than \[ListDatabasesRequest.page_size\], use the \[next_page_token\] as the value
4624    /// for the \[ListDatabasesRequest.page_token\] parameter in the next list request. Each subsequent
4625    /// list request will have its own \[next_page_token\] to continue paging through the results.
4626    #[prost(string, tag = "2")]
4627    pub next_page_token: ::prost::alloc::string::String,
4628}
4629#[allow(clippy::derive_partial_eq_without_eq)]
4630#[derive(Clone, PartialEq, ::prost::Message)]
4631pub struct CreateDatabaseRequest {
4632    /// ID of the MongoDB cluster to create a database in.
4633    /// To get the cluster ID, use a \[ClusterService.List\] request.
4634    #[prost(string, tag = "1")]
4635    pub cluster_id: ::prost::alloc::string::String,
4636    /// Configuration of the database to create.
4637    #[prost(message, optional, tag = "2")]
4638    pub database_spec: ::core::option::Option<DatabaseSpec>,
4639}
4640#[allow(clippy::derive_partial_eq_without_eq)]
4641#[derive(Clone, PartialEq, ::prost::Message)]
4642pub struct CreateDatabaseMetadata {
4643    /// ID of the MongoDB cluster where a database is being created.
4644    #[prost(string, tag = "1")]
4645    pub cluster_id: ::prost::alloc::string::String,
4646    /// Name of the MongoDB database that is being created.
4647    #[prost(string, tag = "2")]
4648    pub database_name: ::prost::alloc::string::String,
4649}
4650#[allow(clippy::derive_partial_eq_without_eq)]
4651#[derive(Clone, PartialEq, ::prost::Message)]
4652pub struct DeleteDatabaseRequest {
4653    /// ID of the MongoDB cluster to delete a database in.
4654    /// To get the cluster ID, use a \[ClusterService.List\] request.
4655    #[prost(string, tag = "1")]
4656    pub cluster_id: ::prost::alloc::string::String,
4657    /// Name of the database to delete.
4658    /// To get the name of the database, use a \[DatabaseService.List\] request.
4659    #[prost(string, tag = "2")]
4660    pub database_name: ::prost::alloc::string::String,
4661}
4662#[allow(clippy::derive_partial_eq_without_eq)]
4663#[derive(Clone, PartialEq, ::prost::Message)]
4664pub struct DeleteDatabaseMetadata {
4665    /// ID of the MongoDB cluster where a database is being deleted.
4666    #[prost(string, tag = "1")]
4667    pub cluster_id: ::prost::alloc::string::String,
4668    /// Name of the MongoDB database that is being deleted.
4669    #[prost(string, tag = "2")]
4670    pub database_name: ::prost::alloc::string::String,
4671}
4672/// Generated client implementations.
4673pub mod database_service_client {
4674    #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
4675    use tonic::codegen::*;
4676    use tonic::codegen::http::Uri;
4677    /// A set of methods for managing MongoDB Database resources.
4678    #[derive(Debug, Clone)]
4679    pub struct DatabaseServiceClient<T> {
4680        inner: tonic::client::Grpc<T>,
4681    }
4682    impl DatabaseServiceClient<tonic::transport::Channel> {
4683        /// Attempt to create a new client by connecting to a given endpoint.
4684        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
4685        where
4686            D: TryInto<tonic::transport::Endpoint>,
4687            D::Error: Into<StdError>,
4688        {
4689            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
4690            Ok(Self::new(conn))
4691        }
4692    }
4693    impl<T> DatabaseServiceClient<T>
4694    where
4695        T: tonic::client::GrpcService<tonic::body::BoxBody>,
4696        T::Error: Into<StdError>,
4697        T::ResponseBody: Body<Data = Bytes> + Send + 'static,
4698        <T::ResponseBody as Body>::Error: Into<StdError> + Send,
4699    {
4700        pub fn new(inner: T) -> Self {
4701            let inner = tonic::client::Grpc::new(inner);
4702            Self { inner }
4703        }
4704        pub fn with_origin(inner: T, origin: Uri) -> Self {
4705            let inner = tonic::client::Grpc::with_origin(inner, origin);
4706            Self { inner }
4707        }
4708        pub fn with_interceptor<F>(
4709            inner: T,
4710            interceptor: F,
4711        ) -> DatabaseServiceClient<InterceptedService<T, F>>
4712        where
4713            F: tonic::service::Interceptor,
4714            T::ResponseBody: Default,
4715            T: tonic::codegen::Service<
4716                http::Request<tonic::body::BoxBody>,
4717                Response = http::Response<
4718                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
4719                >,
4720            >,
4721            <T as tonic::codegen::Service<
4722                http::Request<tonic::body::BoxBody>,
4723            >>::Error: Into<StdError> + Send + Sync,
4724        {
4725            DatabaseServiceClient::new(InterceptedService::new(inner, interceptor))
4726        }
4727        /// Compress requests with the given encoding.
4728        ///
4729        /// This requires the server to support it otherwise it might respond with an
4730        /// error.
4731        #[must_use]
4732        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
4733            self.inner = self.inner.send_compressed(encoding);
4734            self
4735        }
4736        /// Enable decompressing responses.
4737        #[must_use]
4738        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
4739            self.inner = self.inner.accept_compressed(encoding);
4740            self
4741        }
4742        /// Limits the maximum size of a decoded message.
4743        ///
4744        /// Default: `4MB`
4745        #[must_use]
4746        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
4747            self.inner = self.inner.max_decoding_message_size(limit);
4748            self
4749        }
4750        /// Limits the maximum size of an encoded message.
4751        ///
4752        /// Default: `usize::MAX`
4753        #[must_use]
4754        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
4755            self.inner = self.inner.max_encoding_message_size(limit);
4756            self
4757        }
4758        /// Returns the specified MongoDB Database resource.
4759        ///
4760        /// To get the list of available MongoDB Database resources, make a [List] request.
4761        pub async fn get(
4762            &mut self,
4763            request: impl tonic::IntoRequest<super::GetDatabaseRequest>,
4764        ) -> std::result::Result<tonic::Response<super::Database>, tonic::Status> {
4765            self.inner
4766                .ready()
4767                .await
4768                .map_err(|e| {
4769                    tonic::Status::new(
4770                        tonic::Code::Unknown,
4771                        format!("Service was not ready: {}", e.into()),
4772                    )
4773                })?;
4774            let codec = tonic::codec::ProstCodec::default();
4775            let path = http::uri::PathAndQuery::from_static(
4776                "/yandex.cloud.mdb.mongodb.v1.DatabaseService/Get",
4777            );
4778            let mut req = request.into_request();
4779            req.extensions_mut()
4780                .insert(
4781                    GrpcMethod::new("yandex.cloud.mdb.mongodb.v1.DatabaseService", "Get"),
4782                );
4783            self.inner.unary(req, path, codec).await
4784        }
4785        /// Retrieves the list of MongoDB Database resources in the specified cluster.
4786        pub async fn list(
4787            &mut self,
4788            request: impl tonic::IntoRequest<super::ListDatabasesRequest>,
4789        ) -> std::result::Result<
4790            tonic::Response<super::ListDatabasesResponse>,
4791            tonic::Status,
4792        > {
4793            self.inner
4794                .ready()
4795                .await
4796                .map_err(|e| {
4797                    tonic::Status::new(
4798                        tonic::Code::Unknown,
4799                        format!("Service was not ready: {}", e.into()),
4800                    )
4801                })?;
4802            let codec = tonic::codec::ProstCodec::default();
4803            let path = http::uri::PathAndQuery::from_static(
4804                "/yandex.cloud.mdb.mongodb.v1.DatabaseService/List",
4805            );
4806            let mut req = request.into_request();
4807            req.extensions_mut()
4808                .insert(
4809                    GrpcMethod::new(
4810                        "yandex.cloud.mdb.mongodb.v1.DatabaseService",
4811                        "List",
4812                    ),
4813                );
4814            self.inner.unary(req, path, codec).await
4815        }
4816        /// Creates a new MongoDB database in the specified cluster.
4817        pub async fn create(
4818            &mut self,
4819            request: impl tonic::IntoRequest<super::CreateDatabaseRequest>,
4820        ) -> std::result::Result<
4821            tonic::Response<super::super::super::super::operation::Operation>,
4822            tonic::Status,
4823        > {
4824            self.inner
4825                .ready()
4826                .await
4827                .map_err(|e| {
4828                    tonic::Status::new(
4829                        tonic::Code::Unknown,
4830                        format!("Service was not ready: {}", e.into()),
4831                    )
4832                })?;
4833            let codec = tonic::codec::ProstCodec::default();
4834            let path = http::uri::PathAndQuery::from_static(
4835                "/yandex.cloud.mdb.mongodb.v1.DatabaseService/Create",
4836            );
4837            let mut req = request.into_request();
4838            req.extensions_mut()
4839                .insert(
4840                    GrpcMethod::new(
4841                        "yandex.cloud.mdb.mongodb.v1.DatabaseService",
4842                        "Create",
4843                    ),
4844                );
4845            self.inner.unary(req, path, codec).await
4846        }
4847        /// Deletes the specified MongoDB database.
4848        pub async fn delete(
4849            &mut self,
4850            request: impl tonic::IntoRequest<super::DeleteDatabaseRequest>,
4851        ) -> std::result::Result<
4852            tonic::Response<super::super::super::super::operation::Operation>,
4853            tonic::Status,
4854        > {
4855            self.inner
4856                .ready()
4857                .await
4858                .map_err(|e| {
4859                    tonic::Status::new(
4860                        tonic::Code::Unknown,
4861                        format!("Service was not ready: {}", e.into()),
4862                    )
4863                })?;
4864            let codec = tonic::codec::ProstCodec::default();
4865            let path = http::uri::PathAndQuery::from_static(
4866                "/yandex.cloud.mdb.mongodb.v1.DatabaseService/Delete",
4867            );
4868            let mut req = request.into_request();
4869            req.extensions_mut()
4870                .insert(
4871                    GrpcMethod::new(
4872                        "yandex.cloud.mdb.mongodb.v1.DatabaseService",
4873                        "Delete",
4874                    ),
4875                );
4876            self.inner.unary(req, path, codec).await
4877        }
4878    }
4879}
4880/// A ResourcePreset resource for describing hardware configuration presets.
4881#[allow(clippy::derive_partial_eq_without_eq)]
4882#[derive(Clone, PartialEq, ::prost::Message)]
4883pub struct ResourcePreset {
4884    /// ID of the ResourcePreset resource.
4885    #[prost(string, tag = "1")]
4886    pub id: ::prost::alloc::string::String,
4887    /// IDs of availability zones where the resource preset is available.
4888    #[prost(string, repeated, tag = "2")]
4889    pub zone_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4890    /// Number of CPU cores for a MongoDB host created with the preset.
4891    #[prost(int64, tag = "3")]
4892    pub cores: i64,
4893    /// RAM volume for a MongoDB host created with the preset, in bytes.
4894    #[prost(int64, tag = "4")]
4895    pub memory: i64,
4896}
4897#[allow(clippy::derive_partial_eq_without_eq)]
4898#[derive(Clone, PartialEq, ::prost::Message)]
4899pub struct GetResourcePresetRequest {
4900    /// ID of the resource preset to return.
4901    /// To get the resource preset ID, use a \[ResourcePresetService.List\] request.
4902    #[prost(string, tag = "1")]
4903    pub resource_preset_id: ::prost::alloc::string::String,
4904}
4905#[allow(clippy::derive_partial_eq_without_eq)]
4906#[derive(Clone, PartialEq, ::prost::Message)]
4907pub struct ListResourcePresetsRequest {
4908    /// The maximum number of results per page to return. If the number of available
4909    /// results is larger than \[page_size\], the service returns a \[ListResourcePresetsResponse.next_page_token\]
4910    /// that can be used to get the next page of results in subsequent list requests.
4911    /// Acceptable values are 0 to 1000, inclusive. Default value: 100.
4912    #[prost(int64, tag = "2")]
4913    pub page_size: i64,
4914    /// Page token. To get the next page of results, set \[page_token\] to the
4915    /// \[ListResourcePresetsResponse.next_page_token\] returned by the previous list request.
4916    #[prost(string, tag = "3")]
4917    pub page_token: ::prost::alloc::string::String,
4918}
4919#[allow(clippy::derive_partial_eq_without_eq)]
4920#[derive(Clone, PartialEq, ::prost::Message)]
4921pub struct ListResourcePresetsResponse {
4922    /// List of ResourcePreset resources.
4923    #[prost(message, repeated, tag = "1")]
4924    pub resource_presets: ::prost::alloc::vec::Vec<ResourcePreset>,
4925    /// This token allows you to get the next page of results for list requests. If the number of results
4926    /// is larger than \[ListResourcePresetsRequest.page_size\], use the \[next_page_token\] as the value
4927    /// for the \[ListResourcePresetsRequest.page_token\] parameter in the next list request. Each subsequent
4928    /// list request will have its own \[next_page_token\] to continue paging through the results.
4929    #[prost(string, tag = "2")]
4930    pub next_page_token: ::prost::alloc::string::String,
4931}
4932/// Generated client implementations.
4933pub mod resource_preset_service_client {
4934    #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
4935    use tonic::codegen::*;
4936    use tonic::codegen::http::Uri;
4937    /// A set of methods for managing ResourcePreset resources.
4938    #[derive(Debug, Clone)]
4939    pub struct ResourcePresetServiceClient<T> {
4940        inner: tonic::client::Grpc<T>,
4941    }
4942    impl ResourcePresetServiceClient<tonic::transport::Channel> {
4943        /// Attempt to create a new client by connecting to a given endpoint.
4944        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
4945        where
4946            D: TryInto<tonic::transport::Endpoint>,
4947            D::Error: Into<StdError>,
4948        {
4949            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
4950            Ok(Self::new(conn))
4951        }
4952    }
4953    impl<T> ResourcePresetServiceClient<T>
4954    where
4955        T: tonic::client::GrpcService<tonic::body::BoxBody>,
4956        T::Error: Into<StdError>,
4957        T::ResponseBody: Body<Data = Bytes> + Send + 'static,
4958        <T::ResponseBody as Body>::Error: Into<StdError> + Send,
4959    {
4960        pub fn new(inner: T) -> Self {
4961            let inner = tonic::client::Grpc::new(inner);
4962            Self { inner }
4963        }
4964        pub fn with_origin(inner: T, origin: Uri) -> Self {
4965            let inner = tonic::client::Grpc::with_origin(inner, origin);
4966            Self { inner }
4967        }
4968        pub fn with_interceptor<F>(
4969            inner: T,
4970            interceptor: F,
4971        ) -> ResourcePresetServiceClient<InterceptedService<T, F>>
4972        where
4973            F: tonic::service::Interceptor,
4974            T::ResponseBody: Default,
4975            T: tonic::codegen::Service<
4976                http::Request<tonic::body::BoxBody>,
4977                Response = http::Response<
4978                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
4979                >,
4980            >,
4981            <T as tonic::codegen::Service<
4982                http::Request<tonic::body::BoxBody>,
4983            >>::Error: Into<StdError> + Send + Sync,
4984        {
4985            ResourcePresetServiceClient::new(InterceptedService::new(inner, interceptor))
4986        }
4987        /// Compress requests with the given encoding.
4988        ///
4989        /// This requires the server to support it otherwise it might respond with an
4990        /// error.
4991        #[must_use]
4992        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
4993            self.inner = self.inner.send_compressed(encoding);
4994            self
4995        }
4996        /// Enable decompressing responses.
4997        #[must_use]
4998        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
4999            self.inner = self.inner.accept_compressed(encoding);
5000            self
5001        }
5002        /// Limits the maximum size of a decoded message.
5003        ///
5004        /// Default: `4MB`
5005        #[must_use]
5006        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
5007            self.inner = self.inner.max_decoding_message_size(limit);
5008            self
5009        }
5010        /// Limits the maximum size of an encoded message.
5011        ///
5012        /// Default: `usize::MAX`
5013        #[must_use]
5014        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
5015            self.inner = self.inner.max_encoding_message_size(limit);
5016            self
5017        }
5018        /// Returns the specified ResourcePreset resource.
5019        ///
5020        /// To get the list of available ResourcePreset resources, make a [List] request.
5021        pub async fn get(
5022            &mut self,
5023            request: impl tonic::IntoRequest<super::GetResourcePresetRequest>,
5024        ) -> std::result::Result<tonic::Response<super::ResourcePreset>, tonic::Status> {
5025            self.inner
5026                .ready()
5027                .await
5028                .map_err(|e| {
5029                    tonic::Status::new(
5030                        tonic::Code::Unknown,
5031                        format!("Service was not ready: {}", e.into()),
5032                    )
5033                })?;
5034            let codec = tonic::codec::ProstCodec::default();
5035            let path = http::uri::PathAndQuery::from_static(
5036                "/yandex.cloud.mdb.mongodb.v1.ResourcePresetService/Get",
5037            );
5038            let mut req = request.into_request();
5039            req.extensions_mut()
5040                .insert(
5041                    GrpcMethod::new(
5042                        "yandex.cloud.mdb.mongodb.v1.ResourcePresetService",
5043                        "Get",
5044                    ),
5045                );
5046            self.inner.unary(req, path, codec).await
5047        }
5048        /// Retrieves the list of available ResourcePreset resources.
5049        pub async fn list(
5050            &mut self,
5051            request: impl tonic::IntoRequest<super::ListResourcePresetsRequest>,
5052        ) -> std::result::Result<
5053            tonic::Response<super::ListResourcePresetsResponse>,
5054            tonic::Status,
5055        > {
5056            self.inner
5057                .ready()
5058                .await
5059                .map_err(|e| {
5060                    tonic::Status::new(
5061                        tonic::Code::Unknown,
5062                        format!("Service was not ready: {}", e.into()),
5063                    )
5064                })?;
5065            let codec = tonic::codec::ProstCodec::default();
5066            let path = http::uri::PathAndQuery::from_static(
5067                "/yandex.cloud.mdb.mongodb.v1.ResourcePresetService/List",
5068            );
5069            let mut req = request.into_request();
5070            req.extensions_mut()
5071                .insert(
5072                    GrpcMethod::new(
5073                        "yandex.cloud.mdb.mongodb.v1.ResourcePresetService",
5074                        "List",
5075                    ),
5076                );
5077            self.inner.unary(req, path, codec).await
5078        }
5079    }
5080}
5081#[allow(clippy::derive_partial_eq_without_eq)]
5082#[derive(Clone, PartialEq, ::prost::Message)]
5083pub struct GetUserRequest {
5084    /// ID of the MongoDB cluster the user belongs to.
5085    /// To get the cluster ID, use a \[ClusterService.List\] request.
5086    #[prost(string, tag = "1")]
5087    pub cluster_id: ::prost::alloc::string::String,
5088    /// Name of the MongoDB User resource to return.
5089    /// To get the name of the user, use a \[UserService.List\] request.
5090    #[prost(string, tag = "2")]
5091    pub user_name: ::prost::alloc::string::String,
5092}
5093#[allow(clippy::derive_partial_eq_without_eq)]
5094#[derive(Clone, PartialEq, ::prost::Message)]
5095pub struct ListUsersRequest {
5096    /// ID of the cluster to list MongoDB users in.
5097    /// To get the cluster ID, use a \[ClusterService.List\] request.
5098    #[prost(string, tag = "1")]
5099    pub cluster_id: ::prost::alloc::string::String,
5100    /// The maximum number of results per page to return. If the number of available
5101    /// results is larger than \[page_size\], the service returns a \[ListUsersResponse.next_page_token\]
5102    /// that can be used to get the next page of results in subsequent list requests.
5103    #[prost(int64, tag = "2")]
5104    pub page_size: i64,
5105    /// Page token. To get the next page of results, set \[page_token\] to the
5106    /// \[ListUsersResponse.next_page_token\] returned by the previous list request.
5107    #[prost(string, tag = "3")]
5108    pub page_token: ::prost::alloc::string::String,
5109}
5110#[allow(clippy::derive_partial_eq_without_eq)]
5111#[derive(Clone, PartialEq, ::prost::Message)]
5112pub struct ListUsersResponse {
5113    /// List of MongoDB User resources.
5114    #[prost(message, repeated, tag = "1")]
5115    pub users: ::prost::alloc::vec::Vec<User>,
5116    /// This token allows you to get the next page of results for list requests. If the number of results
5117    /// is larger than \[ListUsersRequest.page_size\], use the \[next_page_token\] as the value
5118    /// for the \[ListUsersRequest.page_token\] parameter in the next list request. Each subsequent
5119    /// list request will have its own \[next_page_token\] to continue paging through the results.
5120    #[prost(string, tag = "2")]
5121    pub next_page_token: ::prost::alloc::string::String,
5122}
5123#[allow(clippy::derive_partial_eq_without_eq)]
5124#[derive(Clone, PartialEq, ::prost::Message)]
5125pub struct CreateUserRequest {
5126    /// ID of the MongoDB cluster to create a user in.
5127    /// To get the cluster ID, use a \[ClusterService.List\] request.
5128    #[prost(string, tag = "1")]
5129    pub cluster_id: ::prost::alloc::string::String,
5130    /// Properties of the user to be created.
5131    #[prost(message, optional, tag = "2")]
5132    pub user_spec: ::core::option::Option<UserSpec>,
5133}
5134#[allow(clippy::derive_partial_eq_without_eq)]
5135#[derive(Clone, PartialEq, ::prost::Message)]
5136pub struct CreateUserMetadata {
5137    /// ID of the MongoDB cluster the user is being created in.
5138    #[prost(string, tag = "1")]
5139    pub cluster_id: ::prost::alloc::string::String,
5140    /// Name of the user that is being created.
5141    #[prost(string, tag = "2")]
5142    pub user_name: ::prost::alloc::string::String,
5143}
5144#[allow(clippy::derive_partial_eq_without_eq)]
5145#[derive(Clone, PartialEq, ::prost::Message)]
5146pub struct UpdateUserRequest {
5147    /// ID of the MongoDB cluster the user belongs to.
5148    /// To get the cluster ID, use a \[ClusterService.List\] request.
5149    #[prost(string, tag = "1")]
5150    pub cluster_id: ::prost::alloc::string::String,
5151    /// Name of the user to be updated.
5152    /// To get the name of the user, use a \[UserService.List\] request.
5153    #[prost(string, tag = "2")]
5154    pub user_name: ::prost::alloc::string::String,
5155    /// Field mask that specifies which fields of the MongoDB User resource should be updated.
5156    #[prost(message, optional, tag = "3")]
5157    pub update_mask: ::core::option::Option<::prost_types::FieldMask>,
5158    /// New password for the user.
5159    #[prost(string, tag = "4")]
5160    pub password: ::prost::alloc::string::String,
5161    /// New set of permissions for the user.
5162    #[prost(message, repeated, tag = "5")]
5163    pub permissions: ::prost::alloc::vec::Vec<Permission>,
5164}
5165#[allow(clippy::derive_partial_eq_without_eq)]
5166#[derive(Clone, PartialEq, ::prost::Message)]
5167pub struct UpdateUserMetadata {
5168    /// ID of the MongoDB cluster the user belongs to.
5169    #[prost(string, tag = "1")]
5170    pub cluster_id: ::prost::alloc::string::String,
5171    /// Name of the user that is being updated.
5172    #[prost(string, tag = "2")]
5173    pub user_name: ::prost::alloc::string::String,
5174}
5175#[allow(clippy::derive_partial_eq_without_eq)]
5176#[derive(Clone, PartialEq, ::prost::Message)]
5177pub struct DeleteUserRequest {
5178    /// ID of the MongoDB cluster the user belongs to.
5179    /// To get the cluster ID, use a \[ClusterService.List\] request.
5180    #[prost(string, tag = "1")]
5181    pub cluster_id: ::prost::alloc::string::String,
5182    /// Name of the user to delete.
5183    /// To get the name of the user use a \[UserService.List\] request.
5184    #[prost(string, tag = "2")]
5185    pub user_name: ::prost::alloc::string::String,
5186}
5187#[allow(clippy::derive_partial_eq_without_eq)]
5188#[derive(Clone, PartialEq, ::prost::Message)]
5189pub struct DeleteUserMetadata {
5190    /// ID of the MongoDB cluster the user belongs to.
5191    #[prost(string, tag = "1")]
5192    pub cluster_id: ::prost::alloc::string::String,
5193    /// Name of the user that is being deleted.
5194    #[prost(string, tag = "2")]
5195    pub user_name: ::prost::alloc::string::String,
5196}
5197#[allow(clippy::derive_partial_eq_without_eq)]
5198#[derive(Clone, PartialEq, ::prost::Message)]
5199pub struct GrantUserPermissionRequest {
5200    /// ID of the MongoDB cluster the user belongs to.
5201    /// To get the cluster ID, use a \[ClusterService.List\] request.
5202    #[prost(string, tag = "1")]
5203    pub cluster_id: ::prost::alloc::string::String,
5204    /// Name of the user to grant the permission to.
5205    /// To get the name of the user, use a \[UserService.List\] request.
5206    #[prost(string, tag = "2")]
5207    pub user_name: ::prost::alloc::string::String,
5208    /// Permission that should be granted to the specified user.
5209    #[prost(message, optional, tag = "3")]
5210    pub permission: ::core::option::Option<Permission>,
5211}
5212#[allow(clippy::derive_partial_eq_without_eq)]
5213#[derive(Clone, PartialEq, ::prost::Message)]
5214pub struct GrantUserPermissionMetadata {
5215    /// ID of the MongoDB cluster the user belongs to.
5216    /// To get the cluster ID, use a \[ClusterService.List\] request.
5217    #[prost(string, tag = "1")]
5218    pub cluster_id: ::prost::alloc::string::String,
5219    /// Name of the user that is being granted a permission.
5220    #[prost(string, tag = "2")]
5221    pub user_name: ::prost::alloc::string::String,
5222}
5223#[allow(clippy::derive_partial_eq_without_eq)]
5224#[derive(Clone, PartialEq, ::prost::Message)]
5225pub struct RevokeUserPermissionRequest {
5226    /// ID of the MongoDB cluster the user belongs to.
5227    /// To get the cluster ID, use a \[ClusterService.List\] request.
5228    #[prost(string, tag = "1")]
5229    pub cluster_id: ::prost::alloc::string::String,
5230    /// Name of the user to revoke a permission from.
5231    /// To get the name of the user, use a \[UserService.List\] request.
5232    #[prost(string, tag = "2")]
5233    pub user_name: ::prost::alloc::string::String,
5234    /// Name of the database that the user should lose access to.
5235    #[prost(string, tag = "3")]
5236    pub database_name: ::prost::alloc::string::String,
5237}
5238#[allow(clippy::derive_partial_eq_without_eq)]
5239#[derive(Clone, PartialEq, ::prost::Message)]
5240pub struct RevokeUserPermissionMetadata {
5241    /// ID of the MongoDB cluster the user belongs to.
5242    #[prost(string, tag = "1")]
5243    pub cluster_id: ::prost::alloc::string::String,
5244    /// Name of the user whose permission is being revoked.
5245    #[prost(string, tag = "2")]
5246    pub user_name: ::prost::alloc::string::String,
5247}
5248/// Generated client implementations.
5249pub mod user_service_client {
5250    #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
5251    use tonic::codegen::*;
5252    use tonic::codegen::http::Uri;
5253    /// A set of methods for managing MongoDB User resources.
5254    #[derive(Debug, Clone)]
5255    pub struct UserServiceClient<T> {
5256        inner: tonic::client::Grpc<T>,
5257    }
5258    impl UserServiceClient<tonic::transport::Channel> {
5259        /// Attempt to create a new client by connecting to a given endpoint.
5260        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
5261        where
5262            D: TryInto<tonic::transport::Endpoint>,
5263            D::Error: Into<StdError>,
5264        {
5265            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
5266            Ok(Self::new(conn))
5267        }
5268    }
5269    impl<T> UserServiceClient<T>
5270    where
5271        T: tonic::client::GrpcService<tonic::body::BoxBody>,
5272        T::Error: Into<StdError>,
5273        T::ResponseBody: Body<Data = Bytes> + Send + 'static,
5274        <T::ResponseBody as Body>::Error: Into<StdError> + Send,
5275    {
5276        pub fn new(inner: T) -> Self {
5277            let inner = tonic::client::Grpc::new(inner);
5278            Self { inner }
5279        }
5280        pub fn with_origin(inner: T, origin: Uri) -> Self {
5281            let inner = tonic::client::Grpc::with_origin(inner, origin);
5282            Self { inner }
5283        }
5284        pub fn with_interceptor<F>(
5285            inner: T,
5286            interceptor: F,
5287        ) -> UserServiceClient<InterceptedService<T, F>>
5288        where
5289            F: tonic::service::Interceptor,
5290            T::ResponseBody: Default,
5291            T: tonic::codegen::Service<
5292                http::Request<tonic::body::BoxBody>,
5293                Response = http::Response<
5294                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
5295                >,
5296            >,
5297            <T as tonic::codegen::Service<
5298                http::Request<tonic::body::BoxBody>,
5299            >>::Error: Into<StdError> + Send + Sync,
5300        {
5301            UserServiceClient::new(InterceptedService::new(inner, interceptor))
5302        }
5303        /// Compress requests with the given encoding.
5304        ///
5305        /// This requires the server to support it otherwise it might respond with an
5306        /// error.
5307        #[must_use]
5308        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
5309            self.inner = self.inner.send_compressed(encoding);
5310            self
5311        }
5312        /// Enable decompressing responses.
5313        #[must_use]
5314        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
5315            self.inner = self.inner.accept_compressed(encoding);
5316            self
5317        }
5318        /// Limits the maximum size of a decoded message.
5319        ///
5320        /// Default: `4MB`
5321        #[must_use]
5322        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
5323            self.inner = self.inner.max_decoding_message_size(limit);
5324            self
5325        }
5326        /// Limits the maximum size of an encoded message.
5327        ///
5328        /// Default: `usize::MAX`
5329        #[must_use]
5330        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
5331            self.inner = self.inner.max_encoding_message_size(limit);
5332            self
5333        }
5334        /// Returns the specified MongoDB User resource.
5335        ///
5336        /// To get the list of available MongoDB User resources, make a [List] request.
5337        pub async fn get(
5338            &mut self,
5339            request: impl tonic::IntoRequest<super::GetUserRequest>,
5340        ) -> std::result::Result<tonic::Response<super::User>, tonic::Status> {
5341            self.inner
5342                .ready()
5343                .await
5344                .map_err(|e| {
5345                    tonic::Status::new(
5346                        tonic::Code::Unknown,
5347                        format!("Service was not ready: {}", e.into()),
5348                    )
5349                })?;
5350            let codec = tonic::codec::ProstCodec::default();
5351            let path = http::uri::PathAndQuery::from_static(
5352                "/yandex.cloud.mdb.mongodb.v1.UserService/Get",
5353            );
5354            let mut req = request.into_request();
5355            req.extensions_mut()
5356                .insert(
5357                    GrpcMethod::new("yandex.cloud.mdb.mongodb.v1.UserService", "Get"),
5358                );
5359            self.inner.unary(req, path, codec).await
5360        }
5361        /// Retrieves the list of MongoDB User resources in the specified cluster.
5362        pub async fn list(
5363            &mut self,
5364            request: impl tonic::IntoRequest<super::ListUsersRequest>,
5365        ) -> std::result::Result<
5366            tonic::Response<super::ListUsersResponse>,
5367            tonic::Status,
5368        > {
5369            self.inner
5370                .ready()
5371                .await
5372                .map_err(|e| {
5373                    tonic::Status::new(
5374                        tonic::Code::Unknown,
5375                        format!("Service was not ready: {}", e.into()),
5376                    )
5377                })?;
5378            let codec = tonic::codec::ProstCodec::default();
5379            let path = http::uri::PathAndQuery::from_static(
5380                "/yandex.cloud.mdb.mongodb.v1.UserService/List",
5381            );
5382            let mut req = request.into_request();
5383            req.extensions_mut()
5384                .insert(
5385                    GrpcMethod::new("yandex.cloud.mdb.mongodb.v1.UserService", "List"),
5386                );
5387            self.inner.unary(req, path, codec).await
5388        }
5389        /// Creates a MongoDB user in the specified cluster.
5390        pub async fn create(
5391            &mut self,
5392            request: impl tonic::IntoRequest<super::CreateUserRequest>,
5393        ) -> std::result::Result<
5394            tonic::Response<super::super::super::super::operation::Operation>,
5395            tonic::Status,
5396        > {
5397            self.inner
5398                .ready()
5399                .await
5400                .map_err(|e| {
5401                    tonic::Status::new(
5402                        tonic::Code::Unknown,
5403                        format!("Service was not ready: {}", e.into()),
5404                    )
5405                })?;
5406            let codec = tonic::codec::ProstCodec::default();
5407            let path = http::uri::PathAndQuery::from_static(
5408                "/yandex.cloud.mdb.mongodb.v1.UserService/Create",
5409            );
5410            let mut req = request.into_request();
5411            req.extensions_mut()
5412                .insert(
5413                    GrpcMethod::new("yandex.cloud.mdb.mongodb.v1.UserService", "Create"),
5414                );
5415            self.inner.unary(req, path, codec).await
5416        }
5417        /// Updates the specified MongoDB user.
5418        pub async fn update(
5419            &mut self,
5420            request: impl tonic::IntoRequest<super::UpdateUserRequest>,
5421        ) -> std::result::Result<
5422            tonic::Response<super::super::super::super::operation::Operation>,
5423            tonic::Status,
5424        > {
5425            self.inner
5426                .ready()
5427                .await
5428                .map_err(|e| {
5429                    tonic::Status::new(
5430                        tonic::Code::Unknown,
5431                        format!("Service was not ready: {}", e.into()),
5432                    )
5433                })?;
5434            let codec = tonic::codec::ProstCodec::default();
5435            let path = http::uri::PathAndQuery::from_static(
5436                "/yandex.cloud.mdb.mongodb.v1.UserService/Update",
5437            );
5438            let mut req = request.into_request();
5439            req.extensions_mut()
5440                .insert(
5441                    GrpcMethod::new("yandex.cloud.mdb.mongodb.v1.UserService", "Update"),
5442                );
5443            self.inner.unary(req, path, codec).await
5444        }
5445        /// Deletes the specified MongoDB user.
5446        pub async fn delete(
5447            &mut self,
5448            request: impl tonic::IntoRequest<super::DeleteUserRequest>,
5449        ) -> std::result::Result<
5450            tonic::Response<super::super::super::super::operation::Operation>,
5451            tonic::Status,
5452        > {
5453            self.inner
5454                .ready()
5455                .await
5456                .map_err(|e| {
5457                    tonic::Status::new(
5458                        tonic::Code::Unknown,
5459                        format!("Service was not ready: {}", e.into()),
5460                    )
5461                })?;
5462            let codec = tonic::codec::ProstCodec::default();
5463            let path = http::uri::PathAndQuery::from_static(
5464                "/yandex.cloud.mdb.mongodb.v1.UserService/Delete",
5465            );
5466            let mut req = request.into_request();
5467            req.extensions_mut()
5468                .insert(
5469                    GrpcMethod::new("yandex.cloud.mdb.mongodb.v1.UserService", "Delete"),
5470                );
5471            self.inner.unary(req, path, codec).await
5472        }
5473        /// Grants permission to the specified MongoDB user.
5474        pub async fn grant_permission(
5475            &mut self,
5476            request: impl tonic::IntoRequest<super::GrantUserPermissionRequest>,
5477        ) -> std::result::Result<
5478            tonic::Response<super::super::super::super::operation::Operation>,
5479            tonic::Status,
5480        > {
5481            self.inner
5482                .ready()
5483                .await
5484                .map_err(|e| {
5485                    tonic::Status::new(
5486                        tonic::Code::Unknown,
5487                        format!("Service was not ready: {}", e.into()),
5488                    )
5489                })?;
5490            let codec = tonic::codec::ProstCodec::default();
5491            let path = http::uri::PathAndQuery::from_static(
5492                "/yandex.cloud.mdb.mongodb.v1.UserService/GrantPermission",
5493            );
5494            let mut req = request.into_request();
5495            req.extensions_mut()
5496                .insert(
5497                    GrpcMethod::new(
5498                        "yandex.cloud.mdb.mongodb.v1.UserService",
5499                        "GrantPermission",
5500                    ),
5501                );
5502            self.inner.unary(req, path, codec).await
5503        }
5504        /// Revokes permission from the specified MongoDB user.
5505        pub async fn revoke_permission(
5506            &mut self,
5507            request: impl tonic::IntoRequest<super::RevokeUserPermissionRequest>,
5508        ) -> std::result::Result<
5509            tonic::Response<super::super::super::super::operation::Operation>,
5510            tonic::Status,
5511        > {
5512            self.inner
5513                .ready()
5514                .await
5515                .map_err(|e| {
5516                    tonic::Status::new(
5517                        tonic::Code::Unknown,
5518                        format!("Service was not ready: {}", e.into()),
5519                    )
5520                })?;
5521            let codec = tonic::codec::ProstCodec::default();
5522            let path = http::uri::PathAndQuery::from_static(
5523                "/yandex.cloud.mdb.mongodb.v1.UserService/RevokePermission",
5524            );
5525            let mut req = request.into_request();
5526            req.extensions_mut()
5527                .insert(
5528                    GrpcMethod::new(
5529                        "yandex.cloud.mdb.mongodb.v1.UserService",
5530                        "RevokePermission",
5531                    ),
5532                );
5533            self.inner.unary(req, path, codec).await
5534        }
5535    }
5536}