Skip to main content

openapi_service_fabric/apis/
node_api.rs

1/*
2 * Service Fabric Client APIs
3 *
4 * Service Fabric REST Client APIs allows management of Service Fabric clusters, applications and services.
5 *
6 * The version of the OpenAPI document: 8.2
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use super::{configuration, ContentType, Error};
12use crate::{apis::ResponseContent, models};
13use reqwest;
14use serde::{de::Error as _, Deserialize, Serialize};
15
16/// struct for typed errors of method [`add_configuration_parameter_overrides`]
17#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(untagged)]
19pub enum AddConfigurationParameterOverridesError {
20    DefaultResponse(models::FabricError),
21    UnknownValue(serde_json::Value),
22}
23
24/// struct for typed errors of method [`add_node_tags`]
25#[derive(Debug, Clone, Serialize, Deserialize)]
26#[serde(untagged)]
27pub enum AddNodeTagsError {
28    DefaultResponse(models::FabricError),
29    UnknownValue(serde_json::Value),
30}
31
32/// struct for typed errors of method [`disable_node`]
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(untagged)]
35pub enum DisableNodeError {
36    DefaultResponse(models::FabricError),
37    UnknownValue(serde_json::Value),
38}
39
40/// struct for typed errors of method [`enable_node`]
41#[derive(Debug, Clone, Serialize, Deserialize)]
42#[serde(untagged)]
43pub enum EnableNodeError {
44    DefaultResponse(models::FabricError),
45    UnknownValue(serde_json::Value),
46}
47
48/// struct for typed errors of method [`get_configuration_overrides`]
49#[derive(Debug, Clone, Serialize, Deserialize)]
50#[serde(untagged)]
51pub enum GetConfigurationOverridesError {
52    DefaultResponse(models::FabricError),
53    UnknownValue(serde_json::Value),
54}
55
56/// struct for typed errors of method [`get_node_health`]
57#[derive(Debug, Clone, Serialize, Deserialize)]
58#[serde(untagged)]
59pub enum GetNodeHealthError {
60    DefaultResponse(models::FabricError),
61    UnknownValue(serde_json::Value),
62}
63
64/// struct for typed errors of method [`get_node_health_using_policy`]
65#[derive(Debug, Clone, Serialize, Deserialize)]
66#[serde(untagged)]
67pub enum GetNodeHealthUsingPolicyError {
68    DefaultResponse(models::FabricError),
69    UnknownValue(serde_json::Value),
70}
71
72/// struct for typed errors of method [`get_node_info`]
73#[derive(Debug, Clone, Serialize, Deserialize)]
74#[serde(untagged)]
75pub enum GetNodeInfoError {
76    DefaultResponse(models::FabricError),
77    UnknownValue(serde_json::Value),
78}
79
80/// struct for typed errors of method [`get_node_info_list`]
81#[derive(Debug, Clone, Serialize, Deserialize)]
82#[serde(untagged)]
83pub enum GetNodeInfoListError {
84    DefaultResponse(models::FabricError),
85    UnknownValue(serde_json::Value),
86}
87
88/// struct for typed errors of method [`get_node_load_info`]
89#[derive(Debug, Clone, Serialize, Deserialize)]
90#[serde(untagged)]
91pub enum GetNodeLoadInfoError {
92    DefaultResponse(models::FabricError),
93    UnknownValue(serde_json::Value),
94}
95
96/// struct for typed errors of method [`remove_configuration_overrides`]
97#[derive(Debug, Clone, Serialize, Deserialize)]
98#[serde(untagged)]
99pub enum RemoveConfigurationOverridesError {
100    DefaultResponse(models::FabricError),
101    UnknownValue(serde_json::Value),
102}
103
104/// struct for typed errors of method [`remove_node_state`]
105#[derive(Debug, Clone, Serialize, Deserialize)]
106#[serde(untagged)]
107pub enum RemoveNodeStateError {
108    DefaultResponse(models::FabricError),
109    UnknownValue(serde_json::Value),
110}
111
112/// struct for typed errors of method [`remove_node_tags`]
113#[derive(Debug, Clone, Serialize, Deserialize)]
114#[serde(untagged)]
115pub enum RemoveNodeTagsError {
116    DefaultResponse(models::FabricError),
117    UnknownValue(serde_json::Value),
118}
119
120/// struct for typed errors of method [`report_node_health`]
121#[derive(Debug, Clone, Serialize, Deserialize)]
122#[serde(untagged)]
123pub enum ReportNodeHealthError {
124    DefaultResponse(models::FabricError),
125    UnknownValue(serde_json::Value),
126}
127
128/// struct for typed errors of method [`restart_node`]
129#[derive(Debug, Clone, Serialize, Deserialize)]
130#[serde(untagged)]
131pub enum RestartNodeError {
132    DefaultResponse(models::FabricError),
133    UnknownValue(serde_json::Value),
134}
135
136/// This api allows adding all existing configuration overrides on the specified node.
137pub async fn add_configuration_parameter_overrides(
138    configuration: &configuration::Configuration,
139    api_version: &str,
140    node_name: &str,
141    config_parameter_override_list: Vec<models::ConfigParameterOverride>,
142    force: Option<bool>,
143    timeout: Option<i64>,
144) -> Result<(), Error<AddConfigurationParameterOverridesError>> {
145    // add a prefix to parameters to efficiently prevent name collisions
146    let p_query_api_version = api_version;
147    let p_path_node_name = node_name;
148    let p_body_config_parameter_override_list = config_parameter_override_list;
149    let p_query_force = force;
150    let p_query_timeout = timeout;
151
152    let uri_str = format!(
153        "{}/Nodes/{nodeName}/$/AddConfigurationParameterOverrides",
154        configuration.base_path,
155        nodeName = crate::apis::urlencode(p_path_node_name)
156    );
157    let mut req_builder = configuration
158        .client
159        .request(reqwest::Method::POST, &uri_str);
160
161    req_builder = req_builder.query(&[("api-version", &p_query_api_version.to_string())]);
162    if let Some(ref param_value) = p_query_force {
163        req_builder = req_builder.query(&[("Force", &param_value.to_string())]);
164    }
165    if let Some(ref param_value) = p_query_timeout {
166        req_builder = req_builder.query(&[("timeout", &param_value.to_string())]);
167    }
168    if let Some(ref user_agent) = configuration.user_agent {
169        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
170    }
171    req_builder = req_builder.json(&p_body_config_parameter_override_list);
172
173    let req = req_builder.build()?;
174    let resp = configuration.client.execute(req).await?;
175
176    let status = resp.status();
177
178    if !status.is_client_error() && !status.is_server_error() {
179        Ok(())
180    } else {
181        let content = resp.text().await?;
182        let entity: Option<AddConfigurationParameterOverridesError> =
183            serde_json::from_str(&content).ok();
184        Err(Error::ResponseError(ResponseContent {
185            status,
186            content,
187            entity,
188        }))
189    }
190}
191
192/// This api allows adding tags to the specified node.
193pub async fn add_node_tags(
194    configuration: &configuration::Configuration,
195    api_version: &str,
196    node_name: &str,
197    node_tags: Vec<String>,
198) -> Result<(), Error<AddNodeTagsError>> {
199    // add a prefix to parameters to efficiently prevent name collisions
200    let p_query_api_version = api_version;
201    let p_path_node_name = node_name;
202    let p_body_node_tags = node_tags;
203
204    let uri_str = format!(
205        "{}/Nodes/{nodeName}/$/AddNodeTags",
206        configuration.base_path,
207        nodeName = crate::apis::urlencode(p_path_node_name)
208    );
209    let mut req_builder = configuration
210        .client
211        .request(reqwest::Method::POST, &uri_str);
212
213    req_builder = req_builder.query(&[("api-version", &p_query_api_version.to_string())]);
214    if let Some(ref user_agent) = configuration.user_agent {
215        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
216    }
217    req_builder = req_builder.json(&p_body_node_tags);
218
219    let req = req_builder.build()?;
220    let resp = configuration.client.execute(req).await?;
221
222    let status = resp.status();
223
224    if !status.is_client_error() && !status.is_server_error() {
225        Ok(())
226    } else {
227        let content = resp.text().await?;
228        let entity: Option<AddNodeTagsError> = serde_json::from_str(&content).ok();
229        Err(Error::ResponseError(ResponseContent {
230            status,
231            content,
232            entity,
233        }))
234    }
235}
236
237/// Deactivate a Service Fabric cluster node with the specified deactivation intent. Once the deactivation is in progress, the deactivation intent can be increased, but not decreased (for example, a node that is deactivated with the Pause intent can be deactivated further with Restart, but not the other way around. Nodes may be reactivated using the Activate a node operation any time after they are deactivated. If the deactivation is not complete, this will cancel the deactivation. A node that goes down and comes back up while deactivated will still need to be reactivated before services will be placed on that node.
238pub async fn disable_node(
239    configuration: &configuration::Configuration,
240    api_version: &str,
241    node_name: &str,
242    deactivation_intent_description: models::DeactivationIntentDescription,
243    timeout: Option<i64>,
244) -> Result<(), Error<DisableNodeError>> {
245    // add a prefix to parameters to efficiently prevent name collisions
246    let p_query_api_version = api_version;
247    let p_path_node_name = node_name;
248    let p_body_deactivation_intent_description = deactivation_intent_description;
249    let p_query_timeout = timeout;
250
251    let uri_str = format!(
252        "{}/Nodes/{nodeName}/$/Deactivate",
253        configuration.base_path,
254        nodeName = crate::apis::urlencode(p_path_node_name)
255    );
256    let mut req_builder = configuration
257        .client
258        .request(reqwest::Method::POST, &uri_str);
259
260    req_builder = req_builder.query(&[("api-version", &p_query_api_version.to_string())]);
261    if let Some(ref param_value) = p_query_timeout {
262        req_builder = req_builder.query(&[("timeout", &param_value.to_string())]);
263    }
264    if let Some(ref user_agent) = configuration.user_agent {
265        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
266    }
267    req_builder = req_builder.json(&p_body_deactivation_intent_description);
268
269    let req = req_builder.build()?;
270    let resp = configuration.client.execute(req).await?;
271
272    let status = resp.status();
273
274    if !status.is_client_error() && !status.is_server_error() {
275        Ok(())
276    } else {
277        let content = resp.text().await?;
278        let entity: Option<DisableNodeError> = serde_json::from_str(&content).ok();
279        Err(Error::ResponseError(ResponseContent {
280            status,
281            content,
282            entity,
283        }))
284    }
285}
286
287/// Activates a Service Fabric cluster node that is currently deactivated. Once activated, the node will again become a viable target for placing new replicas, and any deactivated replicas remaining on the node will be reactivated.
288pub async fn enable_node(
289    configuration: &configuration::Configuration,
290    api_version: &str,
291    node_name: &str,
292    timeout: Option<i64>,
293) -> Result<(), Error<EnableNodeError>> {
294    // add a prefix to parameters to efficiently prevent name collisions
295    let p_query_api_version = api_version;
296    let p_path_node_name = node_name;
297    let p_query_timeout = timeout;
298
299    let uri_str = format!(
300        "{}/Nodes/{nodeName}/$/Activate",
301        configuration.base_path,
302        nodeName = crate::apis::urlencode(p_path_node_name)
303    );
304    let mut req_builder = configuration
305        .client
306        .request(reqwest::Method::POST, &uri_str);
307
308    req_builder = req_builder.query(&[("api-version", &p_query_api_version.to_string())]);
309    if let Some(ref param_value) = p_query_timeout {
310        req_builder = req_builder.query(&[("timeout", &param_value.to_string())]);
311    }
312    if let Some(ref user_agent) = configuration.user_agent {
313        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
314    }
315
316    let req = req_builder.build()?;
317    let resp = configuration.client.execute(req).await?;
318
319    let status = resp.status();
320
321    if !status.is_client_error() && !status.is_server_error() {
322        Ok(())
323    } else {
324        let content = resp.text().await?;
325        let entity: Option<EnableNodeError> = serde_json::from_str(&content).ok();
326        Err(Error::ResponseError(ResponseContent {
327            status,
328            content,
329            entity,
330        }))
331    }
332}
333
334/// This api allows getting all existing configuration overrides on the specified node.
335pub async fn get_configuration_overrides(
336    configuration: &configuration::Configuration,
337    api_version: &str,
338    node_name: &str,
339    timeout: Option<i64>,
340) -> Result<Vec<models::ConfigParameterOverride>, Error<GetConfigurationOverridesError>> {
341    // add a prefix to parameters to efficiently prevent name collisions
342    let p_query_api_version = api_version;
343    let p_path_node_name = node_name;
344    let p_query_timeout = timeout;
345
346    let uri_str = format!(
347        "{}/Nodes/{nodeName}/$/GetConfigurationOverrides",
348        configuration.base_path,
349        nodeName = crate::apis::urlencode(p_path_node_name)
350    );
351    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
352
353    req_builder = req_builder.query(&[("api-version", &p_query_api_version.to_string())]);
354    if let Some(ref param_value) = p_query_timeout {
355        req_builder = req_builder.query(&[("timeout", &param_value.to_string())]);
356    }
357    if let Some(ref user_agent) = configuration.user_agent {
358        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
359    }
360
361    let req = req_builder.build()?;
362    let resp = configuration.client.execute(req).await?;
363
364    let status = resp.status();
365    let content_type = resp
366        .headers()
367        .get("content-type")
368        .and_then(|v| v.to_str().ok())
369        .unwrap_or("application/octet-stream");
370    let content_type = super::ContentType::from(content_type);
371
372    if !status.is_client_error() && !status.is_server_error() {
373        let content = resp.text().await?;
374        match content_type {
375            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
376            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `Vec&lt;models::ConfigParameterOverride&gt;`"))),
377            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `Vec&lt;models::ConfigParameterOverride&gt;`")))),
378        }
379    } else {
380        let content = resp.text().await?;
381        let entity: Option<GetConfigurationOverridesError> = serde_json::from_str(&content).ok();
382        Err(Error::ResponseError(ResponseContent {
383            status,
384            content,
385            entity,
386        }))
387    }
388}
389
390/// Gets the health of a Service Fabric node. Use EventsHealthStateFilter to filter the collection of health events reported on the node based on the health state. If the node that you specify by name does not exist in the health store, this returns an error.
391pub async fn get_node_health(
392    configuration: &configuration::Configuration,
393    api_version: &str,
394    node_name: &str,
395    events_health_state_filter: Option<i32>,
396    timeout: Option<i64>,
397) -> Result<models::NodeHealth, Error<GetNodeHealthError>> {
398    // add a prefix to parameters to efficiently prevent name collisions
399    let p_query_api_version = api_version;
400    let p_path_node_name = node_name;
401    let p_query_events_health_state_filter = events_health_state_filter;
402    let p_query_timeout = timeout;
403
404    let uri_str = format!(
405        "{}/Nodes/{nodeName}/$/GetHealth",
406        configuration.base_path,
407        nodeName = crate::apis::urlencode(p_path_node_name)
408    );
409    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
410
411    req_builder = req_builder.query(&[("api-version", &p_query_api_version.to_string())]);
412    if let Some(ref param_value) = p_query_events_health_state_filter {
413        req_builder = req_builder.query(&[("EventsHealthStateFilter", &param_value.to_string())]);
414    }
415    if let Some(ref param_value) = p_query_timeout {
416        req_builder = req_builder.query(&[("timeout", &param_value.to_string())]);
417    }
418    if let Some(ref user_agent) = configuration.user_agent {
419        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
420    }
421
422    let req = req_builder.build()?;
423    let resp = configuration.client.execute(req).await?;
424
425    let status = resp.status();
426    let content_type = resp
427        .headers()
428        .get("content-type")
429        .and_then(|v| v.to_str().ok())
430        .unwrap_or("application/octet-stream");
431    let content_type = super::ContentType::from(content_type);
432
433    if !status.is_client_error() && !status.is_server_error() {
434        let content = resp.text().await?;
435        match content_type {
436            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
437            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodeHealth`"))),
438            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodeHealth`")))),
439        }
440    } else {
441        let content = resp.text().await?;
442        let entity: Option<GetNodeHealthError> = serde_json::from_str(&content).ok();
443        Err(Error::ResponseError(ResponseContent {
444            status,
445            content,
446            entity,
447        }))
448    }
449}
450
451/// Gets the health of a Service Fabric node. Use EventsHealthStateFilter to filter the collection of health events reported on the node based on the health state. Use ClusterHealthPolicy in the POST body to override the health policies used to evaluate the health. If the node that you specify by name does not exist in the health store, this returns an error.
452pub async fn get_node_health_using_policy(
453    configuration: &configuration::Configuration,
454    api_version: &str,
455    node_name: &str,
456    events_health_state_filter: Option<i32>,
457    timeout: Option<i64>,
458    cluster_health_policy: Option<models::ClusterHealthPolicy>,
459) -> Result<models::NodeHealth, Error<GetNodeHealthUsingPolicyError>> {
460    // add a prefix to parameters to efficiently prevent name collisions
461    let p_query_api_version = api_version;
462    let p_path_node_name = node_name;
463    let p_query_events_health_state_filter = events_health_state_filter;
464    let p_query_timeout = timeout;
465    let p_body_cluster_health_policy = cluster_health_policy;
466
467    let uri_str = format!(
468        "{}/Nodes/{nodeName}/$/GetHealth",
469        configuration.base_path,
470        nodeName = crate::apis::urlencode(p_path_node_name)
471    );
472    let mut req_builder = configuration
473        .client
474        .request(reqwest::Method::POST, &uri_str);
475
476    req_builder = req_builder.query(&[("api-version", &p_query_api_version.to_string())]);
477    if let Some(ref param_value) = p_query_events_health_state_filter {
478        req_builder = req_builder.query(&[("EventsHealthStateFilter", &param_value.to_string())]);
479    }
480    if let Some(ref param_value) = p_query_timeout {
481        req_builder = req_builder.query(&[("timeout", &param_value.to_string())]);
482    }
483    if let Some(ref user_agent) = configuration.user_agent {
484        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
485    }
486    req_builder = req_builder.json(&p_body_cluster_health_policy);
487
488    let req = req_builder.build()?;
489    let resp = configuration.client.execute(req).await?;
490
491    let status = resp.status();
492    let content_type = resp
493        .headers()
494        .get("content-type")
495        .and_then(|v| v.to_str().ok())
496        .unwrap_or("application/octet-stream");
497    let content_type = super::ContentType::from(content_type);
498
499    if !status.is_client_error() && !status.is_server_error() {
500        let content = resp.text().await?;
501        match content_type {
502            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
503            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodeHealth`"))),
504            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodeHealth`")))),
505        }
506    } else {
507        let content = resp.text().await?;
508        let entity: Option<GetNodeHealthUsingPolicyError> = serde_json::from_str(&content).ok();
509        Err(Error::ResponseError(ResponseContent {
510            status,
511            content,
512            entity,
513        }))
514    }
515}
516
517/// The response includes the name, status, ID, health, uptime, and other details about the node.
518pub async fn get_node_info(
519    configuration: &configuration::Configuration,
520    api_version: &str,
521    node_name: &str,
522    timeout: Option<i64>,
523) -> Result<models::NodeInfo, Error<GetNodeInfoError>> {
524    // add a prefix to parameters to efficiently prevent name collisions
525    let p_query_api_version = api_version;
526    let p_path_node_name = node_name;
527    let p_query_timeout = timeout;
528
529    let uri_str = format!(
530        "{}/Nodes/{nodeName}",
531        configuration.base_path,
532        nodeName = crate::apis::urlencode(p_path_node_name)
533    );
534    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
535
536    req_builder = req_builder.query(&[("api-version", &p_query_api_version.to_string())]);
537    if let Some(ref param_value) = p_query_timeout {
538        req_builder = req_builder.query(&[("timeout", &param_value.to_string())]);
539    }
540    if let Some(ref user_agent) = configuration.user_agent {
541        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
542    }
543
544    let req = req_builder.build()?;
545    let resp = configuration.client.execute(req).await?;
546
547    let status = resp.status();
548    let content_type = resp
549        .headers()
550        .get("content-type")
551        .and_then(|v| v.to_str().ok())
552        .unwrap_or("application/octet-stream");
553    let content_type = super::ContentType::from(content_type);
554
555    if !status.is_client_error() && !status.is_server_error() {
556        let content = resp.text().await?;
557        match content_type {
558            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
559            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodeInfo`"))),
560            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodeInfo`")))),
561        }
562    } else {
563        let content = resp.text().await?;
564        let entity: Option<GetNodeInfoError> = serde_json::from_str(&content).ok();
565        Err(Error::ResponseError(ResponseContent {
566            status,
567            content,
568            entity,
569        }))
570    }
571}
572
573/// The response includes the name, status, ID, health, uptime, and other details about the nodes.
574pub async fn get_node_info_list(
575    configuration: &configuration::Configuration,
576    api_version: &str,
577    continuation_token: Option<&str>,
578    node_status_filter: Option<&str>,
579    max_results: Option<i64>,
580    timeout: Option<i64>,
581) -> Result<models::PagedNodeInfoList, Error<GetNodeInfoListError>> {
582    // add a prefix to parameters to efficiently prevent name collisions
583    let p_query_api_version = api_version;
584    let p_query_continuation_token = continuation_token;
585    let p_query_node_status_filter = node_status_filter;
586    let p_query_max_results = max_results;
587    let p_query_timeout = timeout;
588
589    let uri_str = format!("{}/Nodes", configuration.base_path);
590    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
591
592    req_builder = req_builder.query(&[("api-version", &p_query_api_version.to_string())]);
593    if let Some(ref param_value) = p_query_continuation_token {
594        req_builder = req_builder.query(&[("ContinuationToken", &param_value.to_string())]);
595    }
596    if let Some(ref param_value) = p_query_node_status_filter {
597        req_builder = req_builder.query(&[("NodeStatusFilter", &param_value.to_string())]);
598    }
599    if let Some(ref param_value) = p_query_max_results {
600        req_builder = req_builder.query(&[("MaxResults", &param_value.to_string())]);
601    }
602    if let Some(ref param_value) = p_query_timeout {
603        req_builder = req_builder.query(&[("timeout", &param_value.to_string())]);
604    }
605    if let Some(ref user_agent) = configuration.user_agent {
606        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
607    }
608
609    let req = req_builder.build()?;
610    let resp = configuration.client.execute(req).await?;
611
612    let status = resp.status();
613    let content_type = resp
614        .headers()
615        .get("content-type")
616        .and_then(|v| v.to_str().ok())
617        .unwrap_or("application/octet-stream");
618    let content_type = super::ContentType::from(content_type);
619
620    if !status.is_client_error() && !status.is_server_error() {
621        let content = resp.text().await?;
622        match content_type {
623            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
624            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::PagedNodeInfoList`"))),
625            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::PagedNodeInfoList`")))),
626        }
627    } else {
628        let content = resp.text().await?;
629        let entity: Option<GetNodeInfoListError> = serde_json::from_str(&content).ok();
630        Err(Error::ResponseError(ResponseContent {
631            status,
632            content,
633            entity,
634        }))
635    }
636}
637
638/// Retrieves the load information of a Service Fabric node for all the metrics that have load or capacity defined.
639pub async fn get_node_load_info(
640    configuration: &configuration::Configuration,
641    api_version: &str,
642    node_name: &str,
643    timeout: Option<i64>,
644) -> Result<models::NodeLoadInfo, Error<GetNodeLoadInfoError>> {
645    // add a prefix to parameters to efficiently prevent name collisions
646    let p_query_api_version = api_version;
647    let p_path_node_name = node_name;
648    let p_query_timeout = timeout;
649
650    let uri_str = format!(
651        "{}/Nodes/{nodeName}/$/GetLoadInformation",
652        configuration.base_path,
653        nodeName = crate::apis::urlencode(p_path_node_name)
654    );
655    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
656
657    req_builder = req_builder.query(&[("api-version", &p_query_api_version.to_string())]);
658    if let Some(ref param_value) = p_query_timeout {
659        req_builder = req_builder.query(&[("timeout", &param_value.to_string())]);
660    }
661    if let Some(ref user_agent) = configuration.user_agent {
662        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
663    }
664
665    let req = req_builder.build()?;
666    let resp = configuration.client.execute(req).await?;
667
668    let status = resp.status();
669    let content_type = resp
670        .headers()
671        .get("content-type")
672        .and_then(|v| v.to_str().ok())
673        .unwrap_or("application/octet-stream");
674    let content_type = super::ContentType::from(content_type);
675
676    if !status.is_client_error() && !status.is_server_error() {
677        let content = resp.text().await?;
678        match content_type {
679            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
680            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodeLoadInfo`"))),
681            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodeLoadInfo`")))),
682        }
683    } else {
684        let content = resp.text().await?;
685        let entity: Option<GetNodeLoadInfoError> = serde_json::from_str(&content).ok();
686        Err(Error::ResponseError(ResponseContent {
687            status,
688            content,
689            entity,
690        }))
691    }
692}
693
694/// This api allows removing all existing configuration overrides on specified node.
695pub async fn remove_configuration_overrides(
696    configuration: &configuration::Configuration,
697    api_version: &str,
698    node_name: &str,
699    timeout: Option<i64>,
700) -> Result<(), Error<RemoveConfigurationOverridesError>> {
701    // add a prefix to parameters to efficiently prevent name collisions
702    let p_query_api_version = api_version;
703    let p_path_node_name = node_name;
704    let p_query_timeout = timeout;
705
706    let uri_str = format!(
707        "{}/Nodes/{nodeName}/$/RemoveConfigurationOverrides",
708        configuration.base_path,
709        nodeName = crate::apis::urlencode(p_path_node_name)
710    );
711    let mut req_builder = configuration
712        .client
713        .request(reqwest::Method::DELETE, &uri_str);
714
715    req_builder = req_builder.query(&[("api-version", &p_query_api_version.to_string())]);
716    if let Some(ref param_value) = p_query_timeout {
717        req_builder = req_builder.query(&[("timeout", &param_value.to_string())]);
718    }
719    if let Some(ref user_agent) = configuration.user_agent {
720        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
721    }
722
723    let req = req_builder.build()?;
724    let resp = configuration.client.execute(req).await?;
725
726    let status = resp.status();
727
728    if !status.is_client_error() && !status.is_server_error() {
729        Ok(())
730    } else {
731        let content = resp.text().await?;
732        let entity: Option<RemoveConfigurationOverridesError> = serde_json::from_str(&content).ok();
733        Err(Error::ResponseError(ResponseContent {
734            status,
735            content,
736            entity,
737        }))
738    }
739}
740
741/// This implies that it is not possible to recover the persisted state of that node. This generally happens if a hard disk has been wiped clean, or if a hard disk crashes. The node has to be down for this operation to be successful. This operation lets Service Fabric know that the replicas on that node no longer exist, and that Service Fabric should stop waiting for those replicas to come back up. Do not run this cmdlet if the state on the node has not been removed and the node can come back up with its state intact. Starting from Service Fabric 6.5, in order to use this API for seed nodes, please change the seed nodes to regular (non-seed) nodes and then invoke this API to remove the node state. If the cluster is running on Azure, after the seed node goes down, Service Fabric will try to change it to a non-seed node automatically. To make this happen, make sure the number of non-seed nodes in the primary node type is no less than the number of Down seed nodes. If necessary, add more nodes to the primary node type to achieve this. For standalone cluster, if the Down seed node is not expected to come back up with its state intact, please remove the node from the cluster, see https://docs.microsoft.com/azure/service-fabric/service-fabric-cluster-windows-server-add-remove-nodes
742pub async fn remove_node_state(
743    configuration: &configuration::Configuration,
744    api_version: &str,
745    node_name: &str,
746    timeout: Option<i64>,
747) -> Result<(), Error<RemoveNodeStateError>> {
748    // add a prefix to parameters to efficiently prevent name collisions
749    let p_query_api_version = api_version;
750    let p_path_node_name = node_name;
751    let p_query_timeout = timeout;
752
753    let uri_str = format!(
754        "{}/Nodes/{nodeName}/$/RemoveNodeState",
755        configuration.base_path,
756        nodeName = crate::apis::urlencode(p_path_node_name)
757    );
758    let mut req_builder = configuration
759        .client
760        .request(reqwest::Method::POST, &uri_str);
761
762    req_builder = req_builder.query(&[("api-version", &p_query_api_version.to_string())]);
763    if let Some(ref param_value) = p_query_timeout {
764        req_builder = req_builder.query(&[("timeout", &param_value.to_string())]);
765    }
766    if let Some(ref user_agent) = configuration.user_agent {
767        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
768    }
769
770    let req = req_builder.build()?;
771    let resp = configuration.client.execute(req).await?;
772
773    let status = resp.status();
774
775    if !status.is_client_error() && !status.is_server_error() {
776        Ok(())
777    } else {
778        let content = resp.text().await?;
779        let entity: Option<RemoveNodeStateError> = serde_json::from_str(&content).ok();
780        Err(Error::ResponseError(ResponseContent {
781            status,
782            content,
783            entity,
784        }))
785    }
786}
787
788/// This api allows removing set of tags from the specified node.
789pub async fn remove_node_tags(
790    configuration: &configuration::Configuration,
791    api_version: &str,
792    node_name: &str,
793    node_tags: Vec<String>,
794) -> Result<(), Error<RemoveNodeTagsError>> {
795    // add a prefix to parameters to efficiently prevent name collisions
796    let p_query_api_version = api_version;
797    let p_path_node_name = node_name;
798    let p_body_node_tags = node_tags;
799
800    let uri_str = format!(
801        "{}/Nodes/{nodeName}/$/RemoveNodeTags",
802        configuration.base_path,
803        nodeName = crate::apis::urlencode(p_path_node_name)
804    );
805    let mut req_builder = configuration
806        .client
807        .request(reqwest::Method::POST, &uri_str);
808
809    req_builder = req_builder.query(&[("api-version", &p_query_api_version.to_string())]);
810    if let Some(ref user_agent) = configuration.user_agent {
811        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
812    }
813    req_builder = req_builder.json(&p_body_node_tags);
814
815    let req = req_builder.build()?;
816    let resp = configuration.client.execute(req).await?;
817
818    let status = resp.status();
819
820    if !status.is_client_error() && !status.is_server_error() {
821        Ok(())
822    } else {
823        let content = resp.text().await?;
824        let entity: Option<RemoveNodeTagsError> = serde_json::from_str(&content).ok();
825        Err(Error::ResponseError(ResponseContent {
826            status,
827            content,
828            entity,
829        }))
830    }
831}
832
833/// Reports health state of the specified Service Fabric node. The report must contain the information about the source of the health report and property on which it is reported. The report is sent to a Service Fabric gateway node, which forwards to the health store. The report may be accepted by the gateway, but rejected by the health store after extra validation. For example, the health store may reject the report because of an invalid parameter, like a stale sequence number. To see whether the report was applied in the health store, run GetNodeHealth and check that the report appears in the HealthEvents section.
834pub async fn report_node_health(
835    configuration: &configuration::Configuration,
836    api_version: &str,
837    node_name: &str,
838    health_information: models::HealthInformation,
839    immediate: Option<bool>,
840    timeout: Option<i64>,
841) -> Result<(), Error<ReportNodeHealthError>> {
842    // add a prefix to parameters to efficiently prevent name collisions
843    let p_query_api_version = api_version;
844    let p_path_node_name = node_name;
845    let p_body_health_information = health_information;
846    let p_query_immediate = immediate;
847    let p_query_timeout = timeout;
848
849    let uri_str = format!(
850        "{}/Nodes/{nodeName}/$/ReportHealth",
851        configuration.base_path,
852        nodeName = crate::apis::urlencode(p_path_node_name)
853    );
854    let mut req_builder = configuration
855        .client
856        .request(reqwest::Method::POST, &uri_str);
857
858    req_builder = req_builder.query(&[("api-version", &p_query_api_version.to_string())]);
859    if let Some(ref param_value) = p_query_immediate {
860        req_builder = req_builder.query(&[("Immediate", &param_value.to_string())]);
861    }
862    if let Some(ref param_value) = p_query_timeout {
863        req_builder = req_builder.query(&[("timeout", &param_value.to_string())]);
864    }
865    if let Some(ref user_agent) = configuration.user_agent {
866        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
867    }
868    req_builder = req_builder.json(&p_body_health_information);
869
870    let req = req_builder.build()?;
871    let resp = configuration.client.execute(req).await?;
872
873    let status = resp.status();
874
875    if !status.is_client_error() && !status.is_server_error() {
876        Ok(())
877    } else {
878        let content = resp.text().await?;
879        let entity: Option<ReportNodeHealthError> = serde_json::from_str(&content).ok();
880        Err(Error::ResponseError(ResponseContent {
881            status,
882            content,
883            entity,
884        }))
885    }
886}
887
888/// Restarts a Service Fabric cluster node that is already started.
889pub async fn restart_node(
890    configuration: &configuration::Configuration,
891    api_version: &str,
892    node_name: &str,
893    restart_node_description: models::RestartNodeDescription,
894    timeout: Option<i64>,
895) -> Result<(), Error<RestartNodeError>> {
896    // add a prefix to parameters to efficiently prevent name collisions
897    let p_query_api_version = api_version;
898    let p_path_node_name = node_name;
899    let p_body_restart_node_description = restart_node_description;
900    let p_query_timeout = timeout;
901
902    let uri_str = format!(
903        "{}/Nodes/{nodeName}/$/Restart",
904        configuration.base_path,
905        nodeName = crate::apis::urlencode(p_path_node_name)
906    );
907    let mut req_builder = configuration
908        .client
909        .request(reqwest::Method::POST, &uri_str);
910
911    req_builder = req_builder.query(&[("api-version", &p_query_api_version.to_string())]);
912    if let Some(ref param_value) = p_query_timeout {
913        req_builder = req_builder.query(&[("timeout", &param_value.to_string())]);
914    }
915    if let Some(ref user_agent) = configuration.user_agent {
916        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
917    }
918    req_builder = req_builder.json(&p_body_restart_node_description);
919
920    let req = req_builder.build()?;
921    let resp = configuration.client.execute(req).await?;
922
923    let status = resp.status();
924
925    if !status.is_client_error() && !status.is_server_error() {
926        Ok(())
927    } else {
928        let content = resp.text().await?;
929        let entity: Option<RestartNodeError> = serde_json::from_str(&content).ok();
930        Err(Error::ResponseError(ResponseContent {
931            status,
932            content,
933            entity,
934        }))
935    }
936}