outscale_api/apis/
subnet_api.rs

1/*
2 * 3DS OUTSCALE API
3 *
4 * Welcome to the OUTSCALE API documentation.<br /> The OUTSCALE API enables you to manage your resources in the OUTSCALE Cloud. This documentation describes the different actions available along with code examples.<br /><br /> Throttling: To protect against overloads, the number of identical requests allowed in a given time period is limited.<br /> Brute force: To protect against brute force attacks, the number of failed authentication attempts in a given time period is limited.<br /><br /> Note that the OUTSCALE Cloud is compatible with Amazon Web Services (AWS) APIs, but there are [differences in resource names](https://docs.outscale.com/en/userguide/About-the-APIs.html) between AWS and the OUTSCALE API.<br /> You can also manage your resources using the [Cockpit](https://docs.outscale.com/en/userguide/About-Cockpit.html) web interface.<br /><br /> An OpenAPI description of the OUTSCALE API is also available in this [GitHub repository](https://github.com/outscale/osc-api).<br /> # Authentication Schemes ### Access Key/Secret Key The main way to authenticate your requests to the OUTSCALE API is to use an access key and a secret key.<br /> The mechanism behind this is based on AWS Signature Version 4, whose technical implementation details are described in [Signature of API Requests](https://docs.outscale.com/en/userguide/Signature-of-API-Requests.html).<br /><br /> In practice, the way to specify your access key and secret key depends on the tool or SDK you want to use to interact with the API.<br />  > For example, if you use OSC CLI: > 1. You need to create an **~/.osc/config.json** file to specify your access key, secret key, and the Region of your account. > 2. You then specify the `--profile` option when executing OSC CLI commands. > > For more information, see [Installing and Configuring OSC CLI](https://docs.outscale.com/en/userguide/Installing-and-Configuring-OSC-CLI.html).  See the code samples in each section of this documentation for specific examples in different programming languages.<br /> For more information about access keys, see [About Access Keys](https://docs.outscale.com/en/userguide/About-Access-Keys.html).  > If you try to sign requests with an invalid access key four times in a row, further authentication attempts will be prevented for 1 minute. This lockout time increases 1 minute every four failed attempts, for up to 10 minutes.  ### Login/Password For certain API actions, you can also use basic authentication with the login (email address) and password of your TINA account.<br /> This is useful only in special circumstances, for example if you do not know your access key/secret key and want to retrieve them programmatically.<br /> In most cases, however, you can use the Cockpit web interface to retrieve them.<br />  > For example, if you use OSC CLI: > 1. You need to create an **~/.osc/config.json** file to specify the Region of your account, but you leave the access key value and secret key value empty (`&quot;&quot;`). > 2. You then specify the `--profile`, `--authentication-method`, `--login`, and `--password` options when executing OSC CLI commands.  See the code samples in each section of this documentation for specific examples in different programming languages.  > If you try to sign requests with an invalid password four times in a row, further authentication attempts will be prevented for 1 minute. This lockout time increases 1 minute every four failed attempts, for up to 10 minutes.  ### No Authentication A few API actions do not require any authentication. They are indicated as such in this documentation.<br /> ### Other Security Mechanisms In parallel with the authentication schemes, you can add other security mechanisms to your OUTSCALE account, for example to restrict API requests by IP or other criteria.<br /> For more information, see [Managing Your API Accesses](https://docs.outscale.com/en/userguide/Managing-Your-API-Accesses.html). # Pagination Tutorial You can learn more about the pagination methods for read calls in the dedicated [pagination tutorial](https://docs.outscale.com/en/userguide/Tutorial-Paginating-an-API-Request.html). # Error Codes Reference You can learn more about errors returned by the API in the dedicated [errors page](api-errors.html).
5 *
6 * The version of the OpenAPI document: 1.35.3
7 * Contact: support@outscale.com
8 * Generated by: https://openapi-generator.tech
9 */
10
11use reqwest;
12
13use super::{configuration, Error};
14use crate::apis::ResponseContent;
15
16/// struct for typed errors of method [`create_subnet`]
17#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(untagged)]
19pub enum CreateSubnetError {
20    Status400(crate::models::ErrorResponse),
21    Status401(crate::models::ErrorResponse),
22    Status409(crate::models::ErrorResponse),
23    Status500(crate::models::ErrorResponse),
24    UnknownValue(serde_json::Value),
25}
26
27/// struct for typed errors of method [`delete_subnet`]
28#[derive(Debug, Clone, Serialize, Deserialize)]
29#[serde(untagged)]
30pub enum DeleteSubnetError {
31    Status400(crate::models::ErrorResponse),
32    Status401(crate::models::ErrorResponse),
33    Status500(crate::models::ErrorResponse),
34    UnknownValue(serde_json::Value),
35}
36
37/// struct for typed errors of method [`read_subnets`]
38#[derive(Debug, Clone, Serialize, Deserialize)]
39#[serde(untagged)]
40pub enum ReadSubnetsError {
41    Status400(crate::models::ErrorResponse),
42    Status401(crate::models::ErrorResponse),
43    Status500(crate::models::ErrorResponse),
44    UnknownValue(serde_json::Value),
45}
46
47/// struct for typed errors of method [`update_subnet`]
48#[derive(Debug, Clone, Serialize, Deserialize)]
49#[serde(untagged)]
50pub enum UpdateSubnetError {
51    Status400(crate::models::ErrorResponse),
52    Status401(crate::models::ErrorResponse),
53    Status500(crate::models::ErrorResponse),
54    UnknownValue(serde_json::Value),
55}
56
57pub fn create_subnet(
58    configuration: &configuration::Configuration,
59    create_subnet_request: Option<crate::models::CreateSubnetRequest>,
60) -> Result<crate::models::CreateSubnetResponse, Error<CreateSubnetError>> {
61    let local_var_configuration = configuration;
62
63    let local_var_client = &local_var_configuration.client;
64
65    let local_var_uri_str = format!("{}/CreateSubnet", local_var_configuration.base_path);
66    let mut local_var_req_builder =
67        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
68
69    if let Some(ref local_var_aws_v4_key) = local_var_configuration.aws_v4_key {
70        let local_var_new_headers = match local_var_aws_v4_key.sign(
71            &local_var_uri_str,
72            "POST",
73            &serde_json::to_string(&create_subnet_request)
74                .expect("param should serialize to string"),
75        ) {
76            Ok(new_headers) => new_headers,
77            Err(err) => return Err(Error::AWSV4SignatureError(err)),
78        };
79        for (local_var_name, local_var_value) in local_var_new_headers.iter() {
80            local_var_req_builder =
81                local_var_req_builder.header(local_var_name.as_str(), local_var_value.as_str());
82        }
83    }
84    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
85        local_var_req_builder =
86            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
87    }
88    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
89        let local_var_key = local_var_apikey.key.clone();
90        let local_var_value = match local_var_apikey.prefix {
91            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
92            None => local_var_key,
93        };
94        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
95    };
96    local_var_req_builder = local_var_req_builder.json(&create_subnet_request);
97
98    let local_var_req = local_var_req_builder.build()?;
99    let mut local_var_resp = local_var_client.execute(local_var_req)?;
100
101    let local_var_status = local_var_resp.status();
102    let local_var_content = local_var_resp.text()?;
103
104    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
105        serde_json::from_str(&local_var_content).map_err(Error::from)
106    } else {
107        let local_var_entity: Option<CreateSubnetError> =
108            serde_json::from_str(&local_var_content).ok();
109        let local_var_error = ResponseContent {
110            status: local_var_status,
111            content: local_var_content,
112            entity: local_var_entity,
113        };
114        Err(Error::ResponseError(local_var_error))
115    }
116}
117
118pub fn delete_subnet(
119    configuration: &configuration::Configuration,
120    delete_subnet_request: Option<crate::models::DeleteSubnetRequest>,
121) -> Result<crate::models::DeleteSubnetResponse, Error<DeleteSubnetError>> {
122    let local_var_configuration = configuration;
123
124    let local_var_client = &local_var_configuration.client;
125
126    let local_var_uri_str = format!("{}/DeleteSubnet", local_var_configuration.base_path);
127    let mut local_var_req_builder =
128        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
129
130    if let Some(ref local_var_aws_v4_key) = local_var_configuration.aws_v4_key {
131        let local_var_new_headers = match local_var_aws_v4_key.sign(
132            &local_var_uri_str,
133            "POST",
134            &serde_json::to_string(&delete_subnet_request)
135                .expect("param should serialize to string"),
136        ) {
137            Ok(new_headers) => new_headers,
138            Err(err) => return Err(Error::AWSV4SignatureError(err)),
139        };
140        for (local_var_name, local_var_value) in local_var_new_headers.iter() {
141            local_var_req_builder =
142                local_var_req_builder.header(local_var_name.as_str(), local_var_value.as_str());
143        }
144    }
145    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
146        local_var_req_builder =
147            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
148    }
149    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
150        let local_var_key = local_var_apikey.key.clone();
151        let local_var_value = match local_var_apikey.prefix {
152            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
153            None => local_var_key,
154        };
155        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
156    };
157    local_var_req_builder = local_var_req_builder.json(&delete_subnet_request);
158
159    let local_var_req = local_var_req_builder.build()?;
160    let mut local_var_resp = local_var_client.execute(local_var_req)?;
161
162    let local_var_status = local_var_resp.status();
163    let local_var_content = local_var_resp.text()?;
164
165    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
166        serde_json::from_str(&local_var_content).map_err(Error::from)
167    } else {
168        let local_var_entity: Option<DeleteSubnetError> =
169            serde_json::from_str(&local_var_content).ok();
170        let local_var_error = ResponseContent {
171            status: local_var_status,
172            content: local_var_content,
173            entity: local_var_entity,
174        };
175        Err(Error::ResponseError(local_var_error))
176    }
177}
178
179pub fn read_subnets(
180    configuration: &configuration::Configuration,
181    read_subnets_request: Option<crate::models::ReadSubnetsRequest>,
182) -> Result<crate::models::ReadSubnetsResponse, Error<ReadSubnetsError>> {
183    let local_var_configuration = configuration;
184
185    let local_var_client = &local_var_configuration.client;
186
187    let local_var_uri_str = format!("{}/ReadSubnets", local_var_configuration.base_path);
188    let mut local_var_req_builder =
189        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
190
191    if let Some(ref local_var_aws_v4_key) = local_var_configuration.aws_v4_key {
192        let local_var_new_headers = match local_var_aws_v4_key.sign(
193            &local_var_uri_str,
194            "POST",
195            &serde_json::to_string(&read_subnets_request)
196                .expect("param should serialize to string"),
197        ) {
198            Ok(new_headers) => new_headers,
199            Err(err) => return Err(Error::AWSV4SignatureError(err)),
200        };
201        for (local_var_name, local_var_value) in local_var_new_headers.iter() {
202            local_var_req_builder =
203                local_var_req_builder.header(local_var_name.as_str(), local_var_value.as_str());
204        }
205    }
206    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
207        local_var_req_builder =
208            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
209    }
210    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
211        let local_var_key = local_var_apikey.key.clone();
212        let local_var_value = match local_var_apikey.prefix {
213            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
214            None => local_var_key,
215        };
216        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
217    };
218    local_var_req_builder = local_var_req_builder.json(&read_subnets_request);
219
220    let local_var_req = local_var_req_builder.build()?;
221    let mut local_var_resp = local_var_client.execute(local_var_req)?;
222
223    let local_var_status = local_var_resp.status();
224    let local_var_content = local_var_resp.text()?;
225
226    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
227        serde_json::from_str(&local_var_content).map_err(Error::from)
228    } else {
229        let local_var_entity: Option<ReadSubnetsError> =
230            serde_json::from_str(&local_var_content).ok();
231        let local_var_error = ResponseContent {
232            status: local_var_status,
233            content: local_var_content,
234            entity: local_var_entity,
235        };
236        Err(Error::ResponseError(local_var_error))
237    }
238}
239
240pub fn update_subnet(
241    configuration: &configuration::Configuration,
242    update_subnet_request: Option<crate::models::UpdateSubnetRequest>,
243) -> Result<crate::models::UpdateSubnetResponse, Error<UpdateSubnetError>> {
244    let local_var_configuration = configuration;
245
246    let local_var_client = &local_var_configuration.client;
247
248    let local_var_uri_str = format!("{}/UpdateSubnet", local_var_configuration.base_path);
249    let mut local_var_req_builder =
250        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
251
252    if let Some(ref local_var_aws_v4_key) = local_var_configuration.aws_v4_key {
253        let local_var_new_headers = match local_var_aws_v4_key.sign(
254            &local_var_uri_str,
255            "POST",
256            &serde_json::to_string(&update_subnet_request)
257                .expect("param should serialize to string"),
258        ) {
259            Ok(new_headers) => new_headers,
260            Err(err) => return Err(Error::AWSV4SignatureError(err)),
261        };
262        for (local_var_name, local_var_value) in local_var_new_headers.iter() {
263            local_var_req_builder =
264                local_var_req_builder.header(local_var_name.as_str(), local_var_value.as_str());
265        }
266    }
267    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
268        local_var_req_builder =
269            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
270    }
271    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
272        let local_var_key = local_var_apikey.key.clone();
273        let local_var_value = match local_var_apikey.prefix {
274            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
275            None => local_var_key,
276        };
277        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
278    };
279    local_var_req_builder = local_var_req_builder.json(&update_subnet_request);
280
281    let local_var_req = local_var_req_builder.build()?;
282    let mut local_var_resp = local_var_client.execute(local_var_req)?;
283
284    let local_var_status = local_var_resp.status();
285    let local_var_content = local_var_resp.text()?;
286
287    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
288        serde_json::from_str(&local_var_content).map_err(Error::from)
289    } else {
290        let local_var_entity: Option<UpdateSubnetError> =
291            serde_json::from_str(&local_var_content).ok();
292        let local_var_error = ResponseContent {
293            status: local_var_status,
294            content: local_var_content,
295            entity: local_var_entity,
296        };
297        Err(Error::ResponseError(local_var_error))
298    }
299}