google_cloud_memcache_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 Cloud Memorystore for Memcached API.
20///
21/// # Example
22/// ```
23/// # use google_cloud_memcache_v1::client::CloudMemcache;
24/// use google_cloud_gax::paginator::ItemPaginator as _;
25/// async fn sample(
26/// parent: &str,
27/// ) -> anyhow::Result<()> {
28/// let client = CloudMemcache::builder().build().await?;
29/// let mut list = client.list_instances()
30/// .set_parent(parent)
31/// .by_item();
32/// while let Some(item) = list.next().await.transpose()? {
33/// println!("{:?}", item);
34/// }
35/// Ok(())
36/// }
37/// ```
38///
39/// # Service Description
40///
41/// Configures and manages Cloud Memorystore for Memcached instances.
42///
43/// The `memcache.googleapis.com` service implements the Google Cloud Memorystore
44/// for Memcached API and defines the following resource model for managing
45/// Memorystore Memcached (also called Memcached below) instances:
46///
47/// * The service works with a collection of cloud projects, named: `/projects/*`
48/// * Each project has a collection of available locations, named: `/locations/*`
49/// * Each location has a collection of Memcached instances, named:
50/// `/instances/*`
51/// * As such, Memcached instances are resources of the form:
52/// `/projects/{project_id}/locations/{location_id}/instances/{instance_id}`
53///
54/// Note that location_id must be a GCP `region`; for example:
55///
56/// * `projects/my-memcached-project/locations/us-central1/instances/my-memcached`
57///
58/// # Configuration
59///
60/// To configure `CloudMemcache` use the `with_*` methods in the type returned
61/// by [builder()][CloudMemcache::builder]. The default configuration should
62/// work for most applications. Common configuration changes include
63///
64/// * [with_endpoint()]: by default this client uses the global default endpoint
65/// (`https://memcache.googleapis.com`). Applications using regional
66/// endpoints or running in restricted networks (e.g. a network configured
67// with [Private Google Access with VPC Service Controls]) may want to
68/// override this default.
69/// * [with_credentials()]: by default this client uses
70/// [Application Default Credentials]. Applications using custom
71/// authentication may need to override this default.
72///
73/// [with_endpoint()]: super::builder::cloud_memcache::ClientBuilder::with_endpoint
74/// [with_credentials()]: super::builder::cloud_memcache::ClientBuilder::with_credentials
75/// [Private Google Access with VPC Service Controls]: https://cloud.google.com/vpc-service-controls/docs/private-connectivity
76/// [Application Default Credentials]: https://cloud.google.com/docs/authentication#adc
77///
78/// # Pooling and Cloning
79///
80/// `CloudMemcache` holds a connection pool internally, it is advised to
81/// create one and reuse it. You do not need to wrap `CloudMemcache` in
82/// an [Rc](std::rc::Rc) or [Arc](std::sync::Arc) to reuse it, because it
83/// already uses an `Arc` internally.
84#[derive(Clone, Debug)]
85pub struct CloudMemcache {
86 inner: std::sync::Arc<dyn super::stub::dynamic::CloudMemcache>,
87}
88
89impl CloudMemcache {
90 /// Returns a builder for [CloudMemcache].
91 ///
92 /// ```
93 /// # async fn sample() -> google_cloud_gax::client_builder::Result<()> {
94 /// # use google_cloud_memcache_v1::client::CloudMemcache;
95 /// let client = CloudMemcache::builder().build().await?;
96 /// # Ok(()) }
97 /// ```
98 pub fn builder() -> super::builder::cloud_memcache::ClientBuilder {
99 crate::new_client_builder(super::builder::cloud_memcache::client::Factory)
100 }
101
102 /// Creates a new client from the provided stub.
103 ///
104 /// The most common case for calling this function is in tests mocking the
105 /// client's behavior.
106 pub fn from_stub<T>(stub: impl Into<std::sync::Arc<T>>) -> Self
107 where
108 T: super::stub::CloudMemcache + 'static,
109 {
110 Self { inner: stub.into() }
111 }
112
113 pub(crate) async fn new(
114 config: gaxi::options::ClientConfig,
115 ) -> crate::ClientBuilderResult<Self> {
116 let inner = Self::build_inner(config).await?;
117 Ok(Self { inner })
118 }
119
120 async fn build_inner(
121 conf: gaxi::options::ClientConfig,
122 ) -> crate::ClientBuilderResult<std::sync::Arc<dyn super::stub::dynamic::CloudMemcache>> {
123 if gaxi::options::tracing_enabled(&conf) {
124 return Ok(std::sync::Arc::new(Self::build_with_tracing(conf).await?));
125 }
126 Ok(std::sync::Arc::new(Self::build_transport(conf).await?))
127 }
128
129 async fn build_transport(
130 conf: gaxi::options::ClientConfig,
131 ) -> crate::ClientBuilderResult<impl super::stub::CloudMemcache> {
132 super::transport::CloudMemcache::new(conf).await
133 }
134
135 async fn build_with_tracing(
136 conf: gaxi::options::ClientConfig,
137 ) -> crate::ClientBuilderResult<impl super::stub::CloudMemcache> {
138 Self::build_transport(conf)
139 .await
140 .map(super::tracing::CloudMemcache::new)
141 }
142
143 /// Lists Instances in a given location.
144 ///
145 /// # Example
146 /// ```
147 /// # use google_cloud_memcache_v1::client::CloudMemcache;
148 /// use google_cloud_gax::paginator::ItemPaginator as _;
149 /// use google_cloud_memcache_v1::Result;
150 /// async fn sample(
151 /// client: &CloudMemcache, parent: &str
152 /// ) -> Result<()> {
153 /// let mut list = client.list_instances()
154 /// .set_parent(parent)
155 /// .by_item();
156 /// while let Some(item) = list.next().await.transpose()? {
157 /// println!("{:?}", item);
158 /// }
159 /// Ok(())
160 /// }
161 /// ```
162 pub fn list_instances(&self) -> super::builder::cloud_memcache::ListInstances {
163 super::builder::cloud_memcache::ListInstances::new(self.inner.clone())
164 }
165
166 /// Gets details of a single Instance.
167 ///
168 /// # Example
169 /// ```
170 /// # use google_cloud_memcache_v1::client::CloudMemcache;
171 /// use google_cloud_memcache_v1::Result;
172 /// async fn sample(
173 /// client: &CloudMemcache, project_id: &str, location_id: &str, instance_id: &str
174 /// ) -> Result<()> {
175 /// let response = client.get_instance()
176 /// .set_name(format!("projects/{project_id}/locations/{location_id}/instances/{instance_id}"))
177 /// .send().await?;
178 /// println!("response {:?}", response);
179 /// Ok(())
180 /// }
181 /// ```
182 pub fn get_instance(&self) -> super::builder::cloud_memcache::GetInstance {
183 super::builder::cloud_memcache::GetInstance::new(self.inner.clone())
184 }
185
186 /// Creates a new Instance in a given location.
187 ///
188 /// # Long running operations
189 ///
190 /// This method is used to start, and/or poll a [long-running Operation].
191 /// The [Working with long-running operations] chapter in the [user guide]
192 /// covers these operations in detail.
193 ///
194 /// [long-running operation]: https://google.aip.dev/151
195 /// [user guide]: https://googleapis.github.io/google-cloud-rust/
196 /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
197 ///
198 /// # Example
199 /// ```
200 /// # use google_cloud_memcache_v1::client::CloudMemcache;
201 /// use google_cloud_lro::Poller;
202 /// use google_cloud_memcache_v1::model::Instance;
203 /// use google_cloud_memcache_v1::Result;
204 /// async fn sample(
205 /// client: &CloudMemcache, parent: &str
206 /// ) -> Result<()> {
207 /// let response = client.create_instance()
208 /// .set_parent(parent)
209 /// .set_instance_id("instance_id_value")
210 /// .set_instance(
211 /// Instance::new()/* set fields */
212 /// )
213 /// .poller().until_done().await?;
214 /// println!("response {:?}", response);
215 /// Ok(())
216 /// }
217 /// ```
218 pub fn create_instance(&self) -> super::builder::cloud_memcache::CreateInstance {
219 super::builder::cloud_memcache::CreateInstance::new(self.inner.clone())
220 }
221
222 /// Updates an existing Instance in a given project and location.
223 ///
224 /// # Long running operations
225 ///
226 /// This method is used to start, and/or poll a [long-running Operation].
227 /// The [Working with long-running operations] chapter in the [user guide]
228 /// covers these operations in detail.
229 ///
230 /// [long-running operation]: https://google.aip.dev/151
231 /// [user guide]: https://googleapis.github.io/google-cloud-rust/
232 /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
233 ///
234 /// # Example
235 /// ```
236 /// # use google_cloud_memcache_v1::client::CloudMemcache;
237 /// use google_cloud_lro::Poller;
238 /// # extern crate wkt as google_cloud_wkt;
239 /// use google_cloud_wkt::FieldMask;
240 /// use google_cloud_memcache_v1::model::Instance;
241 /// use google_cloud_memcache_v1::Result;
242 /// async fn sample(
243 /// client: &CloudMemcache, project_id: &str, location_id: &str, instance_id: &str
244 /// ) -> Result<()> {
245 /// let response = client.update_instance()
246 /// .set_instance(
247 /// Instance::new().set_name(format!("projects/{project_id}/locations/{location_id}/instances/{instance_id}"))/* set fields */
248 /// )
249 /// .set_update_mask(FieldMask::default().set_paths(["updated.field.path1", "updated.field.path2"]))
250 /// .poller().until_done().await?;
251 /// println!("response {:?}", response);
252 /// Ok(())
253 /// }
254 /// ```
255 pub fn update_instance(&self) -> super::builder::cloud_memcache::UpdateInstance {
256 super::builder::cloud_memcache::UpdateInstance::new(self.inner.clone())
257 }
258
259 /// Updates the defined Memcached parameters for an existing instance.
260 /// This method only stages the parameters, it must be followed by
261 /// `ApplyParameters` to apply the parameters to nodes of the Memcached
262 /// instance.
263 ///
264 /// # Long running operations
265 ///
266 /// This method is used to start, and/or poll a [long-running Operation].
267 /// The [Working with long-running operations] chapter in the [user guide]
268 /// covers these operations in detail.
269 ///
270 /// [long-running operation]: https://google.aip.dev/151
271 /// [user guide]: https://googleapis.github.io/google-cloud-rust/
272 /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
273 ///
274 /// # Example
275 /// ```
276 /// # use google_cloud_memcache_v1::client::CloudMemcache;
277 /// use google_cloud_lro::Poller;
278 /// use google_cloud_memcache_v1::Result;
279 /// async fn sample(
280 /// client: &CloudMemcache
281 /// ) -> Result<()> {
282 /// let response = client.update_parameters()
283 /// /* set fields */
284 /// .poller().until_done().await?;
285 /// println!("response {:?}", response);
286 /// Ok(())
287 /// }
288 /// ```
289 pub fn update_parameters(&self) -> super::builder::cloud_memcache::UpdateParameters {
290 super::builder::cloud_memcache::UpdateParameters::new(self.inner.clone())
291 }
292
293 /// Deletes a single Instance.
294 ///
295 /// # Long running operations
296 ///
297 /// This method is used to start, and/or poll a [long-running Operation].
298 /// The [Working with long-running operations] chapter in the [user guide]
299 /// covers these operations in detail.
300 ///
301 /// [long-running operation]: https://google.aip.dev/151
302 /// [user guide]: https://googleapis.github.io/google-cloud-rust/
303 /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
304 ///
305 /// # Example
306 /// ```
307 /// # use google_cloud_memcache_v1::client::CloudMemcache;
308 /// use google_cloud_lro::Poller;
309 /// use google_cloud_memcache_v1::Result;
310 /// async fn sample(
311 /// client: &CloudMemcache, project_id: &str, location_id: &str, instance_id: &str
312 /// ) -> Result<()> {
313 /// client.delete_instance()
314 /// .set_name(format!("projects/{project_id}/locations/{location_id}/instances/{instance_id}"))
315 /// .poller().until_done().await?;
316 /// Ok(())
317 /// }
318 /// ```
319 pub fn delete_instance(&self) -> super::builder::cloud_memcache::DeleteInstance {
320 super::builder::cloud_memcache::DeleteInstance::new(self.inner.clone())
321 }
322
323 /// `ApplyParameters` restarts the set of specified nodes in order to update
324 /// them to the current set of parameters for the Memcached Instance.
325 ///
326 /// # Long running operations
327 ///
328 /// This method is used to start, and/or poll a [long-running Operation].
329 /// The [Working with long-running operations] chapter in the [user guide]
330 /// covers these operations in detail.
331 ///
332 /// [long-running operation]: https://google.aip.dev/151
333 /// [user guide]: https://googleapis.github.io/google-cloud-rust/
334 /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
335 ///
336 /// # Example
337 /// ```
338 /// # use google_cloud_memcache_v1::client::CloudMemcache;
339 /// use google_cloud_lro::Poller;
340 /// use google_cloud_memcache_v1::Result;
341 /// async fn sample(
342 /// client: &CloudMemcache
343 /// ) -> Result<()> {
344 /// let response = client.apply_parameters()
345 /// /* set fields */
346 /// .poller().until_done().await?;
347 /// println!("response {:?}", response);
348 /// Ok(())
349 /// }
350 /// ```
351 pub fn apply_parameters(&self) -> super::builder::cloud_memcache::ApplyParameters {
352 super::builder::cloud_memcache::ApplyParameters::new(self.inner.clone())
353 }
354
355 /// Reschedules upcoming maintenance event.
356 ///
357 /// # Long running operations
358 ///
359 /// This method is used to start, and/or poll a [long-running Operation].
360 /// The [Working with long-running operations] chapter in the [user guide]
361 /// covers these operations in detail.
362 ///
363 /// [long-running operation]: https://google.aip.dev/151
364 /// [user guide]: https://googleapis.github.io/google-cloud-rust/
365 /// [working with long-running operations]: https://googleapis.github.io/google-cloud-rust/working_with_long_running_operations.html
366 ///
367 /// # Example
368 /// ```
369 /// # use google_cloud_memcache_v1::client::CloudMemcache;
370 /// use google_cloud_lro::Poller;
371 /// use google_cloud_memcache_v1::Result;
372 /// async fn sample(
373 /// client: &CloudMemcache
374 /// ) -> Result<()> {
375 /// let response = client.reschedule_maintenance()
376 /// /* set fields */
377 /// .poller().until_done().await?;
378 /// println!("response {:?}", response);
379 /// Ok(())
380 /// }
381 /// ```
382 pub fn reschedule_maintenance(&self) -> super::builder::cloud_memcache::RescheduleMaintenance {
383 super::builder::cloud_memcache::RescheduleMaintenance::new(self.inner.clone())
384 }
385
386 /// Lists information about the supported locations for this service.
387 ///
388 /// # Example
389 /// ```
390 /// # use google_cloud_memcache_v1::client::CloudMemcache;
391 /// use google_cloud_gax::paginator::ItemPaginator as _;
392 /// use google_cloud_memcache_v1::Result;
393 /// async fn sample(
394 /// client: &CloudMemcache
395 /// ) -> Result<()> {
396 /// let mut list = client.list_locations()
397 /// /* set fields */
398 /// .by_item();
399 /// while let Some(item) = list.next().await.transpose()? {
400 /// println!("{:?}", item);
401 /// }
402 /// Ok(())
403 /// }
404 /// ```
405 pub fn list_locations(&self) -> super::builder::cloud_memcache::ListLocations {
406 super::builder::cloud_memcache::ListLocations::new(self.inner.clone())
407 }
408
409 /// Gets information about a location.
410 ///
411 /// # Example
412 /// ```
413 /// # use google_cloud_memcache_v1::client::CloudMemcache;
414 /// use google_cloud_memcache_v1::Result;
415 /// async fn sample(
416 /// client: &CloudMemcache
417 /// ) -> Result<()> {
418 /// let response = client.get_location()
419 /// /* set fields */
420 /// .send().await?;
421 /// println!("response {:?}", response);
422 /// Ok(())
423 /// }
424 /// ```
425 pub fn get_location(&self) -> super::builder::cloud_memcache::GetLocation {
426 super::builder::cloud_memcache::GetLocation::new(self.inner.clone())
427 }
428
429 /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
430 ///
431 /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
432 ///
433 /// # Example
434 /// ```
435 /// # use google_cloud_memcache_v1::client::CloudMemcache;
436 /// use google_cloud_gax::paginator::ItemPaginator as _;
437 /// use google_cloud_memcache_v1::Result;
438 /// async fn sample(
439 /// client: &CloudMemcache
440 /// ) -> Result<()> {
441 /// let mut list = client.list_operations()
442 /// /* set fields */
443 /// .by_item();
444 /// while let Some(item) = list.next().await.transpose()? {
445 /// println!("{:?}", item);
446 /// }
447 /// Ok(())
448 /// }
449 /// ```
450 pub fn list_operations(&self) -> super::builder::cloud_memcache::ListOperations {
451 super::builder::cloud_memcache::ListOperations::new(self.inner.clone())
452 }
453
454 /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
455 ///
456 /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
457 ///
458 /// # Example
459 /// ```
460 /// # use google_cloud_memcache_v1::client::CloudMemcache;
461 /// use google_cloud_memcache_v1::Result;
462 /// async fn sample(
463 /// client: &CloudMemcache
464 /// ) -> Result<()> {
465 /// let response = client.get_operation()
466 /// /* set fields */
467 /// .send().await?;
468 /// println!("response {:?}", response);
469 /// Ok(())
470 /// }
471 /// ```
472 pub fn get_operation(&self) -> super::builder::cloud_memcache::GetOperation {
473 super::builder::cloud_memcache::GetOperation::new(self.inner.clone())
474 }
475
476 /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
477 ///
478 /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
479 ///
480 /// # Example
481 /// ```
482 /// # use google_cloud_memcache_v1::client::CloudMemcache;
483 /// use google_cloud_memcache_v1::Result;
484 /// async fn sample(
485 /// client: &CloudMemcache
486 /// ) -> Result<()> {
487 /// client.delete_operation()
488 /// /* set fields */
489 /// .send().await?;
490 /// Ok(())
491 /// }
492 /// ```
493 pub fn delete_operation(&self) -> super::builder::cloud_memcache::DeleteOperation {
494 super::builder::cloud_memcache::DeleteOperation::new(self.inner.clone())
495 }
496
497 /// Provides the [Operations][google.longrunning.Operations] service functionality in this service.
498 ///
499 /// [google.longrunning.Operations]: google-cloud-longrunning::client::Operations
500 ///
501 /// # Example
502 /// ```
503 /// # use google_cloud_memcache_v1::client::CloudMemcache;
504 /// use google_cloud_memcache_v1::Result;
505 /// async fn sample(
506 /// client: &CloudMemcache
507 /// ) -> Result<()> {
508 /// client.cancel_operation()
509 /// /* set fields */
510 /// .send().await?;
511 /// Ok(())
512 /// }
513 /// ```
514 pub fn cancel_operation(&self) -> super::builder::cloud_memcache::CancelOperation {
515 super::builder::cloud_memcache::CancelOperation::new(self.inner.clone())
516 }
517}