Skip to main content

google_cloud_config_v1/
client.rs

1// Copyright 2025 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15// Code generated by sidekick. DO NOT EDIT.
16#![allow(rustdoc::bare_urls)]
17#![allow(rustdoc::broken_intra_doc_links)]
18#![allow(rustdoc::invalid_html_tags)]
19#![allow(rustdoc::redundant_explicit_links)]
20
21/// Implements a client for the Infrastructure Manager API.
22///
23/// # Example
24/// ```
25/// # use google_cloud_config_v1::client::Config;
26/// use google_cloud_gax::paginator::ItemPaginator as _;
27/// async fn sample(
28///    parent: &str,
29/// ) -> anyhow::Result<()> {
30///     let client = Config::builder().build().await?;
31///     let mut list = client.list_deployments()
32///         .set_parent(parent)
33///         .by_item();
34///     while let Some(item) = list.next().await.transpose()? {
35///         println!("{:?}", item);
36///     }
37///     Ok(())
38/// }
39/// ```
40///
41/// # Service Description
42///
43/// Infrastructure Manager is a managed service that automates the deployment and
44/// management of Google Cloud infrastructure resources.
45///
46/// # Configuration
47///
48/// To configure `Config` use the `with_*` methods in the type returned
49/// by [builder()][Config::builder]. The default configuration should
50/// work for most applications. Common configuration changes include
51///
52/// * [with_endpoint()]: by default this client uses the global default endpoint
53///   (`https://config.googleapis.com`). Applications using regional
54///   endpoints or running in restricted networks (e.g. a network configured
55///   with [Private Google Access with VPC Service Controls]) may want to
56///   override this default.
57/// * [with_credentials()]: by default this client uses
58///   [Application Default Credentials]. Applications using custom
59///   authentication may need to override this default.
60///
61/// [with_endpoint()]: super::builder::config::ClientBuilder::with_endpoint
62/// [with_credentials()]: super::builder::config::ClientBuilder::with_credentials
63/// [Private Google Access with VPC Service Controls]: https://cloud.google.com/vpc-service-controls/docs/private-connectivity
64/// [Application Default Credentials]: https://cloud.google.com/docs/authentication#adc
65///
66/// # Pooling and Cloning
67///
68/// `Config` holds a connection pool internally, it is advised to
69/// create one and reuse it. You do not need to wrap `Config` in
70/// an [Rc](std::rc::Rc) or [Arc](std::sync::Arc) to reuse it, because it
71/// already uses an `Arc` internally.
72#[derive(Clone, Debug)]
73pub struct Config {
74    inner: std::sync::Arc<dyn super::stub::dynamic::Config>,
75}
76
77impl Config {
78    /// Returns a builder for [Config].
79    ///
80    /// ```
81    /// # async fn sample() -> google_cloud_gax::client_builder::Result<()> {
82    /// # use google_cloud_config_v1::client::Config;
83    /// let client = Config::builder().build().await?;
84    /// # Ok(()) }
85    /// ```
86    pub fn builder() -> super::builder::config::ClientBuilder {
87        crate::new_client_builder(super::builder::config::client::Factory)
88    }
89
90    /// Creates a new client from the provided stub.
91    ///
92    /// The most common case for calling this function is in tests mocking the
93    /// client's behavior.
94    pub fn from_stub<T>(stub: impl Into<std::sync::Arc<T>>) -> Self
95    where
96        T: super::stub::Config + 'static,
97    {
98        Self { inner: stub.into() }
99    }
100
101    pub(crate) async fn new(
102        config: gaxi::options::ClientConfig,
103    ) -> crate::ClientBuilderResult<Self> {
104        let inner = Self::build_inner(config).await?;
105        Ok(Self { inner })
106    }
107
108    async fn build_inner(
109        conf: gaxi::options::ClientConfig,
110    ) -> crate::ClientBuilderResult<std::sync::Arc<dyn super::stub::dynamic::Config>> {
111        if gaxi::options::tracing_enabled(&conf) {
112            return Ok(std::sync::Arc::new(Self::build_with_tracing(conf).await?));
113        }
114        Ok(std::sync::Arc::new(Self::build_transport(conf).await?))
115    }
116
117    async fn build_transport(
118        conf: gaxi::options::ClientConfig,
119    ) -> crate::ClientBuilderResult<impl super::stub::Config> {
120        super::transport::Config::new(conf).await
121    }
122
123    async fn build_with_tracing(
124        conf: gaxi::options::ClientConfig,
125    ) -> crate::ClientBuilderResult<impl super::stub::Config> {
126        Self::build_transport(conf)
127            .await
128            .map(super::tracing::Config::new)
129    }
130
131    /// Lists [Deployment][google.cloud.config.v1.Deployment]s in a given project
132    /// and location.
133    ///
134    /// [google.cloud.config.v1.Deployment]: crate::model::Deployment
135    ///
136    /// # Example
137    /// ```
138    /// # use google_cloud_config_v1::client::Config;
139    /// use google_cloud_gax::paginator::ItemPaginator as _;
140    /// use google_cloud_config_v1::Result;
141    /// async fn sample(
142    ///    client: &Config, parent: &str
143    /// ) -> Result<()> {
144    ///     let mut list = client.list_deployments()
145    ///         .set_parent(parent)
146    ///         .by_item();
147    ///     while let Some(item) = list.next().await.transpose()? {
148    ///         println!("{:?}", item);
149    ///     }
150    ///     Ok(())
151    /// }
152    /// ```
153    pub fn list_deployments(&self) -> super::builder::config::ListDeployments {
154        super::builder::config::ListDeployments::new(self.inner.clone())
155    }
156
157    /// Gets details about a [Deployment][google.cloud.config.v1.Deployment].
158    ///
159    /// [google.cloud.config.v1.Deployment]: crate::model::Deployment
160    ///
161    /// # Example
162    /// ```
163    /// # use google_cloud_config_v1::client::Config;
164    /// use google_cloud_config_v1::Result;
165    /// async fn sample(
166    ///    client: &Config, project_id: &str, location_id: &str, deployment_id: &str
167    /// ) -> Result<()> {
168    ///     let response = client.get_deployment()
169    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/deployments/{deployment_id}"))
170    ///         .send().await?;
171    ///     println!("response {:?}", response);
172    ///     Ok(())
173    /// }
174    /// ```
175    pub fn get_deployment(&self) -> super::builder::config::GetDeployment {
176        super::builder::config::GetDeployment::new(self.inner.clone())
177    }
178
179    /// Creates a [Deployment][google.cloud.config.v1.Deployment].
180    ///
181    /// [google.cloud.config.v1.Deployment]: crate::model::Deployment
182    ///
183    /// # Long running operations
184    ///
185    /// This method is used to start, and/or poll a [long-running Operation].
186    /// The [Working with long-running operations] chapter in the [user guide]
187    /// covers these operations in detail.
188    ///
189    /// [long-running operation]: https://google.aip.dev/151
190    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
191    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
192    ///
193    /// # Example
194    /// ```
195    /// # use google_cloud_config_v1::client::Config;
196    /// use google_cloud_lro::Poller;
197    /// use google_cloud_config_v1::model::Deployment;
198    /// use google_cloud_config_v1::Result;
199    /// async fn sample(
200    ///    client: &Config, parent: &str
201    /// ) -> Result<()> {
202    ///     let response = client.create_deployment()
203    ///         .set_parent(parent)
204    ///         .set_deployment_id("deployment_id_value")
205    ///         .set_deployment(
206    ///             Deployment::new()/* set fields */
207    ///         )
208    ///         .poller().until_done().await?;
209    ///     println!("response {:?}", response);
210    ///     Ok(())
211    /// }
212    /// ```
213    pub fn create_deployment(&self) -> super::builder::config::CreateDeployment {
214        super::builder::config::CreateDeployment::new(self.inner.clone())
215    }
216
217    /// Updates a [Deployment][google.cloud.config.v1.Deployment].
218    ///
219    /// [google.cloud.config.v1.Deployment]: crate::model::Deployment
220    ///
221    /// # Long running operations
222    ///
223    /// This method is used to start, and/or poll a [long-running Operation].
224    /// The [Working with long-running operations] chapter in the [user guide]
225    /// covers these operations in detail.
226    ///
227    /// [long-running operation]: https://google.aip.dev/151
228    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
229    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
230    ///
231    /// # Example
232    /// ```
233    /// # use google_cloud_config_v1::client::Config;
234    /// use google_cloud_lro::Poller;
235    /// # extern crate wkt as google_cloud_wkt;
236    /// use google_cloud_wkt::FieldMask;
237    /// use google_cloud_config_v1::model::Deployment;
238    /// use google_cloud_config_v1::Result;
239    /// async fn sample(
240    ///    client: &Config, project_id: &str, location_id: &str, deployment_id: &str
241    /// ) -> Result<()> {
242    ///     let response = client.update_deployment()
243    ///         .set_deployment(
244    ///             Deployment::new().set_name(format!("projects/{project_id}/locations/{location_id}/deployments/{deployment_id}"))/* set fields */
245    ///         )
246    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
247    ///         .poller().until_done().await?;
248    ///     println!("response {:?}", response);
249    ///     Ok(())
250    /// }
251    /// ```
252    pub fn update_deployment(&self) -> super::builder::config::UpdateDeployment {
253        super::builder::config::UpdateDeployment::new(self.inner.clone())
254    }
255
256    /// Deletes a [Deployment][google.cloud.config.v1.Deployment].
257    ///
258    /// [google.cloud.config.v1.Deployment]: crate::model::Deployment
259    ///
260    /// # Long running operations
261    ///
262    /// This method is used to start, and/or poll a [long-running Operation].
263    /// The [Working with long-running operations] chapter in the [user guide]
264    /// covers these operations in detail.
265    ///
266    /// [long-running operation]: https://google.aip.dev/151
267    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
268    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
269    ///
270    /// # Example
271    /// ```
272    /// # use google_cloud_config_v1::client::Config;
273    /// use google_cloud_lro::Poller;
274    /// use google_cloud_config_v1::Result;
275    /// async fn sample(
276    ///    client: &Config, project_id: &str, location_id: &str, deployment_id: &str
277    /// ) -> Result<()> {
278    ///     let response = client.delete_deployment()
279    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/deployments/{deployment_id}"))
280    ///         .poller().until_done().await?;
281    ///     println!("response {:?}", response);
282    ///     Ok(())
283    /// }
284    /// ```
285    pub fn delete_deployment(&self) -> super::builder::config::DeleteDeployment {
286        super::builder::config::DeleteDeployment::new(self.inner.clone())
287    }
288
289    /// Lists [Revision][google.cloud.config.v1.Revision]s of a deployment.
290    ///
291    /// [google.cloud.config.v1.Revision]: crate::model::Revision
292    ///
293    /// # Example
294    /// ```
295    /// # use google_cloud_config_v1::client::Config;
296    /// use google_cloud_gax::paginator::ItemPaginator as _;
297    /// use google_cloud_config_v1::Result;
298    /// async fn sample(
299    ///    client: &Config, project_id: &str, location_id: &str, deployment_id: &str
300    /// ) -> Result<()> {
301    ///     let mut list = client.list_revisions()
302    ///         .set_parent(format!("projects/{project_id}/locations/{location_id}/deployments/{deployment_id}"))
303    ///         .by_item();
304    ///     while let Some(item) = list.next().await.transpose()? {
305    ///         println!("{:?}", item);
306    ///     }
307    ///     Ok(())
308    /// }
309    /// ```
310    pub fn list_revisions(&self) -> super::builder::config::ListRevisions {
311        super::builder::config::ListRevisions::new(self.inner.clone())
312    }
313
314    /// Gets details about a [Revision][google.cloud.config.v1.Revision].
315    ///
316    /// [google.cloud.config.v1.Revision]: crate::model::Revision
317    ///
318    /// # Example
319    /// ```
320    /// # use google_cloud_config_v1::client::Config;
321    /// use google_cloud_config_v1::Result;
322    /// async fn sample(
323    ///    client: &Config, project_id: &str, location_id: &str, deployment_id: &str, revision_id: &str
324    /// ) -> Result<()> {
325    ///     let response = client.get_revision()
326    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/deployments/{deployment_id}/revisions/{revision_id}"))
327    ///         .send().await?;
328    ///     println!("response {:?}", response);
329    ///     Ok(())
330    /// }
331    /// ```
332    pub fn get_revision(&self) -> super::builder::config::GetRevision {
333        super::builder::config::GetRevision::new(self.inner.clone())
334    }
335
336    /// Gets details about a [Resource][google.cloud.config.v1.Resource] deployed
337    /// by Infra Manager.
338    ///
339    /// [google.cloud.config.v1.Resource]: crate::model::Resource
340    ///
341    /// # Example
342    /// ```
343    /// # use google_cloud_config_v1::client::Config;
344    /// use google_cloud_config_v1::Result;
345    /// async fn sample(
346    ///    client: &Config, project_id: &str, location_id: &str, deployment_id: &str, revision_id: &str, resource_id: &str
347    /// ) -> Result<()> {
348    ///     let response = client.get_resource()
349    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/deployments/{deployment_id}/revisions/{revision_id}/resources/{resource_id}"))
350    ///         .send().await?;
351    ///     println!("response {:?}", response);
352    ///     Ok(())
353    /// }
354    /// ```
355    pub fn get_resource(&self) -> super::builder::config::GetResource {
356        super::builder::config::GetResource::new(self.inner.clone())
357    }
358
359    /// Lists [Resources][google.cloud.config.v1.Resource] in a given revision.
360    ///
361    /// [google.cloud.config.v1.Resource]: crate::model::Resource
362    ///
363    /// # Example
364    /// ```
365    /// # use google_cloud_config_v1::client::Config;
366    /// use google_cloud_gax::paginator::ItemPaginator as _;
367    /// use google_cloud_config_v1::Result;
368    /// async fn sample(
369    ///    client: &Config, project_id: &str, location_id: &str, deployment_id: &str, revision_id: &str
370    /// ) -> Result<()> {
371    ///     let mut list = client.list_resources()
372    ///         .set_parent(format!("projects/{project_id}/locations/{location_id}/deployments/{deployment_id}/revisions/{revision_id}"))
373    ///         .by_item();
374    ///     while let Some(item) = list.next().await.transpose()? {
375    ///         println!("{:?}", item);
376    ///     }
377    ///     Ok(())
378    /// }
379    /// ```
380    pub fn list_resources(&self) -> super::builder::config::ListResources {
381        super::builder::config::ListResources::new(self.inner.clone())
382    }
383
384    /// Exports Terraform state file from a given deployment.
385    ///
386    /// # Example
387    /// ```
388    /// # use google_cloud_config_v1::client::Config;
389    /// use google_cloud_config_v1::Result;
390    /// async fn sample(
391    ///    client: &Config
392    /// ) -> Result<()> {
393    ///     let response = client.export_deployment_statefile()
394    ///         /* set fields */
395    ///         .send().await?;
396    ///     println!("response {:?}", response);
397    ///     Ok(())
398    /// }
399    /// ```
400    pub fn export_deployment_statefile(&self) -> super::builder::config::ExportDeploymentStatefile {
401        super::builder::config::ExportDeploymentStatefile::new(self.inner.clone())
402    }
403
404    /// Exports Terraform state file from a given revision.
405    ///
406    /// # Example
407    /// ```
408    /// # use google_cloud_config_v1::client::Config;
409    /// use google_cloud_config_v1::Result;
410    /// async fn sample(
411    ///    client: &Config
412    /// ) -> Result<()> {
413    ///     let response = client.export_revision_statefile()
414    ///         /* set fields */
415    ///         .send().await?;
416    ///     println!("response {:?}", response);
417    ///     Ok(())
418    /// }
419    /// ```
420    pub fn export_revision_statefile(&self) -> super::builder::config::ExportRevisionStatefile {
421        super::builder::config::ExportRevisionStatefile::new(self.inner.clone())
422    }
423
424    /// Imports Terraform state file in a given deployment. The state file does not
425    /// take effect until the Deployment has been unlocked.
426    ///
427    /// # Example
428    /// ```
429    /// # use google_cloud_config_v1::client::Config;
430    /// use google_cloud_config_v1::Result;
431    /// async fn sample(
432    ///    client: &Config
433    /// ) -> Result<()> {
434    ///     let response = client.import_statefile()
435    ///         /* set fields */
436    ///         .send().await?;
437    ///     println!("response {:?}", response);
438    ///     Ok(())
439    /// }
440    /// ```
441    pub fn import_statefile(&self) -> super::builder::config::ImportStatefile {
442        super::builder::config::ImportStatefile::new(self.inner.clone())
443    }
444
445    /// Deletes Terraform state file in a given deployment.
446    ///
447    /// # Example
448    /// ```
449    /// # use google_cloud_config_v1::client::Config;
450    /// use google_cloud_config_v1::Result;
451    /// async fn sample(
452    ///    client: &Config, project_id: &str, location_id: &str, deployment_id: &str
453    /// ) -> Result<()> {
454    ///     client.delete_statefile()
455    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/deployments/{deployment_id}"))
456    ///         .send().await?;
457    ///     Ok(())
458    /// }
459    /// ```
460    pub fn delete_statefile(&self) -> super::builder::config::DeleteStatefile {
461        super::builder::config::DeleteStatefile::new(self.inner.clone())
462    }
463
464    /// Locks a deployment.
465    ///
466    /// # Long running operations
467    ///
468    /// This method is used to start, and/or poll a [long-running Operation].
469    /// The [Working with long-running operations] chapter in the [user guide]
470    /// covers these operations in detail.
471    ///
472    /// [long-running operation]: https://google.aip.dev/151
473    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
474    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
475    ///
476    /// # Example
477    /// ```
478    /// # use google_cloud_config_v1::client::Config;
479    /// use google_cloud_lro::Poller;
480    /// use google_cloud_config_v1::Result;
481    /// async fn sample(
482    ///    client: &Config
483    /// ) -> Result<()> {
484    ///     let response = client.lock_deployment()
485    ///         /* set fields */
486    ///         .poller().until_done().await?;
487    ///     println!("response {:?}", response);
488    ///     Ok(())
489    /// }
490    /// ```
491    pub fn lock_deployment(&self) -> super::builder::config::LockDeployment {
492        super::builder::config::LockDeployment::new(self.inner.clone())
493    }
494
495    /// Unlocks a locked deployment.
496    ///
497    /// # Long running operations
498    ///
499    /// This method is used to start, and/or poll a [long-running Operation].
500    /// The [Working with long-running operations] chapter in the [user guide]
501    /// covers these operations in detail.
502    ///
503    /// [long-running operation]: https://google.aip.dev/151
504    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
505    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
506    ///
507    /// # Example
508    /// ```
509    /// # use google_cloud_config_v1::client::Config;
510    /// use google_cloud_lro::Poller;
511    /// use google_cloud_config_v1::Result;
512    /// async fn sample(
513    ///    client: &Config
514    /// ) -> Result<()> {
515    ///     let response = client.unlock_deployment()
516    ///         /* set fields */
517    ///         .poller().until_done().await?;
518    ///     println!("response {:?}", response);
519    ///     Ok(())
520    /// }
521    /// ```
522    pub fn unlock_deployment(&self) -> super::builder::config::UnlockDeployment {
523        super::builder::config::UnlockDeployment::new(self.inner.clone())
524    }
525
526    /// Exports the lock info on a locked deployment.
527    ///
528    /// # Example
529    /// ```
530    /// # use google_cloud_config_v1::client::Config;
531    /// use google_cloud_config_v1::Result;
532    /// async fn sample(
533    ///    client: &Config
534    /// ) -> Result<()> {
535    ///     let response = client.export_lock_info()
536    ///         /* set fields */
537    ///         .send().await?;
538    ///     println!("response {:?}", response);
539    ///     Ok(())
540    /// }
541    /// ```
542    pub fn export_lock_info(&self) -> super::builder::config::ExportLockInfo {
543        super::builder::config::ExportLockInfo::new(self.inner.clone())
544    }
545
546    /// Creates a [Preview][google.cloud.config.v1.Preview].
547    ///
548    /// [google.cloud.config.v1.Preview]: crate::model::Preview
549    ///
550    /// # Long running operations
551    ///
552    /// This method is used to start, and/or poll a [long-running Operation].
553    /// The [Working with long-running operations] chapter in the [user guide]
554    /// covers these operations in detail.
555    ///
556    /// [long-running operation]: https://google.aip.dev/151
557    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
558    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
559    ///
560    /// # Example
561    /// ```
562    /// # use google_cloud_config_v1::client::Config;
563    /// use google_cloud_lro::Poller;
564    /// use google_cloud_config_v1::model::Preview;
565    /// use google_cloud_config_v1::Result;
566    /// async fn sample(
567    ///    client: &Config, parent: &str
568    /// ) -> Result<()> {
569    ///     let response = client.create_preview()
570    ///         .set_parent(parent)
571    ///         .set_preview_id("preview_id_value")
572    ///         .set_preview(
573    ///             Preview::new()/* set fields */
574    ///         )
575    ///         .poller().until_done().await?;
576    ///     println!("response {:?}", response);
577    ///     Ok(())
578    /// }
579    /// ```
580    pub fn create_preview(&self) -> super::builder::config::CreatePreview {
581        super::builder::config::CreatePreview::new(self.inner.clone())
582    }
583
584    /// Gets details about a [Preview][google.cloud.config.v1.Preview].
585    ///
586    /// [google.cloud.config.v1.Preview]: crate::model::Preview
587    ///
588    /// # Example
589    /// ```
590    /// # use google_cloud_config_v1::client::Config;
591    /// use google_cloud_config_v1::Result;
592    /// async fn sample(
593    ///    client: &Config, project_id: &str, location_id: &str, preview_id: &str
594    /// ) -> Result<()> {
595    ///     let response = client.get_preview()
596    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/previews/{preview_id}"))
597    ///         .send().await?;
598    ///     println!("response {:?}", response);
599    ///     Ok(())
600    /// }
601    /// ```
602    pub fn get_preview(&self) -> super::builder::config::GetPreview {
603        super::builder::config::GetPreview::new(self.inner.clone())
604    }
605
606    /// Lists [Preview][google.cloud.config.v1.Preview]s in a given project and
607    /// location.
608    ///
609    /// [google.cloud.config.v1.Preview]: crate::model::Preview
610    ///
611    /// # Example
612    /// ```
613    /// # use google_cloud_config_v1::client::Config;
614    /// use google_cloud_gax::paginator::ItemPaginator as _;
615    /// use google_cloud_config_v1::Result;
616    /// async fn sample(
617    ///    client: &Config, parent: &str
618    /// ) -> Result<()> {
619    ///     let mut list = client.list_previews()
620    ///         .set_parent(parent)
621    ///         .by_item();
622    ///     while let Some(item) = list.next().await.transpose()? {
623    ///         println!("{:?}", item);
624    ///     }
625    ///     Ok(())
626    /// }
627    /// ```
628    pub fn list_previews(&self) -> super::builder::config::ListPreviews {
629        super::builder::config::ListPreviews::new(self.inner.clone())
630    }
631
632    /// Deletes a [Preview][google.cloud.config.v1.Preview].
633    ///
634    /// [google.cloud.config.v1.Preview]: crate::model::Preview
635    ///
636    /// # Long running operations
637    ///
638    /// This method is used to start, and/or poll a [long-running Operation].
639    /// The [Working with long-running operations] chapter in the [user guide]
640    /// covers these operations in detail.
641    ///
642    /// [long-running operation]: https://google.aip.dev/151
643    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
644    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
645    ///
646    /// # Example
647    /// ```
648    /// # use google_cloud_config_v1::client::Config;
649    /// use google_cloud_lro::Poller;
650    /// use google_cloud_config_v1::Result;
651    /// async fn sample(
652    ///    client: &Config, project_id: &str, location_id: &str, preview_id: &str
653    /// ) -> Result<()> {
654    ///     let response = client.delete_preview()
655    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/previews/{preview_id}"))
656    ///         .poller().until_done().await?;
657    ///     println!("response {:?}", response);
658    ///     Ok(())
659    /// }
660    /// ```
661    pub fn delete_preview(&self) -> super::builder::config::DeletePreview {
662        super::builder::config::DeletePreview::new(self.inner.clone())
663    }
664
665    /// Export [Preview][google.cloud.config.v1.Preview] results.
666    ///
667    /// [google.cloud.config.v1.Preview]: crate::model::Preview
668    ///
669    /// # Example
670    /// ```
671    /// # use google_cloud_config_v1::client::Config;
672    /// use google_cloud_config_v1::Result;
673    /// async fn sample(
674    ///    client: &Config
675    /// ) -> Result<()> {
676    ///     let response = client.export_preview_result()
677    ///         /* set fields */
678    ///         .send().await?;
679    ///     println!("response {:?}", response);
680    ///     Ok(())
681    /// }
682    /// ```
683    pub fn export_preview_result(&self) -> super::builder::config::ExportPreviewResult {
684        super::builder::config::ExportPreviewResult::new(self.inner.clone())
685    }
686
687    /// Lists [TerraformVersion][google.cloud.config.v1.TerraformVersion]s in a
688    /// given project and location.
689    ///
690    /// [google.cloud.config.v1.TerraformVersion]: crate::model::TerraformVersion
691    ///
692    /// # Example
693    /// ```
694    /// # use google_cloud_config_v1::client::Config;
695    /// use google_cloud_gax::paginator::ItemPaginator as _;
696    /// use google_cloud_config_v1::Result;
697    /// async fn sample(
698    ///    client: &Config, parent: &str
699    /// ) -> Result<()> {
700    ///     let mut list = client.list_terraform_versions()
701    ///         .set_parent(parent)
702    ///         .by_item();
703    ///     while let Some(item) = list.next().await.transpose()? {
704    ///         println!("{:?}", item);
705    ///     }
706    ///     Ok(())
707    /// }
708    /// ```
709    pub fn list_terraform_versions(&self) -> super::builder::config::ListTerraformVersions {
710        super::builder::config::ListTerraformVersions::new(self.inner.clone())
711    }
712
713    /// Gets details about a
714    /// [TerraformVersion][google.cloud.config.v1.TerraformVersion].
715    ///
716    /// [google.cloud.config.v1.TerraformVersion]: crate::model::TerraformVersion
717    ///
718    /// # Example
719    /// ```
720    /// # use google_cloud_config_v1::client::Config;
721    /// use google_cloud_config_v1::Result;
722    /// async fn sample(
723    ///    client: &Config, project_id: &str, location_id: &str, terraform_version_id: &str
724    /// ) -> Result<()> {
725    ///     let response = client.get_terraform_version()
726    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/terraformVersions/{terraform_version_id}"))
727    ///         .send().await?;
728    ///     println!("response {:?}", response);
729    ///     Ok(())
730    /// }
731    /// ```
732    pub fn get_terraform_version(&self) -> super::builder::config::GetTerraformVersion {
733        super::builder::config::GetTerraformVersion::new(self.inner.clone())
734    }
735
736    /// Lists ResourceChanges for a given preview.
737    ///
738    /// # Example
739    /// ```
740    /// # use google_cloud_config_v1::client::Config;
741    /// use google_cloud_gax::paginator::ItemPaginator as _;
742    /// use google_cloud_config_v1::Result;
743    /// async fn sample(
744    ///    client: &Config, project_id: &str, location_id: &str, preview_id: &str
745    /// ) -> Result<()> {
746    ///     let mut list = client.list_resource_changes()
747    ///         .set_parent(format!("projects/{project_id}/locations/{location_id}/previews/{preview_id}"))
748    ///         .by_item();
749    ///     while let Some(item) = list.next().await.transpose()? {
750    ///         println!("{:?}", item);
751    ///     }
752    ///     Ok(())
753    /// }
754    /// ```
755    pub fn list_resource_changes(&self) -> super::builder::config::ListResourceChanges {
756        super::builder::config::ListResourceChanges::new(self.inner.clone())
757    }
758
759    /// Get a ResourceChange for a given preview.
760    ///
761    /// # Example
762    /// ```
763    /// # use google_cloud_config_v1::client::Config;
764    /// use google_cloud_config_v1::Result;
765    /// async fn sample(
766    ///    client: &Config, project_id: &str, location_id: &str, preview_id: &str, resource_change_id: &str
767    /// ) -> Result<()> {
768    ///     let response = client.get_resource_change()
769    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/previews/{preview_id}/resourceChanges/{resource_change_id}"))
770    ///         .send().await?;
771    ///     println!("response {:?}", response);
772    ///     Ok(())
773    /// }
774    /// ```
775    pub fn get_resource_change(&self) -> super::builder::config::GetResourceChange {
776        super::builder::config::GetResourceChange::new(self.inner.clone())
777    }
778
779    /// List ResourceDrifts for a given preview.
780    ///
781    /// # Example
782    /// ```
783    /// # use google_cloud_config_v1::client::Config;
784    /// use google_cloud_gax::paginator::ItemPaginator as _;
785    /// use google_cloud_config_v1::Result;
786    /// async fn sample(
787    ///    client: &Config, project_id: &str, location_id: &str, preview_id: &str
788    /// ) -> Result<()> {
789    ///     let mut list = client.list_resource_drifts()
790    ///         .set_parent(format!("projects/{project_id}/locations/{location_id}/previews/{preview_id}"))
791    ///         .by_item();
792    ///     while let Some(item) = list.next().await.transpose()? {
793    ///         println!("{:?}", item);
794    ///     }
795    ///     Ok(())
796    /// }
797    /// ```
798    pub fn list_resource_drifts(&self) -> super::builder::config::ListResourceDrifts {
799        super::builder::config::ListResourceDrifts::new(self.inner.clone())
800    }
801
802    /// Get a ResourceDrift for a given preview.
803    ///
804    /// # Example
805    /// ```
806    /// # use google_cloud_config_v1::client::Config;
807    /// use google_cloud_config_v1::Result;
808    /// async fn sample(
809    ///    client: &Config, project_id: &str, location_id: &str, preview_id: &str, resource_drift_id: &str
810    /// ) -> Result<()> {
811    ///     let response = client.get_resource_drift()
812    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/previews/{preview_id}/resourceDrifts/{resource_drift_id}"))
813    ///         .send().await?;
814    ///     println!("response {:?}", response);
815    ///     Ok(())
816    /// }
817    /// ```
818    pub fn get_resource_drift(&self) -> super::builder::config::GetResourceDrift {
819        super::builder::config::GetResourceDrift::new(self.inner.clone())
820    }
821
822    /// Get the AutoMigrationConfig for a given project and location.
823    ///
824    /// # Example
825    /// ```
826    /// # use google_cloud_config_v1::client::Config;
827    /// use google_cloud_config_v1::Result;
828    /// async fn sample(
829    ///    client: &Config, project_id: &str, location_id: &str
830    /// ) -> Result<()> {
831    ///     let response = client.get_auto_migration_config()
832    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/autoMigrationConfig"))
833    ///         .send().await?;
834    ///     println!("response {:?}", response);
835    ///     Ok(())
836    /// }
837    /// ```
838    pub fn get_auto_migration_config(&self) -> super::builder::config::GetAutoMigrationConfig {
839        super::builder::config::GetAutoMigrationConfig::new(self.inner.clone())
840    }
841
842    /// Updates the AutoMigrationConfig for a given project and location.
843    ///
844    /// # Long running operations
845    ///
846    /// This method is used to start, and/or poll a [long-running Operation].
847    /// The [Working with long-running operations] chapter in the [user guide]
848    /// covers these operations in detail.
849    ///
850    /// [long-running operation]: https://google.aip.dev/151
851    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
852    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
853    ///
854    /// # Example
855    /// ```
856    /// # use google_cloud_config_v1::client::Config;
857    /// use google_cloud_lro::Poller;
858    /// # extern crate wkt as google_cloud_wkt;
859    /// use google_cloud_wkt::FieldMask;
860    /// use google_cloud_config_v1::model::AutoMigrationConfig;
861    /// use google_cloud_config_v1::Result;
862    /// async fn sample(
863    ///    client: &Config, project_id: &str, location_id: &str
864    /// ) -> Result<()> {
865    ///     let response = client.update_auto_migration_config()
866    ///         .set_auto_migration_config(
867    ///             AutoMigrationConfig::new().set_name(format!("projects/{project_id}/locations/{location_id}/autoMigrationConfig"))/* set fields */
868    ///         )
869    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
870    ///         .poller().until_done().await?;
871    ///     println!("response {:?}", response);
872    ///     Ok(())
873    /// }
874    /// ```
875    pub fn update_auto_migration_config(
876        &self,
877    ) -> super::builder::config::UpdateAutoMigrationConfig {
878        super::builder::config::UpdateAutoMigrationConfig::new(self.inner.clone())
879    }
880
881    /// Get a DeploymentGroup for a given project and location.
882    ///
883    /// # Example
884    /// ```
885    /// # use google_cloud_config_v1::client::Config;
886    /// use google_cloud_config_v1::Result;
887    /// async fn sample(
888    ///    client: &Config, project_id: &str, location_id: &str, deployment_group_id: &str
889    /// ) -> Result<()> {
890    ///     let response = client.get_deployment_group()
891    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/deploymentGroups/{deployment_group_id}"))
892    ///         .send().await?;
893    ///     println!("response {:?}", response);
894    ///     Ok(())
895    /// }
896    /// ```
897    pub fn get_deployment_group(&self) -> super::builder::config::GetDeploymentGroup {
898        super::builder::config::GetDeploymentGroup::new(self.inner.clone())
899    }
900
901    /// Creates a [DeploymentGroup][google.cloud.config.v1.DeploymentGroup]
902    /// The newly created DeploymentGroup will be in the `CREATING` state
903    /// and can be retrieved via Get and List calls.
904    ///
905    /// [google.cloud.config.v1.DeploymentGroup]: crate::model::DeploymentGroup
906    ///
907    /// # Long running operations
908    ///
909    /// This method is used to start, and/or poll a [long-running Operation].
910    /// The [Working with long-running operations] chapter in the [user guide]
911    /// covers these operations in detail.
912    ///
913    /// [long-running operation]: https://google.aip.dev/151
914    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
915    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
916    ///
917    /// # Example
918    /// ```
919    /// # use google_cloud_config_v1::client::Config;
920    /// use google_cloud_lro::Poller;
921    /// use google_cloud_config_v1::model::DeploymentGroup;
922    /// use google_cloud_config_v1::Result;
923    /// async fn sample(
924    ///    client: &Config, parent: &str
925    /// ) -> Result<()> {
926    ///     let response = client.create_deployment_group()
927    ///         .set_parent(parent)
928    ///         .set_deployment_group(
929    ///             DeploymentGroup::new()/* set fields */
930    ///         )
931    ///         .poller().until_done().await?;
932    ///     println!("response {:?}", response);
933    ///     Ok(())
934    /// }
935    /// ```
936    pub fn create_deployment_group(&self) -> super::builder::config::CreateDeploymentGroup {
937        super::builder::config::CreateDeploymentGroup::new(self.inner.clone())
938    }
939
940    /// Updates a [DeploymentGroup][google.cloud.config.v1.DeploymentGroup]
941    ///
942    /// [google.cloud.config.v1.DeploymentGroup]: crate::model::DeploymentGroup
943    ///
944    /// # Long running operations
945    ///
946    /// This method is used to start, and/or poll a [long-running Operation].
947    /// The [Working with long-running operations] chapter in the [user guide]
948    /// covers these operations in detail.
949    ///
950    /// [long-running operation]: https://google.aip.dev/151
951    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
952    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
953    ///
954    /// # Example
955    /// ```
956    /// # use google_cloud_config_v1::client::Config;
957    /// use google_cloud_lro::Poller;
958    /// # extern crate wkt as google_cloud_wkt;
959    /// use google_cloud_wkt::FieldMask;
960    /// use google_cloud_config_v1::model::DeploymentGroup;
961    /// use google_cloud_config_v1::Result;
962    /// async fn sample(
963    ///    client: &Config, project_id: &str, location_id: &str, deployment_group_id: &str
964    /// ) -> Result<()> {
965    ///     let response = client.update_deployment_group()
966    ///         .set_deployment_group(
967    ///             DeploymentGroup::new().set_name(format!("projects/{project_id}/locations/{location_id}/deploymentGroups/{deployment_group_id}"))/* set fields */
968    ///         )
969    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
970    ///         .poller().until_done().await?;
971    ///     println!("response {:?}", response);
972    ///     Ok(())
973    /// }
974    /// ```
975    pub fn update_deployment_group(&self) -> super::builder::config::UpdateDeploymentGroup {
976        super::builder::config::UpdateDeploymentGroup::new(self.inner.clone())
977    }
978
979    /// Deletes a [DeploymentGroup][google.cloud.config.v1.DeploymentGroup]
980    ///
981    /// [google.cloud.config.v1.DeploymentGroup]: crate::model::DeploymentGroup
982    ///
983    /// # Long running operations
984    ///
985    /// This method is used to start, and/or poll a [long-running Operation].
986    /// The [Working with long-running operations] chapter in the [user guide]
987    /// covers these operations in detail.
988    ///
989    /// [long-running operation]: https://google.aip.dev/151
990    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
991    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
992    ///
993    /// # Example
994    /// ```
995    /// # use google_cloud_config_v1::client::Config;
996    /// use google_cloud_lro::Poller;
997    /// use google_cloud_config_v1::Result;
998    /// async fn sample(
999    ///    client: &Config, project_id: &str, location_id: &str, deployment_group_id: &str
1000    /// ) -> Result<()> {
1001    ///     let response = client.delete_deployment_group()
1002    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/deploymentGroups/{deployment_group_id}"))
1003    ///         .poller().until_done().await?;
1004    ///     println!("response {:?}", response);
1005    ///     Ok(())
1006    /// }
1007    /// ```
1008    pub fn delete_deployment_group(&self) -> super::builder::config::DeleteDeploymentGroup {
1009        super::builder::config::DeleteDeploymentGroup::new(self.inner.clone())
1010    }
1011
1012    /// List DeploymentGroups for a given project and location.
1013    ///
1014    /// # Example
1015    /// ```
1016    /// # use google_cloud_config_v1::client::Config;
1017    /// use google_cloud_gax::paginator::ItemPaginator as _;
1018    /// use google_cloud_config_v1::Result;
1019    /// async fn sample(
1020    ///    client: &Config, parent: &str
1021    /// ) -> Result<()> {
1022    ///     let mut list = client.list_deployment_groups()
1023    ///         .set_parent(parent)
1024    ///         .by_item();
1025    ///     while let Some(item) = list.next().await.transpose()? {
1026    ///         println!("{:?}", item);
1027    ///     }
1028    ///     Ok(())
1029    /// }
1030    /// ```
1031    pub fn list_deployment_groups(&self) -> super::builder::config::ListDeploymentGroups {
1032        super::builder::config::ListDeploymentGroups::new(self.inner.clone())
1033    }
1034
1035    /// Provisions a deployment group.
1036    ///
1037    /// NOTE: As a first step of this operation, Infra Manager will
1038    /// automatically delete any Deployments that were part of the
1039    /// *last successful*
1040    /// [DeploymentGroupRevision][google.cloud.config.v1.DeploymentGroupRevision]
1041    /// but are *no longer* included in the *current*
1042    /// [DeploymentGroup][google.cloud.config.v1.DeploymentGroup] definition (e.g.,
1043    /// following an `UpdateDeploymentGroup` call), along with their actuated
1044    /// resources.
1045    ///
1046    /// [google.cloud.config.v1.DeploymentGroup]: crate::model::DeploymentGroup
1047    /// [google.cloud.config.v1.DeploymentGroupRevision]: crate::model::DeploymentGroupRevision
1048    ///
1049    /// # Long running operations
1050    ///
1051    /// This method is used to start, and/or poll a [long-running Operation].
1052    /// The [Working with long-running operations] chapter in the [user guide]
1053    /// covers these operations in detail.
1054    ///
1055    /// [long-running operation]: https://google.aip.dev/151
1056    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
1057    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
1058    ///
1059    /// # Example
1060    /// ```
1061    /// # use google_cloud_config_v1::client::Config;
1062    /// use google_cloud_lro::Poller;
1063    /// use google_cloud_config_v1::Result;
1064    /// async fn sample(
1065    ///    client: &Config
1066    /// ) -> Result<()> {
1067    ///     let response = client.provision_deployment_group()
1068    ///         /* set fields */
1069    ///         .poller().until_done().await?;
1070    ///     println!("response {:?}", response);
1071    ///     Ok(())
1072    /// }
1073    /// ```
1074    pub fn provision_deployment_group(&self) -> super::builder::config::ProvisionDeploymentGroup {
1075        super::builder::config::ProvisionDeploymentGroup::new(self.inner.clone())
1076    }
1077
1078    /// Deprovisions a deployment group.
1079    ///
1080    /// NOTE: As a first step of this operation, Infra Manager will
1081    /// automatically delete any Deployments that were part of the
1082    /// *last successful*
1083    /// [DeploymentGroupRevision][google.cloud.config.v1.DeploymentGroupRevision]
1084    /// but are *no longer* included in the *current*
1085    /// [DeploymentGroup][google.cloud.config.v1.DeploymentGroup] definition (e.g.,
1086    /// following an `UpdateDeploymentGroup` call), along with their actuated
1087    /// resources.
1088    ///
1089    /// [google.cloud.config.v1.DeploymentGroup]: crate::model::DeploymentGroup
1090    /// [google.cloud.config.v1.DeploymentGroupRevision]: crate::model::DeploymentGroupRevision
1091    ///
1092    /// # Long running operations
1093    ///
1094    /// This method is used to start, and/or poll a [long-running Operation].
1095    /// The [Working with long-running operations] chapter in the [user guide]
1096    /// covers these operations in detail.
1097    ///
1098    /// [long-running operation]: https://google.aip.dev/151
1099    /// [user guide]: https://googleapis.github.io/google-cloud-rust/
1100    /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
1101    ///
1102    /// # Example
1103    /// ```
1104    /// # use google_cloud_config_v1::client::Config;
1105    /// use google_cloud_lro::Poller;
1106    /// use google_cloud_config_v1::Result;
1107    /// async fn sample(
1108    ///    client: &Config
1109    /// ) -> Result<()> {
1110    ///     let response = client.deprovision_deployment_group()
1111    ///         /* set fields */
1112    ///         .poller().until_done().await?;
1113    ///     println!("response {:?}", response);
1114    ///     Ok(())
1115    /// }
1116    /// ```
1117    pub fn deprovision_deployment_group(
1118        &self,
1119    ) -> super::builder::config::DeprovisionDeploymentGroup {
1120        super::builder::config::DeprovisionDeploymentGroup::new(self.inner.clone())
1121    }
1122
1123    /// Gets details about a
1124    /// [DeploymentGroupRevision][google.cloud.config.v1.DeploymentGroupRevision].
1125    ///
1126    /// [google.cloud.config.v1.DeploymentGroupRevision]: crate::model::DeploymentGroupRevision
1127    ///
1128    /// # Example
1129    /// ```
1130    /// # use google_cloud_config_v1::client::Config;
1131    /// use google_cloud_config_v1::Result;
1132    /// async fn sample(
1133    ///    client: &Config, project_id: &str, location_id: &str, deployment_group_id: &str, revision_id: &str
1134    /// ) -> Result<()> {
1135    ///     let response = client.get_deployment_group_revision()
1136    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/deploymentGroups/{deployment_group_id}/revisions/{revision_id}"))
1137    ///         .send().await?;
1138    ///     println!("response {:?}", response);
1139    ///     Ok(())
1140    /// }
1141    /// ```
1142    pub fn get_deployment_group_revision(
1143        &self,
1144    ) -> super::builder::config::GetDeploymentGroupRevision {
1145        super::builder::config::GetDeploymentGroupRevision::new(self.inner.clone())
1146    }
1147
1148    /// Lists
1149    /// [DeploymentGroupRevision][google.cloud.config.v1.DeploymentGroupRevision]s
1150    /// in a given [DeploymentGroup][google.cloud.config.v1.DeploymentGroup].
1151    ///
1152    /// [google.cloud.config.v1.DeploymentGroup]: crate::model::DeploymentGroup
1153    /// [google.cloud.config.v1.DeploymentGroupRevision]: crate::model::DeploymentGroupRevision
1154    ///
1155    /// # Example
1156    /// ```
1157    /// # use google_cloud_config_v1::client::Config;
1158    /// use google_cloud_gax::paginator::ItemPaginator as _;
1159    /// use google_cloud_config_v1::Result;
1160    /// async fn sample(
1161    ///    client: &Config, project_id: &str, location_id: &str, deployment_group_id: &str
1162    /// ) -> Result<()> {
1163    ///     let mut list = client.list_deployment_group_revisions()
1164    ///         .set_parent(format!("projects/{project_id}/locations/{location_id}/deploymentGroups/{deployment_group_id}"))
1165    ///         .by_item();
1166    ///     while let Some(item) = list.next().await.transpose()? {
1167    ///         println!("{:?}", item);
1168    ///     }
1169    ///     Ok(())
1170    /// }
1171    /// ```
1172    pub fn list_deployment_group_revisions(
1173        &self,
1174    ) -> super::builder::config::ListDeploymentGroupRevisions {
1175        super::builder::config::ListDeploymentGroupRevisions::new(self.inner.clone())
1176    }
1177
1178    /// Lists information about the supported locations for this service.
1179    ///
1180    /// This method lists locations based on the resource scope provided in
1181    /// the [ListLocationsRequest.name][google.cloud.location.ListLocationsRequest.name] field: *
1182    /// **Global locations**: If `name` is empty, the method lists the
1183    /// public locations available to all projects. * **Project-specific
1184    /// locations**: If `name` follows the format
1185    /// `projects/{project}`, the method lists locations visible to that
1186    /// specific project. This includes public, private, or other
1187    /// project-specific locations enabled for the project.
1188    ///
1189    /// For gRPC and client library implementations, the resource name is
1190    /// passed as the `name` field. For direct service calls, the resource
1191    /// name is
1192    /// incorporated into the request path based on the specific service
1193    /// implementation and version.
1194    ///
1195    /// [google.cloud.location.ListLocationsRequest.name]: google_cloud_location::model::ListLocationsRequest::name
1196    ///
1197    /// # Example
1198    /// ```
1199    /// # use google_cloud_config_v1::client::Config;
1200    /// use google_cloud_gax::paginator::ItemPaginator as _;
1201    /// use google_cloud_config_v1::Result;
1202    /// async fn sample(
1203    ///    client: &Config
1204    /// ) -> Result<()> {
1205    ///     let mut list = client.list_locations()
1206    ///         /* set fields */
1207    ///         .by_item();
1208    ///     while let Some(item) = list.next().await.transpose()? {
1209    ///         println!("{:?}", item);
1210    ///     }
1211    ///     Ok(())
1212    /// }
1213    /// ```
1214    pub fn list_locations(&self) -> super::builder::config::ListLocations {
1215        super::builder::config::ListLocations::new(self.inner.clone())
1216    }
1217
1218    /// Gets information about a location.
1219    ///
1220    /// # Example
1221    /// ```
1222    /// # use google_cloud_config_v1::client::Config;
1223    /// use google_cloud_config_v1::Result;
1224    /// async fn sample(
1225    ///    client: &Config
1226    /// ) -> Result<()> {
1227    ///     let response = client.get_location()
1228    ///         /* set fields */
1229    ///         .send().await?;
1230    ///     println!("response {:?}", response);
1231    ///     Ok(())
1232    /// }
1233    /// ```
1234    pub fn get_location(&self) -> super::builder::config::GetLocation {
1235        super::builder::config::GetLocation::new(self.inner.clone())
1236    }
1237
1238    /// Sets the access control policy on the specified resource. Replaces
1239    /// any existing policy.
1240    ///
1241    /// Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED`
1242    /// errors.
1243    ///
1244    /// # Example
1245    /// ```
1246    /// # use google_cloud_config_v1::client::Config;
1247    /// use google_cloud_config_v1::Result;
1248    /// async fn sample(
1249    ///    client: &Config
1250    /// ) -> Result<()> {
1251    ///     let response = client.set_iam_policy()
1252    ///         /* set fields */
1253    ///         .send().await?;
1254    ///     println!("response {:?}", response);
1255    ///     Ok(())
1256    /// }
1257    /// ```
1258    pub fn set_iam_policy(&self) -> super::builder::config::SetIamPolicy {
1259        super::builder::config::SetIamPolicy::new(self.inner.clone())
1260    }
1261
1262    /// Gets the access control policy for a resource. Returns an empty policy
1263    /// if the resource exists and does not have a policy set.
1264    ///
1265    /// # Example
1266    /// ```
1267    /// # use google_cloud_config_v1::client::Config;
1268    /// use google_cloud_config_v1::Result;
1269    /// async fn sample(
1270    ///    client: &Config
1271    /// ) -> Result<()> {
1272    ///     let response = client.get_iam_policy()
1273    ///         /* set fields */
1274    ///         .send().await?;
1275    ///     println!("response {:?}", response);
1276    ///     Ok(())
1277    /// }
1278    /// ```
1279    pub fn get_iam_policy(&self) -> super::builder::config::GetIamPolicy {
1280        super::builder::config::GetIamPolicy::new(self.inner.clone())
1281    }
1282
1283    /// Returns permissions that a caller has on the specified resource. If the
1284    /// resource does not exist, this will return an empty set of
1285    /// permissions, not a `NOT_FOUND` error.
1286    ///
1287    /// Note: This operation is designed to be used for building
1288    /// permission-aware UIs and command-line tools, not for authorization
1289    /// checking. This operation may "fail open" without warning.
1290    ///
1291    /// # Example
1292    /// ```
1293    /// # use google_cloud_config_v1::client::Config;
1294    /// use google_cloud_config_v1::Result;
1295    /// async fn sample(
1296    ///    client: &Config
1297    /// ) -> Result<()> {
1298    ///     let response = client.test_iam_permissions()
1299    ///         /* set fields */
1300    ///         .send().await?;
1301    ///     println!("response {:?}", response);
1302    ///     Ok(())
1303    /// }
1304    /// ```
1305    pub fn test_iam_permissions(&self) -> super::builder::config::TestIamPermissions {
1306        super::builder::config::TestIamPermissions::new(self.inner.clone())
1307    }
1308
1309    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
1310    ///
1311    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
1312    ///
1313    /// # Example
1314    /// ```
1315    /// # use google_cloud_config_v1::client::Config;
1316    /// use google_cloud_gax::paginator::ItemPaginator as _;
1317    /// use google_cloud_config_v1::Result;
1318    /// async fn sample(
1319    ///    client: &Config
1320    /// ) -> Result<()> {
1321    ///     let mut list = client.list_operations()
1322    ///         /* set fields */
1323    ///         .by_item();
1324    ///     while let Some(item) = list.next().await.transpose()? {
1325    ///         println!("{:?}", item);
1326    ///     }
1327    ///     Ok(())
1328    /// }
1329    /// ```
1330    pub fn list_operations(&self) -> super::builder::config::ListOperations {
1331        super::builder::config::ListOperations::new(self.inner.clone())
1332    }
1333
1334    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
1335    ///
1336    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
1337    ///
1338    /// # Example
1339    /// ```
1340    /// # use google_cloud_config_v1::client::Config;
1341    /// use google_cloud_config_v1::Result;
1342    /// async fn sample(
1343    ///    client: &Config
1344    /// ) -> Result<()> {
1345    ///     let response = client.get_operation()
1346    ///         /* set fields */
1347    ///         .send().await?;
1348    ///     println!("response {:?}", response);
1349    ///     Ok(())
1350    /// }
1351    /// ```
1352    pub fn get_operation(&self) -> super::builder::config::GetOperation {
1353        super::builder::config::GetOperation::new(self.inner.clone())
1354    }
1355
1356    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
1357    ///
1358    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
1359    ///
1360    /// # Example
1361    /// ```
1362    /// # use google_cloud_config_v1::client::Config;
1363    /// use google_cloud_config_v1::Result;
1364    /// async fn sample(
1365    ///    client: &Config
1366    /// ) -> Result<()> {
1367    ///     client.delete_operation()
1368    ///         /* set fields */
1369    ///         .send().await?;
1370    ///     Ok(())
1371    /// }
1372    /// ```
1373    pub fn delete_operation(&self) -> super::builder::config::DeleteOperation {
1374        super::builder::config::DeleteOperation::new(self.inner.clone())
1375    }
1376
1377    /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
1378    ///
1379    /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
1380    ///
1381    /// # Example
1382    /// ```
1383    /// # use google_cloud_config_v1::client::Config;
1384    /// use google_cloud_config_v1::Result;
1385    /// async fn sample(
1386    ///    client: &Config
1387    /// ) -> Result<()> {
1388    ///     client.cancel_operation()
1389    ///         /* set fields */
1390    ///         .send().await?;
1391    ///     Ok(())
1392    /// }
1393    /// ```
1394    pub fn cancel_operation(&self) -> super::builder::config::CancelOperation {
1395        super::builder::config::CancelOperation::new(self.inner.clone())
1396    }
1397}