Skip to main content

ossify/ops/service/resource_pool/
delete_resource_pool_requester_qos_info.rs

1//! DeleteResourcePoolRequesterQoSInfo: remove per-requester QoS against a resource pool.
2//!
3//! Official document: <https://www.alibabacloud.com/help/en/oss/developer-reference/deleteresourcepoolrequesterqosinfo>
4
5use std::future::Future;
6
7use http::Method;
8use serde::Serialize;
9
10use crate::body::NoneBody;
11use crate::error::Result;
12use crate::response::EmptyResponseProcessor;
13use crate::ser::OnlyKeyField;
14use crate::{Client, Ops, Prepared, Request};
15
16#[derive(Debug, Clone, Serialize)]
17pub struct DeleteResourcePoolRequesterQoSInfoParams {
18    #[serde(rename = "requesterQosInfo")]
19    pub(crate) requester_qos_info: OnlyKeyField,
20    #[serde(rename = "resourcePool")]
21    pub resource_pool: String,
22    #[serde(rename = "qosRequester")]
23    pub qos_requester: String,
24}
25
26impl DeleteResourcePoolRequesterQoSInfoParams {
27    pub fn new(resource_pool: impl Into<String>, qos_requester: impl Into<String>) -> Self {
28        Self {
29            requester_qos_info: OnlyKeyField,
30            resource_pool: resource_pool.into(),
31            qos_requester: qos_requester.into(),
32        }
33    }
34}
35
36pub struct DeleteResourcePoolRequesterQoSInfo {
37    pub resource_pool: String,
38    pub qos_requester: String,
39}
40
41impl Ops for DeleteResourcePoolRequesterQoSInfo {
42    type Response = EmptyResponseProcessor;
43    type Body = NoneBody;
44    type Query = DeleteResourcePoolRequesterQoSInfoParams;
45
46    const USE_BUCKET: bool = false;
47
48    fn prepare(self) -> Result<Prepared<DeleteResourcePoolRequesterQoSInfoParams>> {
49        Ok(Prepared {
50            method: Method::DELETE,
51            query: Some(DeleteResourcePoolRequesterQoSInfoParams::new(
52                self.resource_pool,
53                self.qos_requester,
54            )),
55            ..Default::default()
56        })
57    }
58}
59
60pub trait DeleteResourcePoolRequesterQoSInfoOps {
61    /// Delete per-requester QoS against a resource pool.
62    ///
63    /// Official document: <https://www.alibabacloud.com/help/en/oss/developer-reference/deleteresourcepoolrequesterqosinfo>
64    fn delete_resource_pool_requester_qos_info(
65        &self,
66        resource_pool: impl Into<String>,
67        qos_requester: impl Into<String>,
68    ) -> impl Future<Output = Result<()>>;
69}
70
71impl DeleteResourcePoolRequesterQoSInfoOps for Client {
72    async fn delete_resource_pool_requester_qos_info(
73        &self,
74        resource_pool: impl Into<String>,
75        qos_requester: impl Into<String>,
76    ) -> Result<()> {
77        self.request(DeleteResourcePoolRequesterQoSInfo {
78            resource_pool: resource_pool.into(),
79            qos_requester: qos_requester.into(),
80        })
81        .await
82    }
83}
84
85#[cfg(test)]
86mod tests {
87    use super::*;
88
89    #[test]
90    fn params_serialize() {
91        let q = crate::ser::to_string(&DeleteResourcePoolRequesterQoSInfoParams::new("rp-for-ai", "300123"))
92            .unwrap();
93        assert_eq!(q, "qosRequester=300123&requesterQosInfo&resourcePool=rp-for-ai");
94    }
95
96    #[test]
97    fn prepare_method() {
98        let prepared = DeleteResourcePoolRequesterQoSInfo {
99            resource_pool: "rp-for-ai".into(),
100            qos_requester: "300123".into(),
101        }
102        .prepare()
103        .unwrap();
104        assert_eq!(prepared.method, Method::DELETE);
105    }
106}