Skip to main content

google_cloud_parametermanager_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::redundant_explicit_links)]
17#![allow(rustdoc::broken_intra_doc_links)]
18
19/// Implements a client for the Parameter Manager API.
20///
21/// # Example
22/// ```
23/// # use google_cloud_parametermanager_v1::client::ParameterManager;
24/// use google_cloud_gax::paginator::ItemPaginator as _;
25/// async fn sample(
26///    project_id: &str,
27///    location_id: &str,
28/// ) -> anyhow::Result<()> {
29///     let client = ParameterManager::builder().build().await?;
30///     let mut list = client.list_parameters()
31///         .set_parent(format!("projects/{project_id}/locations/{location_id}"))
32///         .by_item();
33///     while let Some(item) = list.next().await.transpose()? {
34///         println!("{:?}", item);
35///     }
36///     Ok(())
37/// }
38/// ```
39///
40/// # Service Description
41///
42/// Service describing handlers for resources
43///
44/// # Configuration
45///
46/// To configure `ParameterManager` use the `with_*` methods in the type returned
47/// by [builder()][ParameterManager::builder]. The default configuration should
48/// work for most applications. Common configuration changes include
49///
50/// * [with_endpoint()]: by default this client uses the global default endpoint
51///   (`https://parametermanager.googleapis.com`). Applications using regional
52///   endpoints or running in restricted networks (e.g. a network configured
53//    with [Private Google Access with VPC Service Controls]) may want to
54///   override this default.
55/// * [with_credentials()]: by default this client uses
56///   [Application Default Credentials]. Applications using custom
57///   authentication may need to override this default.
58///
59/// [with_endpoint()]: super::builder::parameter_manager::ClientBuilder::with_endpoint
60/// [with_credentials()]: super::builder::parameter_manager::ClientBuilder::with_credentials
61/// [Private Google Access with VPC Service Controls]: https://cloud.google.com/vpc-service-controls/docs/private-connectivity
62/// [Application Default Credentials]: https://cloud.google.com/docs/authentication#adc
63///
64/// # Pooling and Cloning
65///
66/// `ParameterManager` holds a connection pool internally, it is advised to
67/// create one and reuse it. You do not need to wrap `ParameterManager` in
68/// an [Rc](std::rc::Rc) or [Arc](std::sync::Arc) to reuse it, because it
69/// already uses an `Arc` internally.
70#[derive(Clone, Debug)]
71pub struct ParameterManager {
72    inner: std::sync::Arc<dyn super::stub::dynamic::ParameterManager>,
73}
74
75impl ParameterManager {
76    /// Returns a builder for [ParameterManager].
77    ///
78    /// ```
79    /// # async fn sample() -> google_cloud_gax::client_builder::Result<()> {
80    /// # use google_cloud_parametermanager_v1::client::ParameterManager;
81    /// let client = ParameterManager::builder().build().await?;
82    /// # Ok(()) }
83    /// ```
84    pub fn builder() -> super::builder::parameter_manager::ClientBuilder {
85        crate::new_client_builder(super::builder::parameter_manager::client::Factory)
86    }
87
88    /// Creates a new client from the provided stub.
89    ///
90    /// The most common case for calling this function is in tests mocking the
91    /// client's behavior.
92    pub fn from_stub<T>(stub: impl Into<std::sync::Arc<T>>) -> Self
93    where
94        T: super::stub::ParameterManager + 'static,
95    {
96        Self { inner: stub.into() }
97    }
98
99    pub(crate) async fn new(
100        config: gaxi::options::ClientConfig,
101    ) -> crate::ClientBuilderResult<Self> {
102        let inner = Self::build_inner(config).await?;
103        Ok(Self { inner })
104    }
105
106    async fn build_inner(
107        conf: gaxi::options::ClientConfig,
108    ) -> crate::ClientBuilderResult<std::sync::Arc<dyn super::stub::dynamic::ParameterManager>>
109    {
110        if gaxi::options::tracing_enabled(&conf) {
111            return Ok(std::sync::Arc::new(Self::build_with_tracing(conf).await?));
112        }
113        Ok(std::sync::Arc::new(Self::build_transport(conf).await?))
114    }
115
116    async fn build_transport(
117        conf: gaxi::options::ClientConfig,
118    ) -> crate::ClientBuilderResult<impl super::stub::ParameterManager> {
119        super::transport::ParameterManager::new(conf).await
120    }
121
122    async fn build_with_tracing(
123        conf: gaxi::options::ClientConfig,
124    ) -> crate::ClientBuilderResult<impl super::stub::ParameterManager> {
125        Self::build_transport(conf)
126            .await
127            .map(super::tracing::ParameterManager::new)
128    }
129
130    /// Lists Parameters in a given project and location.
131    ///
132    /// # Example
133    /// ```
134    /// # use google_cloud_parametermanager_v1::client::ParameterManager;
135    /// use google_cloud_gax::paginator::ItemPaginator as _;
136    /// use google_cloud_parametermanager_v1::Result;
137    /// async fn sample(
138    ///    client: &ParameterManager, project_id: &str, location_id: &str
139    /// ) -> Result<()> {
140    ///     let mut list = client.list_parameters()
141    ///         .set_parent(format!("projects/{project_id}/locations/{location_id}"))
142    ///         .by_item();
143    ///     while let Some(item) = list.next().await.transpose()? {
144    ///         println!("{:?}", item);
145    ///     }
146    ///     Ok(())
147    /// }
148    /// ```
149    pub fn list_parameters(&self) -> super::builder::parameter_manager::ListParameters {
150        super::builder::parameter_manager::ListParameters::new(self.inner.clone())
151    }
152
153    /// Gets details of a single Parameter.
154    ///
155    /// # Example
156    /// ```
157    /// # use google_cloud_parametermanager_v1::client::ParameterManager;
158    /// use google_cloud_parametermanager_v1::Result;
159    /// async fn sample(
160    ///    client: &ParameterManager, project_id: &str, location_id: &str, parameter_id: &str
161    /// ) -> Result<()> {
162    ///     let response = client.get_parameter()
163    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/parameters/{parameter_id}"))
164    ///         .send().await?;
165    ///     println!("response {:?}", response);
166    ///     Ok(())
167    /// }
168    /// ```
169    pub fn get_parameter(&self) -> super::builder::parameter_manager::GetParameter {
170        super::builder::parameter_manager::GetParameter::new(self.inner.clone())
171    }
172
173    /// Creates a new Parameter in a given project and location.
174    ///
175    /// # Example
176    /// ```
177    /// # use google_cloud_parametermanager_v1::client::ParameterManager;
178    /// use google_cloud_parametermanager_v1::model::Parameter;
179    /// use google_cloud_parametermanager_v1::Result;
180    /// async fn sample(
181    ///    client: &ParameterManager, project_id: &str, location_id: &str
182    /// ) -> Result<()> {
183    ///     let response = client.create_parameter()
184    ///         .set_parent(format!("projects/{project_id}/locations/{location_id}"))
185    ///         .set_parameter_id("parameter_id_value")
186    ///         .set_parameter(
187    ///             Parameter::new()/* set fields */
188    ///         )
189    ///         .send().await?;
190    ///     println!("response {:?}", response);
191    ///     Ok(())
192    /// }
193    /// ```
194    pub fn create_parameter(&self) -> super::builder::parameter_manager::CreateParameter {
195        super::builder::parameter_manager::CreateParameter::new(self.inner.clone())
196    }
197
198    /// Updates a single Parameter.
199    ///
200    /// # Example
201    /// ```
202    /// # use google_cloud_parametermanager_v1::client::ParameterManager;
203    /// # extern crate wkt as google_cloud_wkt;
204    /// use google_cloud_wkt::FieldMask;
205    /// use google_cloud_parametermanager_v1::model::Parameter;
206    /// use google_cloud_parametermanager_v1::Result;
207    /// async fn sample(
208    ///    client: &ParameterManager, project_id: &str, location_id: &str, parameter_id: &str
209    /// ) -> Result<()> {
210    ///     let response = client.update_parameter()
211    ///         .set_parameter(
212    ///             Parameter::new().set_name(format!("projects/{project_id}/locations/{location_id}/parameters/{parameter_id}"))/* set fields */
213    ///         )
214    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
215    ///         .send().await?;
216    ///     println!("response {:?}", response);
217    ///     Ok(())
218    /// }
219    /// ```
220    pub fn update_parameter(&self) -> super::builder::parameter_manager::UpdateParameter {
221        super::builder::parameter_manager::UpdateParameter::new(self.inner.clone())
222    }
223
224    /// Deletes a single Parameter.
225    ///
226    /// # Example
227    /// ```
228    /// # use google_cloud_parametermanager_v1::client::ParameterManager;
229    /// use google_cloud_parametermanager_v1::Result;
230    /// async fn sample(
231    ///    client: &ParameterManager, project_id: &str, location_id: &str, parameter_id: &str
232    /// ) -> Result<()> {
233    ///     client.delete_parameter()
234    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/parameters/{parameter_id}"))
235    ///         .send().await?;
236    ///     Ok(())
237    /// }
238    /// ```
239    pub fn delete_parameter(&self) -> super::builder::parameter_manager::DeleteParameter {
240        super::builder::parameter_manager::DeleteParameter::new(self.inner.clone())
241    }
242
243    /// Lists ParameterVersions in a given project, location, and parameter.
244    ///
245    /// # Example
246    /// ```
247    /// # use google_cloud_parametermanager_v1::client::ParameterManager;
248    /// use google_cloud_gax::paginator::ItemPaginator as _;
249    /// use google_cloud_parametermanager_v1::Result;
250    /// async fn sample(
251    ///    client: &ParameterManager, project_id: &str, location_id: &str, parameter_id: &str
252    /// ) -> Result<()> {
253    ///     let mut list = client.list_parameter_versions()
254    ///         .set_parent(format!("projects/{project_id}/locations/{location_id}/parameters/{parameter_id}"))
255    ///         .by_item();
256    ///     while let Some(item) = list.next().await.transpose()? {
257    ///         println!("{:?}", item);
258    ///     }
259    ///     Ok(())
260    /// }
261    /// ```
262    pub fn list_parameter_versions(
263        &self,
264    ) -> super::builder::parameter_manager::ListParameterVersions {
265        super::builder::parameter_manager::ListParameterVersions::new(self.inner.clone())
266    }
267
268    /// Gets details of a single ParameterVersion.
269    ///
270    /// # Example
271    /// ```
272    /// # use google_cloud_parametermanager_v1::client::ParameterManager;
273    /// use google_cloud_parametermanager_v1::Result;
274    /// async fn sample(
275    ///    client: &ParameterManager, project_id: &str, location_id: &str, parameter_id: &str, parameter_version_id: &str
276    /// ) -> Result<()> {
277    ///     let response = client.get_parameter_version()
278    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/parameters/{parameter_id}/versions/{parameter_version_id}"))
279    ///         .send().await?;
280    ///     println!("response {:?}", response);
281    ///     Ok(())
282    /// }
283    /// ```
284    pub fn get_parameter_version(&self) -> super::builder::parameter_manager::GetParameterVersion {
285        super::builder::parameter_manager::GetParameterVersion::new(self.inner.clone())
286    }
287
288    /// Gets rendered version of a ParameterVersion.
289    ///
290    /// # Example
291    /// ```
292    /// # use google_cloud_parametermanager_v1::client::ParameterManager;
293    /// use google_cloud_parametermanager_v1::Result;
294    /// async fn sample(
295    ///    client: &ParameterManager
296    /// ) -> Result<()> {
297    ///     let response = client.render_parameter_version()
298    ///         /* set fields */
299    ///         .send().await?;
300    ///     println!("response {:?}", response);
301    ///     Ok(())
302    /// }
303    /// ```
304    pub fn render_parameter_version(
305        &self,
306    ) -> super::builder::parameter_manager::RenderParameterVersion {
307        super::builder::parameter_manager::RenderParameterVersion::new(self.inner.clone())
308    }
309
310    /// Creates a new ParameterVersion in a given project, location, and parameter.
311    ///
312    /// # Example
313    /// ```
314    /// # use google_cloud_parametermanager_v1::client::ParameterManager;
315    /// use google_cloud_parametermanager_v1::model::ParameterVersion;
316    /// use google_cloud_parametermanager_v1::Result;
317    /// async fn sample(
318    ///    client: &ParameterManager, project_id: &str, location_id: &str, parameter_id: &str
319    /// ) -> Result<()> {
320    ///     let response = client.create_parameter_version()
321    ///         .set_parent(format!("projects/{project_id}/locations/{location_id}/parameters/{parameter_id}"))
322    ///         .set_parameter_version(
323    ///             ParameterVersion::new()/* set fields */
324    ///         )
325    ///         .send().await?;
326    ///     println!("response {:?}", response);
327    ///     Ok(())
328    /// }
329    /// ```
330    pub fn create_parameter_version(
331        &self,
332    ) -> super::builder::parameter_manager::CreateParameterVersion {
333        super::builder::parameter_manager::CreateParameterVersion::new(self.inner.clone())
334    }
335
336    /// Updates a single ParameterVersion.
337    ///
338    /// # Example
339    /// ```
340    /// # use google_cloud_parametermanager_v1::client::ParameterManager;
341    /// # extern crate wkt as google_cloud_wkt;
342    /// use google_cloud_wkt::FieldMask;
343    /// use google_cloud_parametermanager_v1::model::ParameterVersion;
344    /// use google_cloud_parametermanager_v1::Result;
345    /// async fn sample(
346    ///    client: &ParameterManager, project_id: &str, location_id: &str, parameter_id: &str, parameter_version_id: &str
347    /// ) -> Result<()> {
348    ///     let response = client.update_parameter_version()
349    ///         .set_parameter_version(
350    ///             ParameterVersion::new().set_name(format!("projects/{project_id}/locations/{location_id}/parameters/{parameter_id}/versions/{parameter_version_id}"))/* set fields */
351    ///         )
352    ///         .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
353    ///         .send().await?;
354    ///     println!("response {:?}", response);
355    ///     Ok(())
356    /// }
357    /// ```
358    pub fn update_parameter_version(
359        &self,
360    ) -> super::builder::parameter_manager::UpdateParameterVersion {
361        super::builder::parameter_manager::UpdateParameterVersion::new(self.inner.clone())
362    }
363
364    /// Deletes a single ParameterVersion.
365    ///
366    /// # Example
367    /// ```
368    /// # use google_cloud_parametermanager_v1::client::ParameterManager;
369    /// use google_cloud_parametermanager_v1::Result;
370    /// async fn sample(
371    ///    client: &ParameterManager, project_id: &str, location_id: &str, parameter_id: &str, parameter_version_id: &str
372    /// ) -> Result<()> {
373    ///     client.delete_parameter_version()
374    ///         .set_name(format!("projects/{project_id}/locations/{location_id}/parameters/{parameter_id}/versions/{parameter_version_id}"))
375    ///         .send().await?;
376    ///     Ok(())
377    /// }
378    /// ```
379    pub fn delete_parameter_version(
380        &self,
381    ) -> super::builder::parameter_manager::DeleteParameterVersion {
382        super::builder::parameter_manager::DeleteParameterVersion::new(self.inner.clone())
383    }
384
385    /// Lists information about the supported locations for this service.
386    ///
387    /// # Example
388    /// ```
389    /// # use google_cloud_parametermanager_v1::client::ParameterManager;
390    /// use google_cloud_gax::paginator::ItemPaginator as _;
391    /// use google_cloud_parametermanager_v1::Result;
392    /// async fn sample(
393    ///    client: &ParameterManager
394    /// ) -> Result<()> {
395    ///     let mut list = client.list_locations()
396    ///         /* set fields */
397    ///         .by_item();
398    ///     while let Some(item) = list.next().await.transpose()? {
399    ///         println!("{:?}", item);
400    ///     }
401    ///     Ok(())
402    /// }
403    /// ```
404    pub fn list_locations(&self) -> super::builder::parameter_manager::ListLocations {
405        super::builder::parameter_manager::ListLocations::new(self.inner.clone())
406    }
407
408    /// Gets information about a location.
409    ///
410    /// # Example
411    /// ```
412    /// # use google_cloud_parametermanager_v1::client::ParameterManager;
413    /// use google_cloud_parametermanager_v1::Result;
414    /// async fn sample(
415    ///    client: &ParameterManager
416    /// ) -> Result<()> {
417    ///     let response = client.get_location()
418    ///         /* set fields */
419    ///         .send().await?;
420    ///     println!("response {:?}", response);
421    ///     Ok(())
422    /// }
423    /// ```
424    pub fn get_location(&self) -> super::builder::parameter_manager::GetLocation {
425        super::builder::parameter_manager::GetLocation::new(self.inner.clone())
426    }
427}