redis_cloud/connectivity/
vpc_peering.rs1use crate::{CloudClient, Result};
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11#[serde(rename_all = "camelCase")]
12pub struct VpcPeeringCreateRequest {
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub provider: Option<String>,
15
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub command_type: Option<String>,
18
19 #[serde(skip_serializing_if = "Option::is_none")]
21 pub vpc_id: Option<String>,
22
23 #[serde(skip_serializing_if = "Option::is_none")]
25 pub aws_region: Option<String>,
26
27 #[serde(skip_serializing_if = "Option::is_none")]
29 pub aws_account_id: Option<String>,
30
31 #[serde(skip_serializing_if = "Option::is_none")]
33 pub vpc_cidr: Option<String>,
34
35 #[serde(skip_serializing_if = "Option::is_none")]
37 pub vpc_cidrs: Option<Vec<String>>,
38
39 #[serde(skip_serializing_if = "Option::is_none")]
41 pub gcp_project_id: Option<String>,
42
43 #[serde(skip_serializing_if = "Option::is_none")]
45 pub network_name: Option<String>,
46}
47
48pub type VpcPeeringCreateBaseRequest = VpcPeeringCreateRequest;
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
53#[serde(rename_all = "camelCase")]
54pub struct VpcPeeringUpdateAwsRequest {
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub subscription_id: Option<i32>,
57
58 #[serde(skip_serializing_if = "Option::is_none")]
60 pub vpc_peering_id: Option<i32>,
61
62 #[serde(skip_serializing_if = "Option::is_none")]
64 pub vpc_cidr: Option<String>,
65
66 #[serde(skip_serializing_if = "Option::is_none")]
68 pub vpc_cidrs: Option<Vec<String>>,
69
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub command_type: Option<String>,
72}
73
74pub type VpcPeeringUpdateRequest = VpcPeeringUpdateAwsRequest;
76
77pub use crate::types::TaskStateUpdate;
79
80#[derive(Debug, Clone, Serialize, Deserialize)]
82#[serde(rename_all = "camelCase")]
83pub struct VpcCidr {
84 #[serde(skip_serializing_if = "Option::is_none")]
86 pub vpc_cidr: Option<String>,
87
88 #[serde(rename = "active", skip_serializing_if = "Option::is_none")]
90 pub status: Option<String>,
91}
92
93#[derive(Debug, Clone, Serialize, Deserialize)]
95#[serde(rename_all = "camelCase")]
96pub struct VpcPeering {
97 #[serde(rename = "vpcPeeringId", skip_serializing_if = "Option::is_none")]
99 pub id: Option<i32>,
100
101 #[serde(skip_serializing_if = "Option::is_none")]
103 pub status: Option<String>,
104
105 #[serde(skip_serializing_if = "Option::is_none")]
107 pub aws_account_id: Option<String>,
108
109 #[serde(rename = "awsPeeringUid", skip_serializing_if = "Option::is_none")]
111 pub aws_peering_id: Option<String>,
112
113 #[serde(rename = "vpcUid", skip_serializing_if = "Option::is_none")]
115 pub vpc_id: Option<String>,
116
117 #[serde(skip_serializing_if = "Option::is_none")]
119 pub vpc_cidr: Option<String>,
120
121 #[serde(skip_serializing_if = "Option::is_none")]
123 pub vpc_cidrs: Option<Vec<VpcCidr>>,
124
125 #[serde(rename = "projectUid", skip_serializing_if = "Option::is_none")]
127 pub gcp_project_uid: Option<String>,
128
129 #[serde(skip_serializing_if = "Option::is_none")]
131 pub network_name: Option<String>,
132
133 #[serde(skip_serializing_if = "Option::is_none")]
135 pub redis_project_uid: Option<String>,
136
137 #[serde(skip_serializing_if = "Option::is_none")]
139 pub redis_network_name: Option<String>,
140
141 #[serde(skip_serializing_if = "Option::is_none")]
143 pub cloud_peering_id: Option<String>,
144
145 #[serde(rename = "regionName", skip_serializing_if = "Option::is_none")]
147 pub region: Option<String>,
148
149 #[serde(skip_serializing_if = "Option::is_none")]
151 pub provider: Option<String>,
152}
153
154#[derive(Debug, Clone, Serialize, Deserialize)]
156#[serde(rename_all = "camelCase")]
157pub struct ActiveActiveVpcPeering {
158 #[serde(skip_serializing_if = "Option::is_none")]
160 pub id: Option<i32>,
161
162 #[serde(skip_serializing_if = "Option::is_none")]
164 pub status: Option<String>,
165
166 #[serde(skip_serializing_if = "Option::is_none")]
168 pub region_id: Option<i32>,
169
170 #[serde(skip_serializing_if = "Option::is_none")]
172 pub region_name: Option<String>,
173
174 #[serde(skip_serializing_if = "Option::is_none")]
176 pub aws_account_id: Option<String>,
177
178 #[serde(rename = "awsPeeringUid", skip_serializing_if = "Option::is_none")]
180 pub aws_peering_id: Option<String>,
181
182 #[serde(rename = "vpcUid", skip_serializing_if = "Option::is_none")]
184 pub vpc_id: Option<String>,
185
186 #[serde(skip_serializing_if = "Option::is_none")]
188 pub vpc_cidr: Option<String>,
189
190 #[serde(skip_serializing_if = "Option::is_none")]
192 pub vpc_cidrs: Option<Vec<VpcCidr>>,
193
194 #[serde(rename = "vpcProjectUid", skip_serializing_if = "Option::is_none")]
196 pub gcp_project_uid: Option<String>,
197
198 #[serde(rename = "vpcNetworkName", skip_serializing_if = "Option::is_none")]
200 pub network_name: Option<String>,
201
202 #[serde(skip_serializing_if = "Option::is_none")]
204 pub redis_project_uid: Option<String>,
205
206 #[serde(skip_serializing_if = "Option::is_none")]
208 pub redis_network_name: Option<String>,
209
210 #[serde(skip_serializing_if = "Option::is_none")]
212 pub cloud_peering_id: Option<String>,
213
214 #[serde(skip_serializing_if = "Option::is_none")]
216 pub source_region: Option<String>,
217
218 #[serde(skip_serializing_if = "Option::is_none")]
220 pub destination_region: Option<String>,
221}
222
223#[derive(Debug, Clone, Serialize, Deserialize)]
225#[serde(rename_all = "camelCase")]
226pub struct ActiveActiveVpcRegion {
227 #[serde(skip_serializing_if = "Option::is_none")]
229 pub id: Option<i32>,
230
231 #[serde(rename = "region", skip_serializing_if = "Option::is_none")]
233 pub source_region: Option<String>,
234
235 #[serde(skip_serializing_if = "Option::is_none")]
237 pub vpc_peerings: Option<Vec<ActiveActiveVpcPeering>>,
238}
239
240#[derive(Debug, Clone, Serialize, Deserialize)]
242#[serde(rename_all = "camelCase")]
243pub struct ActiveActiveVpcPeeringList {
244 #[serde(skip_serializing_if = "Option::is_none")]
246 pub subscription_id: Option<i32>,
247
248 #[serde(skip_serializing_if = "Option::is_none")]
250 pub regions: Option<Vec<ActiveActiveVpcRegion>>,
251}
252
253pub struct VpcPeeringHandler {
255 client: CloudClient,
256}
257
258impl VpcPeeringHandler {
259 #[must_use]
261 pub fn new(client: CloudClient) -> Self {
262 Self { client }
263 }
264
265 pub async fn get(&self, subscription_id: i32) -> Result<TaskStateUpdate> {
271 self.client
272 .get(&format!("/subscriptions/{subscription_id}/peerings"))
273 .await
274 }
275
276 pub async fn create(
278 &self,
279 subscription_id: i32,
280 request: &VpcPeeringCreateRequest,
281 ) -> Result<TaskStateUpdate> {
282 self.client
283 .post(
284 &format!("/subscriptions/{subscription_id}/peerings"),
285 request,
286 )
287 .await
288 }
289
290 pub async fn delete(&self, subscription_id: i32, peering_id: i32) -> Result<serde_json::Value> {
292 self.client
293 .delete(&format!(
294 "/subscriptions/{subscription_id}/peerings/{peering_id}"
295 ))
296 .await?;
297 Ok(serde_json::Value::Null)
298 }
299
300 pub async fn update(
302 &self,
303 subscription_id: i32,
304 peering_id: i32,
305 request: &VpcPeeringCreateRequest,
306 ) -> Result<TaskStateUpdate> {
307 self.client
308 .put(
309 &format!("/subscriptions/{subscription_id}/peerings/{peering_id}"),
310 request,
311 )
312 .await
313 }
314
315 pub async fn get_active_active(&self, subscription_id: i32) -> Result<TaskStateUpdate> {
327 self.get(subscription_id).await
328 }
329
330 pub async fn create_active_active(
334 &self,
335 subscription_id: i32,
336 request: &VpcPeeringCreateRequest,
337 ) -> Result<TaskStateUpdate> {
338 self.create(subscription_id, request).await
339 }
340
341 pub async fn delete_active_active(
345 &self,
346 subscription_id: i32,
347 peering_id: i32,
348 ) -> Result<serde_json::Value> {
349 self.delete(subscription_id, peering_id).await
350 }
351
352 pub async fn update_active_active(
356 &self,
357 subscription_id: i32,
358 peering_id: i32,
359 request: &VpcPeeringCreateRequest,
360 ) -> Result<TaskStateUpdate> {
361 self.update(subscription_id, peering_id, request).await
362 }
363}