openstack_cli_load_balancer/v2/amphorae/
list.rs1use clap::Args;
23use tracing::info;
24
25use openstack_cli_core::cli::CliArgs;
26use openstack_cli_core::error::OpenStackCliError;
27use openstack_cli_core::output::OutputProcessor;
28use openstack_sdk::AsyncOpenStack;
29
30use openstack_sdk::api::QueryAsync;
31use openstack_sdk::api::load_balancer::v2::amphorae::list;
32use openstack_sdk::api::{Pagination, paged};
33use openstack_types::load_balancer::v2::amphorae::response;
34
35#[derive(Args)]
47#[command(about = "List Amphora")]
48pub struct AmphoraesCommand {
49 #[command(flatten)]
51 query: QueryParameters,
52
53 #[command(flatten)]
55 path: PathParameters,
56
57 #[arg(long, default_value_t = 10000)]
59 max_items: usize,
60}
61
62#[derive(Args)]
64struct QueryParameters {
65 #[arg(help_heading = "Query parameters", long)]
66 cached_zone: Option<String>,
67
68 #[arg(help_heading = "Query parameters", long)]
69 cert_busy: Option<String>,
70
71 #[arg(help_heading = "Query parameters", long)]
72 cert_expiration: Option<String>,
73
74 #[arg(help_heading = "Query parameters", long)]
75 compute_flavor: Option<String>,
76
77 #[arg(help_heading = "Query parameters", long)]
78 compute_id: Option<String>,
79
80 #[arg(help_heading = "Query parameters", long)]
81 created_at: Option<String>,
82
83 #[arg(help_heading = "Query parameters", long)]
84 ha_ip: Option<String>,
85
86 #[arg(help_heading = "Query parameters", long)]
87 ha_port_id: Option<String>,
88
89 #[arg(help_heading = "Query parameters", long)]
90 id: Option<String>,
91
92 #[arg(help_heading = "Query parameters", long)]
93 image_id: Option<String>,
94
95 #[arg(help_heading = "Query parameters", long)]
96 lb_network_ip: Option<String>,
97
98 #[arg(
100 help_heading = "Query parameters",
101 long("page-size"),
102 visible_alias("limit")
103 )]
104 limit: Option<i32>,
105
106 #[arg(help_heading = "Query parameters", long)]
107 loadbalancer_id: Option<String>,
108
109 #[arg(help_heading = "Query parameters", long)]
111 marker: Option<String>,
112
113 #[arg(action=clap::ArgAction::Set, help_heading = "Query parameters", long)]
115 page_reverse: Option<bool>,
116
117 #[arg(help_heading = "Query parameters", long)]
118 role: Option<String>,
119
120 #[arg(help_heading = "Query parameters", long)]
121 status: Option<String>,
122
123 #[arg(help_heading = "Query parameters", long)]
124 updated_at: Option<String>,
125
126 #[arg(help_heading = "Query parameters", long)]
127 vrrp_id: Option<String>,
128
129 #[arg(help_heading = "Query parameters", long)]
130 vrrp_interface: Option<String>,
131
132 #[arg(help_heading = "Query parameters", long)]
133 vrrp_ip: Option<String>,
134
135 #[arg(help_heading = "Query parameters", long)]
136 vrrp_port_id: Option<String>,
137
138 #[arg(help_heading = "Query parameters", long)]
139 vrrp_priority: Option<String>,
140}
141
142#[derive(Args)]
144struct PathParameters {}
145
146impl AmphoraesCommand {
147 pub async fn take_action<C: CliArgs>(
149 &self,
150 parsed_args: &C,
151 client: &mut AsyncOpenStack,
152 ) -> Result<(), OpenStackCliError> {
153 info!("List Amphoraes");
154
155 let op =
156 OutputProcessor::from_args(parsed_args, Some("load-balancer.amphorae"), Some("list"));
157 op.validate_args(parsed_args)?;
158
159 let mut ep_builder = list::Request::builder();
160
161 if let Some(val) = &self.query.cached_zone {
163 ep_builder.cached_zone(val);
164 }
165 if let Some(val) = &self.query.cert_busy {
166 ep_builder.cert_busy(val);
167 }
168 if let Some(val) = &self.query.cert_expiration {
169 ep_builder.cert_expiration(val);
170 }
171 if let Some(val) = &self.query.compute_flavor {
172 ep_builder.compute_flavor(val);
173 }
174 if let Some(val) = &self.query.compute_id {
175 ep_builder.compute_id(val);
176 }
177 if let Some(val) = &self.query.created_at {
178 ep_builder.created_at(val);
179 }
180 if let Some(val) = &self.query.ha_ip {
181 ep_builder.ha_ip(val);
182 }
183 if let Some(val) = &self.query.ha_port_id {
184 ep_builder.ha_port_id(val);
185 }
186 if let Some(val) = &self.query.id {
187 ep_builder.id(val);
188 }
189 if let Some(val) = &self.query.image_id {
190 ep_builder.image_id(val);
191 }
192 if let Some(val) = &self.query.lb_network_ip {
193 ep_builder.lb_network_ip(val);
194 }
195 if let Some(val) = &self.query.limit {
196 ep_builder.limit(*val);
197 }
198 if let Some(val) = &self.query.loadbalancer_id {
199 ep_builder.loadbalancer_id(val);
200 }
201 if let Some(val) = &self.query.marker {
202 ep_builder.marker(val);
203 }
204 if let Some(val) = &self.query.page_reverse {
205 ep_builder.page_reverse(*val);
206 }
207 if let Some(val) = &self.query.role {
208 ep_builder.role(val);
209 }
210 if let Some(val) = &self.query.status {
211 ep_builder.status(val);
212 }
213 if let Some(val) = &self.query.updated_at {
214 ep_builder.updated_at(val);
215 }
216 if let Some(val) = &self.query.vrrp_id {
217 ep_builder.vrrp_id(val);
218 }
219 if let Some(val) = &self.query.vrrp_interface {
220 ep_builder.vrrp_interface(val);
221 }
222 if let Some(val) = &self.query.vrrp_ip {
223 ep_builder.vrrp_ip(val);
224 }
225 if let Some(val) = &self.query.vrrp_port_id {
226 ep_builder.vrrp_port_id(val);
227 }
228 if let Some(val) = &self.query.vrrp_priority {
229 ep_builder.vrrp_priority(val);
230 }
231
232 let ep = ep_builder
233 .build()
234 .map_err(|x| OpenStackCliError::EndpointBuild(x.to_string()))?;
235
236 let data: Vec<serde_json::Value> = paged(ep, Pagination::Limit(self.max_items))
237 .query_async(client)
238 .await?;
239
240 op.output_list::<response::list::AmphoraeResponse>(data.clone())?;
241 op.show_command_hint()?;
243 Ok(())
244 }
245}