diff --git a/openstack_cli/src/dns/v2/zone/share/list.rs b/openstack_cli/src/dns/v2/zone/share/list.rs index d79e15407..1ef73f326 100644 --- a/openstack_cli/src/dns/v2/zone/share/list.rs +++ b/openstack_cli/src/dns/v2/zone/share/list.rs @@ -39,6 +39,7 @@ use openstack_sdk::api::find_by_name; use openstack_sdk::api::QueryAsync; use openstack_sdk::api::{paged, Pagination}; use serde_json::Value; +use std::fmt; use structable_derive::StructTable; use tracing::warn; @@ -113,6 +114,28 @@ struct ResponseData { #[structable(optional, pretty)] shared_zones: Option, } +/// `struct` response type +#[derive(Default, Clone, Deserialize, Serialize)] +struct ResponseLinks { + _self: Option, + zone: Option, +} + +impl fmt::Display for ResponseLinks { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let data = Vec::from([ + format!( + "_self={}", + self._self.clone().map_or(String::new(), |v| v.to_string()) + ), + format!( + "zone={}", + self.zone.clone().map_or(String::new(), |v| v.to_string()) + ), + ]); + write!(f, "{}", data.join(";")) + } +} impl SharesCommand { /// Perform command action diff --git a/openstack_cli/src/load_balancer/v2/amphorae/list.rs b/openstack_cli/src/load_balancer/v2/amphorae/list.rs index b6bff5d84..d8b32ea01 100644 --- a/openstack_cli/src/load_balancer/v2/amphorae/list.rs +++ b/openstack_cli/src/load_balancer/v2/amphorae/list.rs @@ -33,6 +33,7 @@ use crate::StructTable; use openstack_sdk::api::load_balancer::v2::amphorae::list; use openstack_sdk::api::QueryAsync; +use openstack_sdk::api::{paged, Pagination}; use structable_derive::StructTable; /// Lists all amphora for the project. @@ -57,6 +58,10 @@ pub struct AmphoraesCommand { /// Path parameters #[command(flatten)] path: PathParameters, + + /// Total limit of entities count to return. Use this when there are too many entries. + #[arg(long, default_value_t = 10000)] + max_items: usize, } /// Query parameters @@ -95,9 +100,24 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long)] lb_network_ip: Option, + /// Page size + /// + #[arg(help_heading = "Query parameters", long)] + limit: Option, + #[arg(help_heading = "Query parameters", long)] loadbalancer_id: Option, + /// ID of the last item in the previous list + /// + #[arg(help_heading = "Query parameters", long)] + marker: Option, + + /// The page direction. + /// + #[arg(action=clap::ArgAction::Set, help_heading = "Query parameters", long)] + page_reverse: Option, + #[arg(help_heading = "Query parameters", long)] role: Option, @@ -273,35 +293,50 @@ impl AmphoraesCommand { // Set path parameters // Set query parameters - if let Some(val) = &self.query.id { - ep_builder.id(val); + if let Some(val) = &self.query.cached_zone { + ep_builder.cached_zone(val); } - if let Some(val) = &self.query.loadbalancer_id { - ep_builder.loadbalancer_id(val); + if let Some(val) = &self.query.cert_busy { + ep_builder.cert_busy(val); + } + if let Some(val) = &self.query.cert_expiration { + ep_builder.cert_expiration(val); } if let Some(val) = &self.query.compute_id { ep_builder.compute_id(val); } - if let Some(val) = &self.query.lb_network_ip { - ep_builder.lb_network_ip(val); + if let Some(val) = &self.query.compute_flavor { + ep_builder.compute_flavor(val); } - if let Some(val) = &self.query.vrrp_ip { - ep_builder.vrrp_ip(val); + if let Some(val) = &self.query.created_at { + ep_builder.created_at(val); } if let Some(val) = &self.query.ha_ip { ep_builder.ha_ip(val); } - if let Some(val) = &self.query.vrrp_port_id { - ep_builder.vrrp_port_id(val); - } if let Some(val) = &self.query.ha_port_id { ep_builder.ha_port_id(val); } - if let Some(val) = &self.query.cert_expiration { - ep_builder.cert_expiration(val); + if let Some(val) = &self.query.id { + ep_builder.id(val); } - if let Some(val) = &self.query.cert_busy { - ep_builder.cert_busy(val); + if let Some(val) = &self.query.image_id { + ep_builder.image_id(val); + } + if let Some(val) = &self.query.lb_network_ip { + ep_builder.lb_network_ip(val); + } + if let Some(val) = &self.query.limit { + ep_builder.limit(*val); + } + if let Some(val) = &self.query.loadbalancer_id { + ep_builder.loadbalancer_id(val); + } + if let Some(val) = &self.query.marker { + ep_builder.marker(val); + } + if let Some(val) = &self.query.page_reverse { + ep_builder.page_reverse(*val); } if let Some(val) = &self.query.role { ep_builder.role(val); @@ -309,6 +344,15 @@ impl AmphoraesCommand { if let Some(val) = &self.query.status { ep_builder.status(val); } + if let Some(val) = &self.query.updated_at { + ep_builder.updated_at(val); + } + if let Some(val) = &self.query.vrrp_ip { + ep_builder.vrrp_ip(val); + } + if let Some(val) = &self.query.vrrp_port_id { + ep_builder.vrrp_port_id(val); + } if let Some(val) = &self.query.vrrp_interface { ep_builder.vrrp_interface(val); } @@ -318,28 +362,15 @@ impl AmphoraesCommand { if let Some(val) = &self.query.vrrp_priority { ep_builder.vrrp_priority(val); } - if let Some(val) = &self.query.cached_zone { - ep_builder.cached_zone(val); - } - if let Some(val) = &self.query.created_at { - ep_builder.created_at(val); - } - if let Some(val) = &self.query.updated_at { - ep_builder.updated_at(val); - } - if let Some(val) = &self.query.image_id { - ep_builder.image_id(val); - } - if let Some(val) = &self.query.compute_flavor { - ep_builder.compute_flavor(val); - } // Set body parameters let ep = ep_builder .build() .map_err(|x| OpenStackCliError::EndpointBuild(x.to_string()))?; - let data: Vec = ep.query_async(client).await?; + let data: Vec = paged(ep, Pagination::Limit(self.max_items)) + .query_async(client) + .await?; op.output_list::(data)?; Ok(()) diff --git a/openstack_cli/src/load_balancer/v2/availability_zone/list.rs b/openstack_cli/src/load_balancer/v2/availability_zone/list.rs index bcf2a9596..99bf7790d 100644 --- a/openstack_cli/src/load_balancer/v2/availability_zone/list.rs +++ b/openstack_cli/src/load_balancer/v2/availability_zone/list.rs @@ -33,6 +33,7 @@ use crate::StructTable; use openstack_sdk::api::load_balancer::v2::availability_zone::list; use openstack_sdk::api::QueryAsync; +use openstack_sdk::api::{paged, Pagination}; use structable_derive::StructTable; /// Lists all Availability Zones. @@ -46,6 +47,10 @@ pub struct AvailabilityZonesCommand { /// Path parameters #[command(flatten)] path: PathParameters, + + /// Total limit of entities count to return. Use this when there are too many entries. + #[arg(long, default_value_t = 10000)] + max_items: usize, } /// Query parameters @@ -57,9 +62,24 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long)] description: Option, + /// Page size + /// + #[arg(help_heading = "Query parameters", long)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[arg(help_heading = "Query parameters", long)] + marker: Option, + #[arg(help_heading = "Query parameters", long)] name: Option, + /// The page direction. + /// + #[arg(action=clap::ArgAction::Set, help_heading = "Query parameters", long)] + page_reverse: Option, + #[arg(help_heading = "Query parameters", long)] status: Option, } @@ -103,14 +123,23 @@ impl AvailabilityZonesCommand { // Set path parameters // Set query parameters - if let Some(val) = &self.query.name { - ep_builder.name(val); + if let Some(val) = &self.query.availability_zone_profile_id { + ep_builder.availability_zone_profile_id(val); } if let Some(val) = &self.query.description { ep_builder.description(val); } - if let Some(val) = &self.query.availability_zone_profile_id { - ep_builder.availability_zone_profile_id(val); + if let Some(val) = &self.query.limit { + ep_builder.limit(*val); + } + if let Some(val) = &self.query.marker { + ep_builder.marker(val); + } + if let Some(val) = &self.query.name { + ep_builder.name(val); + } + if let Some(val) = &self.query.page_reverse { + ep_builder.page_reverse(*val); } if let Some(val) = &self.query.status { ep_builder.status(val); @@ -121,7 +150,9 @@ impl AvailabilityZonesCommand { .build() .map_err(|x| OpenStackCliError::EndpointBuild(x.to_string()))?; - let data: Vec = ep.query_async(client).await?; + let data: Vec = paged(ep, Pagination::Limit(self.max_items)) + .query_async(client) + .await?; op.output_list::(data)?; Ok(()) diff --git a/openstack_cli/src/load_balancer/v2/availability_zone_profile/list.rs b/openstack_cli/src/load_balancer/v2/availability_zone_profile/list.rs index 77479508a..138965428 100644 --- a/openstack_cli/src/load_balancer/v2/availability_zone_profile/list.rs +++ b/openstack_cli/src/load_balancer/v2/availability_zone_profile/list.rs @@ -33,6 +33,7 @@ use crate::StructTable; use openstack_sdk::api::load_balancer::v2::availability_zone_profile::list; use openstack_sdk::api::QueryAsync; +use openstack_sdk::api::{paged, Pagination}; use structable_derive::StructTable; /// Lists all Availability Zone Profiles. @@ -46,6 +47,10 @@ pub struct AvailabilityZoneProfilesCommand { /// Path parameters #[command(flatten)] path: PathParameters, + + /// Total limit of entities count to return. Use this when there are too many entries. + #[arg(long, default_value_t = 10000)] + max_items: usize, } /// Query parameters @@ -57,9 +62,24 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long)] id: Option, + /// Page size + /// + #[arg(help_heading = "Query parameters", long)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[arg(help_heading = "Query parameters", long)] + marker: Option, + #[arg(help_heading = "Query parameters", long)] name: Option, + /// The page direction. + /// + #[arg(action=clap::ArgAction::Set, help_heading = "Query parameters", long)] + page_reverse: Option, + #[arg(help_heading = "Query parameters", long)] provider_name: Option, } @@ -103,25 +123,36 @@ impl AvailabilityZoneProfilesCommand { // Set path parameters // Set query parameters + if let Some(val) = &self.query.availability_zone_data { + ep_builder.availability_zone_data(val); + } if let Some(val) = &self.query.id { ep_builder.id(val); } + if let Some(val) = &self.query.limit { + ep_builder.limit(*val); + } + if let Some(val) = &self.query.marker { + ep_builder.marker(val); + } if let Some(val) = &self.query.name { ep_builder.name(val); } + if let Some(val) = &self.query.page_reverse { + ep_builder.page_reverse(*val); + } if let Some(val) = &self.query.provider_name { ep_builder.provider_name(val); } - if let Some(val) = &self.query.availability_zone_data { - ep_builder.availability_zone_data(val); - } // Set body parameters let ep = ep_builder .build() .map_err(|x| OpenStackCliError::EndpointBuild(x.to_string()))?; - let data: Vec = ep.query_async(client).await?; + let data: Vec = paged(ep, Pagination::Limit(self.max_items)) + .query_async(client) + .await?; op.output_list::(data)?; Ok(()) diff --git a/openstack_cli/src/load_balancer/v2/flavor/list.rs b/openstack_cli/src/load_balancer/v2/flavor/list.rs index 896e715fc..0df7fec13 100644 --- a/openstack_cli/src/load_balancer/v2/flavor/list.rs +++ b/openstack_cli/src/load_balancer/v2/flavor/list.rs @@ -33,6 +33,7 @@ use crate::StructTable; use openstack_sdk::api::load_balancer::v2::flavor::list; use openstack_sdk::api::QueryAsync; +use openstack_sdk::api::{paged, Pagination}; use structable_derive::StructTable; /// Lists all flavors. @@ -46,6 +47,10 @@ pub struct FlavorsCommand { /// Path parameters #[command(flatten)] path: PathParameters, + + /// Total limit of entities count to return. Use this when there are too many entries. + #[arg(long, default_value_t = 10000)] + max_items: usize, } /// Query parameters @@ -63,8 +68,23 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long)] id: Option, + /// Page size + /// + #[arg(help_heading = "Query parameters", long)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[arg(help_heading = "Query parameters", long)] + marker: Option, + #[arg(help_heading = "Query parameters", long)] name: Option, + + /// The page direction. + /// + #[arg(action=clap::ArgAction::Set, help_heading = "Query parameters", long)] + page_reverse: Option, } /// Path parameters @@ -110,20 +130,29 @@ impl FlavorsCommand { // Set path parameters // Set query parameters - if let Some(val) = &self.query.id { - ep_builder.id(val); - } - if let Some(val) = &self.query.name { - ep_builder.name(val); - } if let Some(val) = &self.query.description { ep_builder.description(val); } + if let Some(val) = &self.query.enabled { + ep_builder.enabled(*val); + } if let Some(val) = &self.query.flavor_profile_id { ep_builder.flavor_profile_id(val); } - if let Some(val) = &self.query.enabled { - ep_builder.enabled(*val); + if let Some(val) = &self.query.id { + ep_builder.id(val); + } + if let Some(val) = &self.query.limit { + ep_builder.limit(*val); + } + if let Some(val) = &self.query.marker { + ep_builder.marker(val); + } + if let Some(val) = &self.query.name { + ep_builder.name(val); + } + if let Some(val) = &self.query.page_reverse { + ep_builder.page_reverse(*val); } // Set body parameters @@ -131,7 +160,9 @@ impl FlavorsCommand { .build() .map_err(|x| OpenStackCliError::EndpointBuild(x.to_string()))?; - let data: Vec = ep.query_async(client).await?; + let data: Vec = paged(ep, Pagination::Limit(self.max_items)) + .query_async(client) + .await?; op.output_list::(data)?; Ok(()) diff --git a/openstack_cli/src/load_balancer/v2/flavor_profile/list.rs b/openstack_cli/src/load_balancer/v2/flavor_profile/list.rs index 72443925d..761eba893 100644 --- a/openstack_cli/src/load_balancer/v2/flavor_profile/list.rs +++ b/openstack_cli/src/load_balancer/v2/flavor_profile/list.rs @@ -33,6 +33,7 @@ use crate::StructTable; use openstack_sdk::api::load_balancer::v2::flavor_profile::list; use openstack_sdk::api::QueryAsync; +use openstack_sdk::api::{paged, Pagination}; use serde_json::Value; use structable_derive::StructTable; @@ -47,6 +48,10 @@ pub struct FlavorProfilesCommand { /// Path parameters #[command(flatten)] path: PathParameters, + + /// Total limit of entities count to return. Use this when there are too many entries. + #[arg(long, default_value_t = 10000)] + max_items: usize, } /// Query parameters @@ -58,9 +63,24 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long)] id: Option, + /// Page size + /// + #[arg(help_heading = "Query parameters", long)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[arg(help_heading = "Query parameters", long)] + marker: Option, + #[arg(help_heading = "Query parameters", long)] name: Option, + /// The page direction. + /// + #[arg(action=clap::ArgAction::Set, help_heading = "Query parameters", long)] + page_reverse: Option, + #[arg(help_heading = "Query parameters", long)] provider_name: Option, } @@ -96,25 +116,36 @@ impl FlavorProfilesCommand { // Set path parameters // Set query parameters + if let Some(val) = &self.query.flavor_data { + ep_builder.flavor_data(val); + } if let Some(val) = &self.query.id { ep_builder.id(val); } + if let Some(val) = &self.query.limit { + ep_builder.limit(*val); + } + if let Some(val) = &self.query.marker { + ep_builder.marker(val); + } if let Some(val) = &self.query.name { ep_builder.name(val); } + if let Some(val) = &self.query.page_reverse { + ep_builder.page_reverse(*val); + } if let Some(val) = &self.query.provider_name { ep_builder.provider_name(val); } - if let Some(val) = &self.query.flavor_data { - ep_builder.flavor_data(val); - } // Set body parameters let ep = ep_builder .build() .map_err(|x| OpenStackCliError::EndpointBuild(x.to_string()))?; - let data: Vec = ep.query_async(client).await?; + let data: Vec = paged(ep, Pagination::Limit(self.max_items)) + .query_async(client) + .await?; op.output_list::(data)?; Ok(()) diff --git a/openstack_cli/src/load_balancer/v2/healthmonitor/list.rs b/openstack_cli/src/load_balancer/v2/healthmonitor/list.rs index d8032ced5..edf7d2a37 100644 --- a/openstack_cli/src/load_balancer/v2/healthmonitor/list.rs +++ b/openstack_cli/src/load_balancer/v2/healthmonitor/list.rs @@ -36,6 +36,7 @@ use openstack_sdk::api::find_by_name; use openstack_sdk::api::identity::v3::project::find as find_project; use openstack_sdk::api::load_balancer::v2::healthmonitor::list; use openstack_sdk::api::QueryAsync; +use openstack_sdk::api::{paged, Pagination}; use serde_json::Value; use structable_derive::StructTable; use tracing::warn; @@ -62,6 +63,10 @@ pub struct HealthmonitorsCommand { /// Path parameters #[command(flatten)] path: PathParameters, + + /// Total limit of entities count to return. Use this when there are too many entries. + #[arg(long, default_value_t = 10000)] + max_items: usize, } /// Query parameters @@ -108,6 +113,16 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long)] id: Option, + /// Page size + /// + #[arg(help_heading = "Query parameters", long)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[arg(help_heading = "Query parameters", long)] + marker: Option, + /// The number of successful checks before changing the operating status of /// the member to ONLINE. A valid value is from 1 to 10. /// @@ -142,6 +157,11 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long, value_parser = ["DEGRADED","DRAINING","ERROR","NO_MONITOR","OFFLINE","ONLINE"])] operating_status: Option, + /// The page direction. + /// + #[arg(action=clap::ArgAction::Set, help_heading = "Query parameters", long)] + page_reverse: Option, + /// The ID of the pool. /// #[arg(help_heading = "Query parameters", long)] @@ -369,15 +389,48 @@ impl HealthmonitorsCommand { // Set path parameters // Set query parameters - if let Some(val) = &self.query.id { - ep_builder.id(val); + if let Some(val) = &self.query.admin_state_up { + ep_builder.admin_state_up(*val); + } + if let Some(val) = &self.query.created_at { + ep_builder.created_at(val); + } + if let Some(val) = &self.query.delay { + ep_builder.delay(*val); } if let Some(val) = &self.query.description { ep_builder.description(val); } + if let Some(val) = &self.query.expected_codes { + ep_builder.expected_codes(val); + } + if let Some(val) = &self.query.http_method { + ep_builder.http_method(val); + } + if let Some(val) = &self.query.id { + ep_builder.id(val); + } + if let Some(val) = &self.query.limit { + ep_builder.limit(*val); + } + if let Some(val) = &self.query.marker { + ep_builder.marker(val); + } + if let Some(val) = &self.query.max_retries { + ep_builder.max_retries(*val); + } + if let Some(val) = &self.query.max_retries_down { + ep_builder.max_retries_down(*val); + } if let Some(val) = &self.query.name { ep_builder.name(val); } + if let Some(val) = &self.query.page_reverse { + ep_builder.page_reverse(*val); + } + if let Some(val) = &self.query.pool_id { + ep_builder.pool_id(val); + } if let Some(id) = &self.query.project.project_id { // project_id is passed. No need to lookup ep_builder.project_id(id); @@ -419,39 +472,15 @@ impl HealthmonitorsCommand { .id, ); } - if let Some(val) = &self.query.admin_state_up { - ep_builder.admin_state_up(*val); - } - if let Some(val) = &self.query.created_at { - ep_builder.created_at(val); - } - if let Some(val) = &self.query.updated_at { - ep_builder.updated_at(val); - } - if let Some(val) = &self.query.delay { - ep_builder.delay(*val); - } - if let Some(val) = &self.query.expected_codes { - ep_builder.expected_codes(val); - } - if let Some(val) = &self.query.http_method { - ep_builder.http_method(val); - } - if let Some(val) = &self.query.max_retries { - ep_builder.max_retries(*val); - } - if let Some(val) = &self.query.max_retries_down { - ep_builder.max_retries_down(*val); - } - if let Some(val) = &self.query.pool_id { - ep_builder.pool_id(val); - } if let Some(val) = &self.query.timeout { ep_builder.timeout(*val); } if let Some(val) = &self.query._type { ep_builder._type(val); } + if let Some(val) = &self.query.updated_at { + ep_builder.updated_at(val); + } if let Some(val) = &self.query.url_path { ep_builder.url_path(val); } @@ -479,7 +508,9 @@ impl HealthmonitorsCommand { .build() .map_err(|x| OpenStackCliError::EndpointBuild(x.to_string()))?; - let data: Vec = ep.query_async(client).await?; + let data: Vec = paged(ep, Pagination::Limit(self.max_items)) + .query_async(client) + .await?; op.output_list::(data)?; Ok(()) diff --git a/openstack_cli/src/load_balancer/v2/l7policy/list.rs b/openstack_cli/src/load_balancer/v2/l7policy/list.rs index f918f20f4..e0da303bf 100644 --- a/openstack_cli/src/load_balancer/v2/l7policy/list.rs +++ b/openstack_cli/src/load_balancer/v2/l7policy/list.rs @@ -36,6 +36,7 @@ use openstack_sdk::api::find_by_name; use openstack_sdk::api::identity::v3::project::find as find_project; use openstack_sdk::api::load_balancer::v2::l7policy::list; use openstack_sdk::api::QueryAsync; +use openstack_sdk::api::{paged, Pagination}; use serde_json::Value; use structable_derive::StructTable; use tracing::warn; @@ -62,6 +63,10 @@ pub struct L7PoliciesCommand { /// Path parameters #[command(flatten)] path: PathParameters, + + /// Total limit of entities count to return. Use this when there are too many entries. + #[arg(long, default_value_t = 10000)] + max_items: usize, } /// Query parameters @@ -76,15 +81,30 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long)] description: Option, + /// Page size + /// + #[arg(help_heading = "Query parameters", long)] + limit: Option, + #[arg(help_heading = "Query parameters", long)] listener_id: Option, + /// ID of the last item in the previous list + /// + #[arg(help_heading = "Query parameters", long)] + marker: Option, + #[arg(help_heading = "Query parameters", long)] name: Option, #[arg(help_heading = "Query parameters", long)] operating_status: Option, + /// The page direction. + /// + #[arg(action=clap::ArgAction::Set, help_heading = "Query parameters", long)] + page_reverse: Option, + #[arg(help_heading = "Query parameters", long)] position: Option, @@ -274,32 +294,32 @@ impl L7PoliciesCommand { if let Some(val) = &self.query.action { ep_builder.action(val); } + if let Some(val) = &self.query.admin_state_up { + ep_builder.admin_state_up(*val); + } if let Some(val) = &self.query.description { ep_builder.description(val); } + if let Some(val) = &self.query.limit { + ep_builder.limit(*val); + } if let Some(val) = &self.query.listener_id { ep_builder.listener_id(val); } + if let Some(val) = &self.query.marker { + ep_builder.marker(val); + } if let Some(val) = &self.query.name { ep_builder.name(val); } - if let Some(val) = &self.query.position { - ep_builder.position(val); - } - if let Some(val) = &self.query.redirect_pool_id { - ep_builder.redirect_pool_id(val); - } - if let Some(val) = &self.query.redirect_url { - ep_builder.redirect_url(val); - } - if let Some(val) = &self.query.provisioning_status { - ep_builder.provisioning_status(val); - } if let Some(val) = &self.query.operating_status { ep_builder.operating_status(val); } - if let Some(val) = &self.query.redirect_prefix { - ep_builder.redirect_prefix(val); + if let Some(val) = &self.query.page_reverse { + ep_builder.page_reverse(*val); + } + if let Some(val) = &self.query.position { + ep_builder.position(val); } if let Some(id) = &self.query.project.project_id { // project_id is passed. No need to lookup @@ -342,8 +362,17 @@ impl L7PoliciesCommand { .id, ); } - if let Some(val) = &self.query.admin_state_up { - ep_builder.admin_state_up(*val); + if let Some(val) = &self.query.provisioning_status { + ep_builder.provisioning_status(val); + } + if let Some(val) = &self.query.redirect_pool_id { + ep_builder.redirect_pool_id(val); + } + if let Some(val) = &self.query.redirect_prefix { + ep_builder.redirect_prefix(val); + } + if let Some(val) = &self.query.redirect_url { + ep_builder.redirect_url(val); } // Set body parameters @@ -351,7 +380,9 @@ impl L7PoliciesCommand { .build() .map_err(|x| OpenStackCliError::EndpointBuild(x.to_string()))?; - let data: Vec = ep.query_async(client).await?; + let data: Vec = paged(ep, Pagination::Limit(self.max_items)) + .query_async(client) + .await?; op.output_list::(data)?; Ok(()) diff --git a/openstack_cli/src/load_balancer/v2/l7policy/rule/list.rs b/openstack_cli/src/load_balancer/v2/l7policy/rule/list.rs index a2038a6ef..ed2ef6bc9 100644 --- a/openstack_cli/src/load_balancer/v2/l7policy/rule/list.rs +++ b/openstack_cli/src/load_balancer/v2/l7policy/rule/list.rs @@ -36,6 +36,7 @@ use openstack_sdk::api::find_by_name; use openstack_sdk::api::identity::v3::project::find as find_project; use openstack_sdk::api::load_balancer::v2::l7policy::rule::list; use openstack_sdk::api::QueryAsync; +use openstack_sdk::api::{paged, Pagination}; use serde_json::Value; use structable_derive::StructTable; use tracing::warn; @@ -62,6 +63,10 @@ pub struct RulesCommand { /// Path parameters #[command(flatten)] path: PathParameters, + + /// Total limit of entities count to return. Use this when there are too many entries. + #[arg(long, default_value_t = 10000)] + max_items: usize, } /// Query parameters @@ -85,9 +90,24 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long)] key: Option, + /// Page size + /// + #[arg(help_heading = "Query parameters", long)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[arg(help_heading = "Query parameters", long)] + marker: Option, + #[arg(help_heading = "Query parameters", long)] operating_status: Option, + /// The page direction. + /// + #[arg(action=clap::ArgAction::Set, help_heading = "Query parameters", long)] + page_reverse: Option, + /// Project resource for which the operation should be performed. #[command(flatten)] project: ProjectInput, @@ -243,6 +263,9 @@ impl RulesCommand { // Set path parameters ep_builder.l7policy_id(&self.path.l7policy_id); // Set query parameters + if let Some(val) = &self.query.admin_state_up { + ep_builder.admin_state_up(*val); + } if let Some(val) = &self.query.compare_type { ep_builder.compare_type(val); } @@ -255,6 +278,18 @@ impl RulesCommand { if let Some(val) = &self.query.key { ep_builder.key(val); } + if let Some(val) = &self.query.limit { + ep_builder.limit(*val); + } + if let Some(val) = &self.query.marker { + ep_builder.marker(val); + } + if let Some(val) = &self.query.operating_status { + ep_builder.operating_status(val); + } + if let Some(val) = &self.query.page_reverse { + ep_builder.page_reverse(*val); + } if let Some(id) = &self.query.project.project_id { // project_id is passed. No need to lookup ep_builder.project_id(id); @@ -299,28 +334,24 @@ impl RulesCommand { if let Some(val) = &self.query.provisioning_status { ep_builder.provisioning_status(val); } + if let Some(val) = &self.query.rule_value { + ep_builder.rule_value(val); + } if let Some(val) = &self.query._type { ep_builder._type(val); } if let Some(val) = &self.query.updated_at { ep_builder.updated_at(val); } - if let Some(val) = &self.query.rule_value { - ep_builder.rule_value(val); - } - if let Some(val) = &self.query.operating_status { - ep_builder.operating_status(val); - } - if let Some(val) = &self.query.admin_state_up { - ep_builder.admin_state_up(*val); - } // Set body parameters let ep = ep_builder .build() .map_err(|x| OpenStackCliError::EndpointBuild(x.to_string()))?; - let data: Vec = ep.query_async(client).await?; + let data: Vec = paged(ep, Pagination::Limit(self.max_items)) + .query_async(client) + .await?; op.output_list::(data)?; Ok(()) diff --git a/openstack_cli/src/load_balancer/v2/listener/list.rs b/openstack_cli/src/load_balancer/v2/listener/list.rs index a12884fb5..f75059890 100644 --- a/openstack_cli/src/load_balancer/v2/listener/list.rs +++ b/openstack_cli/src/load_balancer/v2/listener/list.rs @@ -36,6 +36,7 @@ use openstack_sdk::api::find_by_name; use openstack_sdk::api::identity::v3::project::find as find_project; use openstack_sdk::api::load_balancer::v2::listener::list; use openstack_sdk::api::QueryAsync; +use openstack_sdk::api::{paged, Pagination}; use serde_json::Value; use structable_derive::StructTable; use tracing::warn; @@ -62,6 +63,10 @@ pub struct ListenersCommand { /// Path parameters #[command(flatten)] path: PathParameters, + + /// Total limit of entities count to return. Use this when there are too many entries. + #[arg(long, default_value_t = 10000)] + max_items: usize, } /// Query parameters @@ -122,11 +127,21 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long)] id: Option, + /// Page size + /// + #[arg(help_heading = "Query parameters", long)] + limit: Option, + /// Load balancer ID /// #[arg(help_heading = "Query parameters", long)] load_balancer_id: Option, + /// ID of the last item in the previous list + /// + #[arg(help_heading = "Query parameters", long)] + marker: Option, + /// Human-readable name of the resource. /// #[arg(help_heading = "Query parameters", long)] @@ -149,6 +164,11 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long, value_parser = ["DEGRADED","DRAINING","ERROR","NO_MONITOR","OFFLINE","ONLINE"])] operating_status: Option, + /// The page direction. + /// + #[arg(action=clap::ArgAction::Set, help_heading = "Query parameters", long)] + page_reverse: Option, + /// Project resource for which the operation should be performed. #[command(flatten)] project: ProjectInput, @@ -519,15 +539,51 @@ impl ListenersCommand { // Set path parameters // Set query parameters - if let Some(val) = &self.query.id { - ep_builder.id(val); + if let Some(val) = &self.query.admin_state_up { + ep_builder.admin_state_up(*val); + } + if let Some(val) = &self.query.alpn_protocols { + ep_builder.alpn_protocols(val); + } + if let Some(val) = &self.query.connection_limit { + ep_builder.connection_limit(val); + } + if let Some(val) = &self.query.created_at { + ep_builder.created_at(val); + } + if let Some(val) = &self.query.default_pool_id { + ep_builder.default_pool_id(val); } if let Some(val) = &self.query.description { ep_builder.description(val); } + if let Some(val) = &self.query.hsts_include_subdomains { + ep_builder.hsts_include_subdomains(*val); + } + if let Some(val) = &self.query.hsts_max_age { + ep_builder.hsts_max_age(*val); + } + if let Some(val) = &self.query.hsts_preload { + ep_builder.hsts_preload(*val); + } + if let Some(val) = &self.query.id { + ep_builder.id(val); + } + if let Some(val) = &self.query.limit { + ep_builder.limit(*val); + } + if let Some(val) = &self.query.load_balancer_id { + ep_builder.load_balancer_id(val); + } + if let Some(val) = &self.query.marker { + ep_builder.marker(val); + } if let Some(val) = &self.query.name { ep_builder.name(val); } + if let Some(val) = &self.query.page_reverse { + ep_builder.page_reverse(*val); + } if let Some(id) = &self.query.project.project_id { // project_id is passed. No need to lookup ep_builder.project_id(id); @@ -569,27 +625,12 @@ impl ListenersCommand { .id, ); } - if let Some(val) = &self.query.connection_limit { - ep_builder.connection_limit(val); - } - if let Some(val) = &self.query.default_pool_id { - ep_builder.default_pool_id(val); - } if let Some(val) = &self.query.protocol { ep_builder.protocol(val); } if let Some(val) = &self.query.protocol_port { ep_builder.protocol_port(*val); } - if let Some(val) = &self.query.created_at { - ep_builder.created_at(val); - } - if let Some(val) = &self.query.updated_at { - ep_builder.updated_at(val); - } - if let Some(val) = &self.query.load_balancer_id { - ep_builder.load_balancer_id(val); - } if let Some(val) = &self.query.timeout_client_data { ep_builder.timeout_client_data(*val); } @@ -608,20 +649,8 @@ impl ListenersCommand { if let Some(val) = &self.query.tls_versions { ep_builder.tls_versions(val); } - if let Some(val) = &self.query.alpn_protocols { - ep_builder.alpn_protocols(val); - } - if let Some(val) = &self.query.hsts_max_age { - ep_builder.hsts_max_age(*val); - } - if let Some(val) = &self.query.admin_state_up { - ep_builder.admin_state_up(*val); - } - if let Some(val) = &self.query.hsts_include_subdomains { - ep_builder.hsts_include_subdomains(*val); - } - if let Some(val) = &self.query.hsts_preload { - ep_builder.hsts_preload(*val); + if let Some(val) = &self.query.updated_at { + ep_builder.updated_at(val); } if let Some(val) = &self.query.provisioning_status { ep_builder.provisioning_status(val); @@ -647,7 +676,9 @@ impl ListenersCommand { .build() .map_err(|x| OpenStackCliError::EndpointBuild(x.to_string()))?; - let data: Vec = ep.query_async(client).await?; + let data: Vec = paged(ep, Pagination::Limit(self.max_items)) + .query_async(client) + .await?; op.output_list::(data)?; Ok(()) diff --git a/openstack_cli/src/load_balancer/v2/loadbalancer/list.rs b/openstack_cli/src/load_balancer/v2/loadbalancer/list.rs index 90c9d987c..d220b63d3 100644 --- a/openstack_cli/src/load_balancer/v2/loadbalancer/list.rs +++ b/openstack_cli/src/load_balancer/v2/loadbalancer/list.rs @@ -36,6 +36,7 @@ use openstack_sdk::api::find_by_name; use openstack_sdk::api::identity::v3::project::find as find_project; use openstack_sdk::api::load_balancer::v2::loadbalancer::list; use openstack_sdk::api::QueryAsync; +use openstack_sdk::api::{paged, Pagination}; use serde_json::Value; use structable_derive::StructTable; use tracing::warn; @@ -62,6 +63,10 @@ pub struct LoadbalancersCommand { /// Path parameters #[command(flatten)] path: PathParameters, + + /// Total limit of entities count to return. Use this when there are too many entries. + #[arg(long, default_value_t = 10000)] + max_items: usize, } /// Query parameters @@ -72,6 +77,11 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long)] availability_zone: Option, + /// The UTC date and timestamp when the resource was created. + /// + #[arg(help_heading = "Query parameters", long)] + created_at: Option, + /// A human-readable description for the resource. /// #[arg(help_heading = "Query parameters", long)] @@ -87,6 +97,16 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long)] id: Option, + /// Page size + /// + #[arg(help_heading = "Query parameters", long)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[arg(help_heading = "Query parameters", long)] + marker: Option, + /// Human-readable name of the resource. /// #[arg(help_heading = "Query parameters", long)] @@ -109,6 +129,11 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long, value_parser = ["DEGRADED","DRAINING","ERROR","NO_MONITOR","OFFLINE","ONLINE"])] operating_status: Option, + /// The page direction. + /// + #[arg(action=clap::ArgAction::Set, help_heading = "Query parameters", long)] + page_reverse: Option, + /// Project resource for which the operation should be performed. #[command(flatten)] project: ProjectInput, @@ -133,6 +158,11 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long)] tags_any: Option, + /// The UTC date and timestamp when the resource was last updated. + /// + #[arg(help_heading = "Query parameters", long)] + updated_at: Option, + /// The IP address of the Virtual IP (VIP). /// #[arg(help_heading = "Query parameters", long)] @@ -347,15 +377,36 @@ impl LoadbalancersCommand { // Set path parameters // Set query parameters + if let Some(val) = &self.query.availability_zone { + ep_builder.availability_zone(val); + } + if let Some(val) = &self.query.created_at { + ep_builder.created_at(val); + } if let Some(val) = &self.query.description { ep_builder.description(val); } - if let Some(val) = &self.query.name { - ep_builder.name(val); + if let Some(val) = &self.query.flavor_id { + ep_builder.flavor_id(val); } if let Some(val) = &self.query.id { ep_builder.id(val); } + if let Some(val) = &self.query.limit { + ep_builder.limit(*val); + } + if let Some(val) = &self.query.marker { + ep_builder.marker(val); + } + if let Some(val) = &self.query.name { + ep_builder.name(val); + } + if let Some(val) = &self.query.page_reverse { + ep_builder.page_reverse(*val); + } + if let Some(val) = &self.query.provider { + ep_builder.provider(val); + } if let Some(id) = &self.query.project.project_id { // project_id is passed. No need to lookup ep_builder.project_id(id); @@ -397,11 +448,8 @@ impl LoadbalancersCommand { .id, ); } - if let Some(val) = &self.query.flavor_id { - ep_builder.flavor_id(val); - } - if let Some(val) = &self.query.provider { - ep_builder.provider(val); + if let Some(val) = &self.query.updated_at { + ep_builder.updated_at(val); } if let Some(val) = &self.query.vip_address { ep_builder.vip_address(val); @@ -418,9 +466,6 @@ impl LoadbalancersCommand { if let Some(val) = &self.query.vip_qos_policy_id { ep_builder.vip_qos_policy_id(val); } - if let Some(val) = &self.query.availability_zone { - ep_builder.availability_zone(val); - } if let Some(val) = &self.query.provisioning_status { ep_builder.provisioning_status(val); } @@ -445,7 +490,9 @@ impl LoadbalancersCommand { .build() .map_err(|x| OpenStackCliError::EndpointBuild(x.to_string()))?; - let data: Vec = ep.query_async(client).await?; + let data: Vec = paged(ep, Pagination::Limit(self.max_items)) + .query_async(client) + .await?; op.output_list::(data)?; Ok(()) diff --git a/openstack_cli/src/load_balancer/v2/pool/list.rs b/openstack_cli/src/load_balancer/v2/pool/list.rs index 2be6c6914..996cefb4d 100644 --- a/openstack_cli/src/load_balancer/v2/pool/list.rs +++ b/openstack_cli/src/load_balancer/v2/pool/list.rs @@ -36,6 +36,7 @@ use openstack_sdk::api::find_by_name; use openstack_sdk::api::identity::v3::project::find as find_project; use openstack_sdk::api::load_balancer::v2::pool::list; use openstack_sdk::api::QueryAsync; +use openstack_sdk::api::{paged, Pagination}; use serde_json::Value; use structable_derive::StructTable; use tracing::warn; @@ -62,6 +63,10 @@ pub struct PoolsCommand { /// Path parameters #[command(flatten)] path: PathParameters, + + /// Total limit of entities count to return. Use this when there are too many entries. + #[arg(long, default_value_t = 10000)] + max_items: usize, } /// Query parameters @@ -92,11 +97,21 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long)] id: Option, + /// Page size + /// + #[arg(help_heading = "Query parameters", long)] + limit: Option, + /// The ID of the load balancer for the pool. /// #[arg(help_heading = "Query parameters", long)] loadbalancer_id: Option, + /// ID of the last item in the previous list + /// + #[arg(help_heading = "Query parameters", long)] + marker: Option, + /// Human-readable name of the resource. /// #[arg(help_heading = "Query parameters", long)] @@ -119,6 +134,11 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long, value_parser = ["DEGRADED","DRAINING","ERROR","NO_MONITOR","OFFLINE","ONLINE"])] operating_status: Option, + /// The page direction. + /// + #[arg(action=clap::ArgAction::Set, help_heading = "Query parameters", long)] + page_reverse: Option, + /// Project resource for which the operation should be performed. #[command(flatten)] project: ProjectInput, @@ -377,15 +397,36 @@ impl PoolsCommand { // Set path parameters // Set query parameters - if let Some(val) = &self.query.id { - ep_builder.id(val); + if let Some(val) = &self.query.admin_state_up { + ep_builder.admin_state_up(*val); + } + if let Some(val) = &self.query.alpn_protocols { + ep_builder.alpn_protocols(val); + } + if let Some(val) = &self.query.created_at { + ep_builder.created_at(val); } if let Some(val) = &self.query.description { ep_builder.description(val); } + if let Some(val) = &self.query.id { + ep_builder.id(val); + } + if let Some(val) = &self.query.limit { + ep_builder.limit(*val); + } + if let Some(val) = &self.query.loadbalancer_id { + ep_builder.loadbalancer_id(val); + } + if let Some(val) = &self.query.marker { + ep_builder.marker(val); + } if let Some(val) = &self.query.name { ep_builder.name(val); } + if let Some(val) = &self.query.page_reverse { + ep_builder.page_reverse(*val); + } if let Some(id) = &self.query.project.project_id { // project_id is passed. No need to lookup ep_builder.project_id(id); @@ -427,18 +468,6 @@ impl PoolsCommand { .id, ); } - if let Some(val) = &self.query.admin_state_up { - ep_builder.admin_state_up(*val); - } - if let Some(val) = &self.query.created_at { - ep_builder.created_at(val); - } - if let Some(val) = &self.query.updated_at { - ep_builder.updated_at(val); - } - if let Some(val) = &self.query.loadbalancer_id { - ep_builder.loadbalancer_id(val); - } if let Some(val) = &self.query.tls_enabled { ep_builder.tls_enabled(*val); } @@ -448,8 +477,8 @@ impl PoolsCommand { if let Some(val) = &self.query.tls_versions { ep_builder.tls_versions(val); } - if let Some(val) = &self.query.alpn_protocols { - ep_builder.alpn_protocols(val); + if let Some(val) = &self.query.updated_at { + ep_builder.updated_at(val); } if let Some(val) = &self.query.provisioning_status { ep_builder.provisioning_status(val); @@ -475,7 +504,9 @@ impl PoolsCommand { .build() .map_err(|x| OpenStackCliError::EndpointBuild(x.to_string()))?; - let data: Vec = ep.query_async(client).await?; + let data: Vec = paged(ep, Pagination::Limit(self.max_items)) + .query_async(client) + .await?; op.output_list::(data)?; Ok(()) diff --git a/openstack_cli/src/load_balancer/v2/pool/member/list.rs b/openstack_cli/src/load_balancer/v2/pool/member/list.rs index ef1a4c536..ad2859c12 100644 --- a/openstack_cli/src/load_balancer/v2/pool/member/list.rs +++ b/openstack_cli/src/load_balancer/v2/pool/member/list.rs @@ -36,6 +36,7 @@ use openstack_sdk::api::find_by_name; use openstack_sdk::api::identity::v3::project::find as find_project; use openstack_sdk::api::load_balancer::v2::pool::member::list; use openstack_sdk::api::QueryAsync; +use openstack_sdk::api::{paged, Pagination}; use serde_json::Value; use structable_derive::StructTable; use tracing::warn; @@ -62,6 +63,10 @@ pub struct MembersCommand { /// Path parameters #[command(flatten)] path: PathParameters, + + /// Total limit of entities count to return. Use this when there are too many entries. + #[arg(long, default_value_t = 10000)] + max_items: usize, } /// Query parameters @@ -97,6 +102,16 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long)] id: Option, + /// Page size + /// + #[arg(help_heading = "Query parameters", long)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[arg(help_heading = "Query parameters", long)] + marker: Option, + /// An alternate IP address used for health monitoring a backend member. /// #[arg(help_heading = "Query parameters", long)] @@ -129,6 +144,11 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long, value_parser = ["DEGRADED","DRAINING","ERROR","NO_MONITOR","OFFLINE","ONLINE"])] operating_status: Option, + /// The page direction. + /// + #[arg(action=clap::ArgAction::Set, help_heading = "Query parameters", long)] + page_reverse: Option, + /// Project resource for which the operation should be performed. #[command(flatten)] project: ProjectInput, @@ -333,15 +353,42 @@ impl MembersCommand { // Set path parameters ep_builder.pool_id(&self.path.pool_id); // Set query parameters - if let Some(val) = &self.query.id { - ep_builder.id(val); + if let Some(val) = &self.query.address { + ep_builder.address(val); + } + if let Some(val) = &self.query.admin_state_up { + ep_builder.admin_state_up(*val); + } + if let Some(val) = &self.query.backup { + ep_builder.backup(*val); + } + if let Some(val) = &self.query.created_at { + ep_builder.created_at(val); } if let Some(val) = &self.query.description { ep_builder.description(val); } + if let Some(val) = &self.query.id { + ep_builder.id(val); + } + if let Some(val) = &self.query.limit { + ep_builder.limit(*val); + } + if let Some(val) = &self.query.marker { + ep_builder.marker(val); + } + if let Some(val) = &self.query.monitor_address { + ep_builder.monitor_address(val); + } + if let Some(val) = &self.query.monitor_port { + ep_builder.monitor_port(val); + } if let Some(val) = &self.query.name { ep_builder.name(val); } + if let Some(val) = &self.query.page_reverse { + ep_builder.page_reverse(*val); + } if let Some(id) = &self.query.project.project_id { // project_id is passed. No need to lookup ep_builder.project_id(id); @@ -383,36 +430,18 @@ impl MembersCommand { .id, ); } - if let Some(val) = &self.query.admin_state_up { - ep_builder.admin_state_up(*val); - } - if let Some(val) = &self.query.created_at { - ep_builder.created_at(val); - } - if let Some(val) = &self.query.updated_at { - ep_builder.updated_at(val); - } - if let Some(val) = &self.query.address { - ep_builder.address(val); - } if let Some(val) = &self.query.protocol_port { ep_builder.protocol_port(*val); } if let Some(val) = &self.query.subnet_id { ep_builder.subnet_id(val); } + if let Some(val) = &self.query.updated_at { + ep_builder.updated_at(val); + } if let Some(val) = &self.query.weight { ep_builder.weight(*val); } - if let Some(val) = &self.query.monitor_address { - ep_builder.monitor_address(val); - } - if let Some(val) = &self.query.monitor_port { - ep_builder.monitor_port(val); - } - if let Some(val) = &self.query.backup { - ep_builder.backup(*val); - } if let Some(val) = &self.query.provisioning_status { ep_builder.provisioning_status(val); } @@ -437,7 +466,9 @@ impl MembersCommand { .build() .map_err(|x| OpenStackCliError::EndpointBuild(x.to_string()))?; - let data: Vec = ep.query_async(client).await?; + let data: Vec = paged(ep, Pagination::Limit(self.max_items)) + .query_async(client) + .await?; op.output_list::(data)?; Ok(()) diff --git a/openstack_cli/src/load_balancer/v2/provider/list.rs b/openstack_cli/src/load_balancer/v2/provider/list.rs index 386a2ae8b..7dc59ec2f 100644 --- a/openstack_cli/src/load_balancer/v2/provider/list.rs +++ b/openstack_cli/src/load_balancer/v2/provider/list.rs @@ -33,6 +33,7 @@ use crate::StructTable; use openstack_sdk::api::load_balancer::v2::provider::list; use openstack_sdk::api::QueryAsync; +use openstack_sdk::api::{paged, Pagination}; use structable_derive::StructTable; /// Lists all enabled provider drivers. @@ -52,6 +53,10 @@ pub struct ProvidersCommand { /// Path parameters #[command(flatten)] path: PathParameters, + + /// Total limit of entities count to return. Use this when there are too many entries. + #[arg(long, default_value_t = 10000)] + max_items: usize, } /// Query parameters @@ -60,8 +65,23 @@ struct QueryParameters { #[arg(help_heading = "Query parameters", long)] description: Option, + /// Page size + /// + #[arg(help_heading = "Query parameters", long)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[arg(help_heading = "Query parameters", long)] + marker: Option, + #[arg(help_heading = "Query parameters", long)] name: Option, + + /// The page direction. + /// + #[arg(action=clap::ArgAction::Set, help_heading = "Query parameters", long)] + page_reverse: Option, } /// Path parameters @@ -102,16 +122,27 @@ impl ProvidersCommand { if let Some(val) = &self.query.description { ep_builder.description(val); } + if let Some(val) = &self.query.limit { + ep_builder.limit(*val); + } + if let Some(val) = &self.query.marker { + ep_builder.marker(val); + } if let Some(val) = &self.query.name { ep_builder.name(val); } + if let Some(val) = &self.query.page_reverse { + ep_builder.page_reverse(*val); + } // Set body parameters let ep = ep_builder .build() .map_err(|x| OpenStackCliError::EndpointBuild(x.to_string()))?; - let data: Vec = ep.query_async(client).await?; + let data: Vec = paged(ep, Pagination::Limit(self.max_items)) + .query_async(client) + .await?; op.output_list::(data)?; Ok(()) diff --git a/openstack_sdk/src/api/load_balancer/v2/amphorae/list.rs b/openstack_sdk/src/api/load_balancer/v2/amphorae/list.rs index 143ebfb23..ba9f9c693 100644 --- a/openstack_sdk/src/api/load_balancer/v2/amphorae/list.rs +++ b/openstack_sdk/src/api/load_balancer/v2/amphorae/list.rs @@ -34,6 +34,7 @@ use crate::api::rest_endpoint_prelude::*; use std::borrow::Cow; +use crate::api::Pageable; #[derive(Builder, Debug, Clone)] #[builder(setter(strip_option))] pub struct Request<'a> { @@ -70,9 +71,24 @@ pub struct Request<'a> { #[builder(default, setter(into))] lb_network_ip: Option>, + /// Page size + /// + #[builder(default)] + limit: Option, + #[builder(default, setter(into))] loadbalancer_id: Option>, + /// ID of the last item in the previous list + /// + #[builder(default, setter(into))] + marker: Option>, + + /// The page direction. + /// + #[builder(default)] + page_reverse: Option, + #[builder(default, setter(into))] role: Option>, @@ -143,26 +159,29 @@ impl RestEndpoint for Request<'_> { fn parameters(&self) -> QueryParams { let mut params = QueryParams::default(); - params.push_opt("id", self.id.as_ref()); - params.push_opt("loadbalancer_id", self.loadbalancer_id.as_ref()); + params.push_opt("cached_zone", self.cached_zone.as_ref()); + params.push_opt("cert_busy", self.cert_busy.as_ref()); + params.push_opt("cert_expiration", self.cert_expiration.as_ref()); params.push_opt("compute_id", self.compute_id.as_ref()); - params.push_opt("lb_network_ip", self.lb_network_ip.as_ref()); - params.push_opt("vrrp_ip", self.vrrp_ip.as_ref()); + params.push_opt("compute_flavor", self.compute_flavor.as_ref()); + params.push_opt("created_at", self.created_at.as_ref()); params.push_opt("ha_ip", self.ha_ip.as_ref()); - params.push_opt("vrrp_port_id", self.vrrp_port_id.as_ref()); params.push_opt("ha_port_id", self.ha_port_id.as_ref()); - params.push_opt("cert_expiration", self.cert_expiration.as_ref()); - params.push_opt("cert_busy", self.cert_busy.as_ref()); + params.push_opt("id", self.id.as_ref()); + params.push_opt("image_id", self.image_id.as_ref()); + params.push_opt("lb_network_ip", self.lb_network_ip.as_ref()); + params.push_opt("limit", self.limit); + params.push_opt("loadbalancer_id", self.loadbalancer_id.as_ref()); + params.push_opt("marker", self.marker.as_ref()); + params.push_opt("page_reverse", self.page_reverse); params.push_opt("role", self.role.as_ref()); params.push_opt("status", self.status.as_ref()); + params.push_opt("updated_at", self.updated_at.as_ref()); + params.push_opt("vrrp_ip", self.vrrp_ip.as_ref()); + params.push_opt("vrrp_port_id", self.vrrp_port_id.as_ref()); params.push_opt("vrrp_interface", self.vrrp_interface.as_ref()); params.push_opt("vrrp_id", self.vrrp_id.as_ref()); params.push_opt("vrrp_priority", self.vrrp_priority.as_ref()); - params.push_opt("cached_zone", self.cached_zone.as_ref()); - params.push_opt("created_at", self.created_at.as_ref()); - params.push_opt("updated_at", self.updated_at.as_ref()); - params.push_opt("image_id", self.image_id.as_ref()); - params.push_opt("compute_flavor", self.compute_flavor.as_ref()); params } @@ -185,6 +204,7 @@ impl RestEndpoint for Request<'_> { Some(ApiVersion::new(2, 0)) } } +impl Pageable for Request<'_> {} #[cfg(test)] mod tests { diff --git a/openstack_sdk/src/api/load_balancer/v2/availability_zone/list.rs b/openstack_sdk/src/api/load_balancer/v2/availability_zone/list.rs index 07b0bd244..cea4cdb29 100644 --- a/openstack_sdk/src/api/load_balancer/v2/availability_zone/list.rs +++ b/openstack_sdk/src/api/load_balancer/v2/availability_zone/list.rs @@ -24,6 +24,7 @@ use crate::api::rest_endpoint_prelude::*; use std::borrow::Cow; +use crate::api::Pageable; #[derive(Builder, Debug, Clone)] #[builder(setter(strip_option))] pub struct Request<'a> { @@ -33,9 +34,24 @@ pub struct Request<'a> { #[builder(default, setter(into))] description: Option>, + /// Page size + /// + #[builder(default)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[builder(default, setter(into))] + marker: Option>, + #[builder(default, setter(into))] name: Option>, + /// The page direction. + /// + #[builder(default)] + page_reverse: Option, + #[builder(default, setter(into))] status: Option>, @@ -85,12 +101,15 @@ impl RestEndpoint for Request<'_> { fn parameters(&self) -> QueryParams { let mut params = QueryParams::default(); - params.push_opt("name", self.name.as_ref()); - params.push_opt("description", self.description.as_ref()); params.push_opt( "availability_zone_profile_id", self.availability_zone_profile_id.as_ref(), ); + params.push_opt("description", self.description.as_ref()); + params.push_opt("limit", self.limit); + params.push_opt("marker", self.marker.as_ref()); + params.push_opt("name", self.name.as_ref()); + params.push_opt("page_reverse", self.page_reverse); params.push_opt("status", self.status.as_ref()); params @@ -114,6 +133,7 @@ impl RestEndpoint for Request<'_> { Some(ApiVersion::new(2, 0)) } } +impl Pageable for Request<'_> {} #[cfg(test)] mod tests { diff --git a/openstack_sdk/src/api/load_balancer/v2/availability_zone_profile/list.rs b/openstack_sdk/src/api/load_balancer/v2/availability_zone_profile/list.rs index 66743171a..039af3f31 100644 --- a/openstack_sdk/src/api/load_balancer/v2/availability_zone_profile/list.rs +++ b/openstack_sdk/src/api/load_balancer/v2/availability_zone_profile/list.rs @@ -24,6 +24,7 @@ use crate::api::rest_endpoint_prelude::*; use std::borrow::Cow; +use crate::api::Pageable; #[derive(Builder, Debug, Clone)] #[builder(setter(strip_option))] pub struct Request<'a> { @@ -33,9 +34,24 @@ pub struct Request<'a> { #[builder(default, setter(into))] id: Option>, + /// Page size + /// + #[builder(default)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[builder(default, setter(into))] + marker: Option>, + #[builder(default, setter(into))] name: Option>, + /// The page direction. + /// + #[builder(default)] + page_reverse: Option, + #[builder(default, setter(into))] provider_name: Option>, @@ -85,13 +101,16 @@ impl RestEndpoint for Request<'_> { fn parameters(&self) -> QueryParams { let mut params = QueryParams::default(); - params.push_opt("id", self.id.as_ref()); - params.push_opt("name", self.name.as_ref()); - params.push_opt("provider_name", self.provider_name.as_ref()); params.push_opt( "availability_zone_data", self.availability_zone_data.as_ref(), ); + params.push_opt("id", self.id.as_ref()); + params.push_opt("limit", self.limit); + params.push_opt("marker", self.marker.as_ref()); + params.push_opt("name", self.name.as_ref()); + params.push_opt("page_reverse", self.page_reverse); + params.push_opt("provider_name", self.provider_name.as_ref()); params } @@ -114,6 +133,7 @@ impl RestEndpoint for Request<'_> { Some(ApiVersion::new(2, 0)) } } +impl Pageable for Request<'_> {} #[cfg(test)] mod tests { diff --git a/openstack_sdk/src/api/load_balancer/v2/flavor/list.rs b/openstack_sdk/src/api/load_balancer/v2/flavor/list.rs index d62ed4bb7..93c1bee60 100644 --- a/openstack_sdk/src/api/load_balancer/v2/flavor/list.rs +++ b/openstack_sdk/src/api/load_balancer/v2/flavor/list.rs @@ -24,6 +24,7 @@ use crate::api::rest_endpoint_prelude::*; use std::borrow::Cow; +use crate::api::Pageable; #[derive(Builder, Debug, Clone)] #[builder(setter(strip_option))] pub struct Request<'a> { @@ -39,9 +40,24 @@ pub struct Request<'a> { #[builder(default, setter(into))] id: Option>, + /// Page size + /// + #[builder(default)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[builder(default, setter(into))] + marker: Option>, + #[builder(default, setter(into))] name: Option>, + /// The page direction. + /// + #[builder(default)] + page_reverse: Option, + #[builder(setter(name = "_headers"), default, private)] _headers: Option, } @@ -88,11 +104,14 @@ impl RestEndpoint for Request<'_> { fn parameters(&self) -> QueryParams { let mut params = QueryParams::default(); - params.push_opt("id", self.id.as_ref()); - params.push_opt("name", self.name.as_ref()); params.push_opt("description", self.description.as_ref()); - params.push_opt("flavor_profile_id", self.flavor_profile_id.as_ref()); params.push_opt("enabled", self.enabled); + params.push_opt("flavor_profile_id", self.flavor_profile_id.as_ref()); + params.push_opt("id", self.id.as_ref()); + params.push_opt("limit", self.limit); + params.push_opt("marker", self.marker.as_ref()); + params.push_opt("name", self.name.as_ref()); + params.push_opt("page_reverse", self.page_reverse); params } @@ -115,6 +134,7 @@ impl RestEndpoint for Request<'_> { Some(ApiVersion::new(2, 0)) } } +impl Pageable for Request<'_> {} #[cfg(test)] mod tests { diff --git a/openstack_sdk/src/api/load_balancer/v2/flavor_profile/list.rs b/openstack_sdk/src/api/load_balancer/v2/flavor_profile/list.rs index 3ee688bfb..9f4ef4240 100644 --- a/openstack_sdk/src/api/load_balancer/v2/flavor_profile/list.rs +++ b/openstack_sdk/src/api/load_balancer/v2/flavor_profile/list.rs @@ -24,6 +24,7 @@ use crate::api::rest_endpoint_prelude::*; use std::borrow::Cow; +use crate::api::Pageable; #[derive(Builder, Debug, Clone)] #[builder(setter(strip_option))] pub struct Request<'a> { @@ -33,9 +34,24 @@ pub struct Request<'a> { #[builder(default, setter(into))] id: Option>, + /// Page size + /// + #[builder(default)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[builder(default, setter(into))] + marker: Option>, + #[builder(default, setter(into))] name: Option>, + /// The page direction. + /// + #[builder(default)] + page_reverse: Option, + #[builder(default, setter(into))] provider_name: Option>, @@ -85,10 +101,13 @@ impl RestEndpoint for Request<'_> { fn parameters(&self) -> QueryParams { let mut params = QueryParams::default(); + params.push_opt("flavor_data", self.flavor_data.as_ref()); params.push_opt("id", self.id.as_ref()); + params.push_opt("limit", self.limit); + params.push_opt("marker", self.marker.as_ref()); params.push_opt("name", self.name.as_ref()); + params.push_opt("page_reverse", self.page_reverse); params.push_opt("provider_name", self.provider_name.as_ref()); - params.push_opt("flavor_data", self.flavor_data.as_ref()); params } @@ -111,6 +130,7 @@ impl RestEndpoint for Request<'_> { Some(ApiVersion::new(2, 0)) } } +impl Pageable for Request<'_> {} #[cfg(test)] mod tests { diff --git a/openstack_sdk/src/api/load_balancer/v2/healthmonitor/list.rs b/openstack_sdk/src/api/load_balancer/v2/healthmonitor/list.rs index a4c8ba21f..829a02c72 100644 --- a/openstack_sdk/src/api/load_balancer/v2/healthmonitor/list.rs +++ b/openstack_sdk/src/api/load_balancer/v2/healthmonitor/list.rs @@ -34,6 +34,7 @@ use crate::api::rest_endpoint_prelude::*; use std::borrow::Cow; +use crate::api::Pageable; #[derive(Builder, Debug, Clone)] #[builder(setter(strip_option))] pub struct Request<'a> { @@ -78,6 +79,16 @@ pub struct Request<'a> { #[builder(default, setter(into))] id: Option>, + /// Page size + /// + #[builder(default)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[builder(default, setter(into))] + marker: Option>, + /// The number of successful checks before changing the operating status of /// the member to ONLINE. A valid value is from 1 to 10. /// @@ -112,6 +123,11 @@ pub struct Request<'a> { #[builder(default, setter(into))] operating_status: Option>, + /// The page direction. + /// + #[builder(default)] + page_reverse: Option, + /// The ID of the pool. /// #[builder(default, setter(into))] @@ -201,21 +217,24 @@ impl RestEndpoint for Request<'_> { fn parameters(&self) -> QueryParams { let mut params = QueryParams::default(); - params.push_opt("id", self.id.as_ref()); - params.push_opt("description", self.description.as_ref()); - params.push_opt("name", self.name.as_ref()); - params.push_opt("project_id", self.project_id.as_ref()); params.push_opt("admin_state_up", self.admin_state_up); params.push_opt("created_at", self.created_at.as_ref()); - params.push_opt("updated_at", self.updated_at.as_ref()); params.push_opt("delay", self.delay); + params.push_opt("description", self.description.as_ref()); params.push_opt("expected_codes", self.expected_codes.as_ref()); params.push_opt("http_method", self.http_method.as_ref()); + params.push_opt("id", self.id.as_ref()); + params.push_opt("limit", self.limit); + params.push_opt("marker", self.marker.as_ref()); params.push_opt("max_retries", self.max_retries); params.push_opt("max_retries_down", self.max_retries_down); + params.push_opt("name", self.name.as_ref()); + params.push_opt("page_reverse", self.page_reverse); params.push_opt("pool_id", self.pool_id.as_ref()); + params.push_opt("project_id", self.project_id.as_ref()); params.push_opt("timeout", self.timeout); params.push_opt("type", self._type.as_ref()); + params.push_opt("updated_at", self.updated_at.as_ref()); params.push_opt("url_path", self.url_path.as_ref()); params.push_opt("provisioning_status", self.provisioning_status.as_ref()); params.push_opt("operating_status", self.operating_status.as_ref()); @@ -245,6 +264,7 @@ impl RestEndpoint for Request<'_> { Some(ApiVersion::new(2, 0)) } } +impl Pageable for Request<'_> {} #[cfg(test)] mod tests { diff --git a/openstack_sdk/src/api/load_balancer/v2/l7policy/list.rs b/openstack_sdk/src/api/load_balancer/v2/l7policy/list.rs index b68f7bb1c..6b96c468a 100644 --- a/openstack_sdk/src/api/load_balancer/v2/l7policy/list.rs +++ b/openstack_sdk/src/api/load_balancer/v2/l7policy/list.rs @@ -34,6 +34,7 @@ use crate::api::rest_endpoint_prelude::*; use std::borrow::Cow; +use crate::api::Pageable; #[derive(Builder, Debug, Clone)] #[builder(setter(strip_option))] pub struct Request<'a> { @@ -46,15 +47,30 @@ pub struct Request<'a> { #[builder(default, setter(into))] description: Option>, + /// Page size + /// + #[builder(default)] + limit: Option, + #[builder(default, setter(into))] listener_id: Option>, + /// ID of the last item in the previous list + /// + #[builder(default, setter(into))] + marker: Option>, + #[builder(default, setter(into))] name: Option>, #[builder(default, setter(into))] operating_status: Option>, + /// The page direction. + /// + #[builder(default)] + page_reverse: Option, + #[builder(default, setter(into))] position: Option>, @@ -120,17 +136,20 @@ impl RestEndpoint for Request<'_> { fn parameters(&self) -> QueryParams { let mut params = QueryParams::default(); params.push_opt("action", self.action.as_ref()); + params.push_opt("admin_state_up", self.admin_state_up); params.push_opt("description", self.description.as_ref()); + params.push_opt("limit", self.limit); params.push_opt("listener_id", self.listener_id.as_ref()); + params.push_opt("marker", self.marker.as_ref()); params.push_opt("name", self.name.as_ref()); + params.push_opt("operating_status", self.operating_status.as_ref()); + params.push_opt("page_reverse", self.page_reverse); params.push_opt("position", self.position.as_ref()); - params.push_opt("redirect_pool_id", self.redirect_pool_id.as_ref()); - params.push_opt("redirect_url", self.redirect_url.as_ref()); + params.push_opt("project_id", self.project_id.as_ref()); params.push_opt("provisioning_status", self.provisioning_status.as_ref()); - params.push_opt("operating_status", self.operating_status.as_ref()); + params.push_opt("redirect_pool_id", self.redirect_pool_id.as_ref()); params.push_opt("redirect_prefix", self.redirect_prefix.as_ref()); - params.push_opt("project_id", self.project_id.as_ref()); - params.push_opt("admin_state_up", self.admin_state_up); + params.push_opt("redirect_url", self.redirect_url.as_ref()); params } @@ -153,6 +172,7 @@ impl RestEndpoint for Request<'_> { Some(ApiVersion::new(2, 0)) } } +impl Pageable for Request<'_> {} #[cfg(test)] mod tests { diff --git a/openstack_sdk/src/api/load_balancer/v2/l7policy/rule/list.rs b/openstack_sdk/src/api/load_balancer/v2/l7policy/rule/list.rs index c346076bf..c730b5b2a 100644 --- a/openstack_sdk/src/api/load_balancer/v2/l7policy/rule/list.rs +++ b/openstack_sdk/src/api/load_balancer/v2/l7policy/rule/list.rs @@ -34,6 +34,7 @@ use crate::api::rest_endpoint_prelude::*; use std::borrow::Cow; +use crate::api::Pageable; #[derive(Builder, Debug, Clone)] #[builder(setter(strip_option))] pub struct Request<'a> { @@ -61,9 +62,24 @@ pub struct Request<'a> { #[builder(default, setter(into))] l7policy_id: Cow<'a, str>, + /// Page size + /// + #[builder(default)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[builder(default, setter(into))] + marker: Option>, + #[builder(default, setter(into))] operating_status: Option>, + /// The page direction. + /// + #[builder(default)] + page_reverse: Option, + #[builder(default, setter(into))] project_id: Option>, @@ -126,17 +142,20 @@ impl RestEndpoint for Request<'_> { fn parameters(&self) -> QueryParams { let mut params = QueryParams::default(); + params.push_opt("admin_state_up", self.admin_state_up); params.push_opt("compare_type", self.compare_type.as_ref()); params.push_opt("created_at", self.created_at.as_ref()); params.push_opt("invert", self.invert.as_ref()); params.push_opt("key", self.key.as_ref()); + params.push_opt("limit", self.limit); + params.push_opt("marker", self.marker.as_ref()); + params.push_opt("operating_status", self.operating_status.as_ref()); + params.push_opt("page_reverse", self.page_reverse); params.push_opt("project_id", self.project_id.as_ref()); params.push_opt("provisioning_status", self.provisioning_status.as_ref()); + params.push_opt("rule_value", self.rule_value.as_ref()); params.push_opt("type", self._type.as_ref()); params.push_opt("updated_at", self.updated_at.as_ref()); - params.push_opt("rule_value", self.rule_value.as_ref()); - params.push_opt("operating_status", self.operating_status.as_ref()); - params.push_opt("admin_state_up", self.admin_state_up); params } @@ -159,6 +178,7 @@ impl RestEndpoint for Request<'_> { Some(ApiVersion::new(2, 0)) } } +impl Pageable for Request<'_> {} #[cfg(test)] mod tests { diff --git a/openstack_sdk/src/api/load_balancer/v2/listener/list.rs b/openstack_sdk/src/api/load_balancer/v2/listener/list.rs index 05ca412e0..9f8278528 100644 --- a/openstack_sdk/src/api/load_balancer/v2/listener/list.rs +++ b/openstack_sdk/src/api/load_balancer/v2/listener/list.rs @@ -34,6 +34,7 @@ use crate::api::rest_endpoint_prelude::*; use std::borrow::Cow; +use crate::api::Pageable; #[derive(Builder, Debug, Clone)] #[builder(setter(strip_option))] pub struct Request<'a> { @@ -92,11 +93,21 @@ pub struct Request<'a> { #[builder(default, setter(into))] id: Option>, + /// Page size + /// + #[builder(default)] + limit: Option, + /// Load balancer ID /// #[builder(default, setter(into))] load_balancer_id: Option>, + /// ID of the last item in the previous list + /// + #[builder(default, setter(into))] + marker: Option>, + /// Human-readable name of the resource. /// #[builder(default, setter(into))] @@ -119,6 +130,11 @@ pub struct Request<'a> { #[builder(default, setter(into))] operating_status: Option>, + /// The page direction. + /// + #[builder(default)] + page_reverse: Option, + /// The ID of the project owning this resource. /// #[builder(default, setter(into))] @@ -231,28 +247,31 @@ impl RestEndpoint for Request<'_> { fn parameters(&self) -> QueryParams { let mut params = QueryParams::default(); - params.push_opt("id", self.id.as_ref()); + params.push_opt("admin_state_up", self.admin_state_up); + params.push_opt("alpn_protocols", self.alpn_protocols.as_ref()); + params.push_opt("connection_limit", self.connection_limit.as_ref()); + params.push_opt("created_at", self.created_at.as_ref()); + params.push_opt("default_pool_id", self.default_pool_id.as_ref()); params.push_opt("description", self.description.as_ref()); + params.push_opt("hsts_include_subdomains", self.hsts_include_subdomains); + params.push_opt("hsts_max_age", self.hsts_max_age); + params.push_opt("hsts_preload", self.hsts_preload); + params.push_opt("id", self.id.as_ref()); + params.push_opt("limit", self.limit); + params.push_opt("load_balancer_id", self.load_balancer_id.as_ref()); + params.push_opt("marker", self.marker.as_ref()); params.push_opt("name", self.name.as_ref()); + params.push_opt("page_reverse", self.page_reverse); params.push_opt("project_id", self.project_id.as_ref()); - params.push_opt("connection_limit", self.connection_limit.as_ref()); - params.push_opt("default_pool_id", self.default_pool_id.as_ref()); params.push_opt("protocol", self.protocol.as_ref()); params.push_opt("protocol_port", self.protocol_port); - params.push_opt("created_at", self.created_at.as_ref()); - params.push_opt("updated_at", self.updated_at.as_ref()); - params.push_opt("load_balancer_id", self.load_balancer_id.as_ref()); params.push_opt("timeout_client_data", self.timeout_client_data); params.push_opt("timeout_member_connect", self.timeout_member_connect); params.push_opt("timeout_member_data", self.timeout_member_data); params.push_opt("timeout_tcp_inspect", self.timeout_tcp_inspect); params.push_opt("tls_ciphers", self.tls_ciphers.as_ref()); params.push_opt("tls_versions", self.tls_versions.as_ref()); - params.push_opt("alpn_protocols", self.alpn_protocols.as_ref()); - params.push_opt("hsts_max_age", self.hsts_max_age); - params.push_opt("admin_state_up", self.admin_state_up); - params.push_opt("hsts_include_subdomains", self.hsts_include_subdomains); - params.push_opt("hsts_preload", self.hsts_preload); + params.push_opt("updated_at", self.updated_at.as_ref()); params.push_opt("provisioning_status", self.provisioning_status.as_ref()); params.push_opt("operating_status", self.operating_status.as_ref()); params.push_opt("tags", self.tags.as_ref()); @@ -281,6 +300,7 @@ impl RestEndpoint for Request<'_> { Some(ApiVersion::new(2, 0)) } } +impl Pageable for Request<'_> {} #[cfg(test)] mod tests { diff --git a/openstack_sdk/src/api/load_balancer/v2/loadbalancer/list.rs b/openstack_sdk/src/api/load_balancer/v2/loadbalancer/list.rs index 41bdbfc41..664db26dd 100644 --- a/openstack_sdk/src/api/load_balancer/v2/loadbalancer/list.rs +++ b/openstack_sdk/src/api/load_balancer/v2/loadbalancer/list.rs @@ -34,6 +34,7 @@ use crate::api::rest_endpoint_prelude::*; use std::borrow::Cow; +use crate::api::Pageable; #[derive(Builder, Debug, Clone)] #[builder(setter(strip_option))] pub struct Request<'a> { @@ -42,6 +43,11 @@ pub struct Request<'a> { #[builder(default, setter(into))] availability_zone: Option>, + /// The UTC date and timestamp when the resource was created. + /// + #[builder(default, setter(into))] + created_at: Option>, + /// A human-readable description for the resource. /// #[builder(default, setter(into))] @@ -57,6 +63,16 @@ pub struct Request<'a> { #[builder(default, setter(into))] id: Option>, + /// Page size + /// + #[builder(default)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[builder(default, setter(into))] + marker: Option>, + /// Human-readable name of the resource. /// #[builder(default, setter(into))] @@ -79,6 +95,11 @@ pub struct Request<'a> { #[builder(default, setter(into))] operating_status: Option>, + /// The page direction. + /// + #[builder(default)] + page_reverse: Option, + /// The ID of the project owning this resource. /// #[builder(default, setter(into))] @@ -104,6 +125,11 @@ pub struct Request<'a> { #[builder(default, setter(into))] tags_any: Option>, + /// The UTC date and timestamp when the resource was last updated. + /// + #[builder(default, setter(into))] + updated_at: Option>, + /// The IP address of the Virtual IP (VIP). /// #[builder(default, setter(into))] @@ -175,18 +201,23 @@ impl RestEndpoint for Request<'_> { fn parameters(&self) -> QueryParams { let mut params = QueryParams::default(); + params.push_opt("availability_zone", self.availability_zone.as_ref()); + params.push_opt("created_at", self.created_at.as_ref()); params.push_opt("description", self.description.as_ref()); - params.push_opt("name", self.name.as_ref()); - params.push_opt("id", self.id.as_ref()); - params.push_opt("project_id", self.project_id.as_ref()); params.push_opt("flavor_id", self.flavor_id.as_ref()); + params.push_opt("id", self.id.as_ref()); + params.push_opt("limit", self.limit); + params.push_opt("marker", self.marker.as_ref()); + params.push_opt("name", self.name.as_ref()); + params.push_opt("page_reverse", self.page_reverse); params.push_opt("provider", self.provider.as_ref()); + params.push_opt("project_id", self.project_id.as_ref()); + params.push_opt("updated_at", self.updated_at.as_ref()); params.push_opt("vip_address", self.vip_address.as_ref()); params.push_opt("vip_network_id", self.vip_network_id.as_ref()); params.push_opt("vip_port_id", self.vip_port_id.as_ref()); params.push_opt("vip_subnet_id", self.vip_subnet_id.as_ref()); params.push_opt("vip_qos_policy_id", self.vip_qos_policy_id.as_ref()); - params.push_opt("availability_zone", self.availability_zone.as_ref()); params.push_opt("provisioning_status", self.provisioning_status.as_ref()); params.push_opt("operating_status", self.operating_status.as_ref()); params.push_opt("tags", self.tags.as_ref()); @@ -215,6 +246,7 @@ impl RestEndpoint for Request<'_> { Some(ApiVersion::new(2, 0)) } } +impl Pageable for Request<'_> {} #[cfg(test)] mod tests { diff --git a/openstack_sdk/src/api/load_balancer/v2/pool/list.rs b/openstack_sdk/src/api/load_balancer/v2/pool/list.rs index 719661477..93f919656 100644 --- a/openstack_sdk/src/api/load_balancer/v2/pool/list.rs +++ b/openstack_sdk/src/api/load_balancer/v2/pool/list.rs @@ -34,6 +34,7 @@ use crate::api::rest_endpoint_prelude::*; use std::borrow::Cow; +use crate::api::Pageable; #[derive(Builder, Debug, Clone)] #[builder(setter(strip_option))] pub struct Request<'a> { @@ -62,11 +63,21 @@ pub struct Request<'a> { #[builder(default, setter(into))] id: Option>, + /// Page size + /// + #[builder(default)] + limit: Option, + /// The ID of the load balancer for the pool. /// #[builder(default, setter(into))] loadbalancer_id: Option>, + /// ID of the last item in the previous list + /// + #[builder(default, setter(into))] + marker: Option>, + /// Human-readable name of the resource. /// #[builder(default, setter(into))] @@ -89,6 +100,11 @@ pub struct Request<'a> { #[builder(default, setter(into))] operating_status: Option>, + /// The page direction. + /// + #[builder(default)] + page_reverse: Option, + /// The ID of the project owning this resource. /// #[builder(default, setter(into))] @@ -173,18 +189,21 @@ impl RestEndpoint for Request<'_> { fn parameters(&self) -> QueryParams { let mut params = QueryParams::default(); - params.push_opt("id", self.id.as_ref()); - params.push_opt("description", self.description.as_ref()); - params.push_opt("name", self.name.as_ref()); - params.push_opt("project_id", self.project_id.as_ref()); params.push_opt("admin_state_up", self.admin_state_up); + params.push_opt("alpn_protocols", self.alpn_protocols.as_ref()); params.push_opt("created_at", self.created_at.as_ref()); - params.push_opt("updated_at", self.updated_at.as_ref()); + params.push_opt("description", self.description.as_ref()); + params.push_opt("id", self.id.as_ref()); + params.push_opt("limit", self.limit); params.push_opt("loadbalancer_id", self.loadbalancer_id.as_ref()); + params.push_opt("marker", self.marker.as_ref()); + params.push_opt("name", self.name.as_ref()); + params.push_opt("page_reverse", self.page_reverse); + params.push_opt("project_id", self.project_id.as_ref()); params.push_opt("tls_enabled", self.tls_enabled); params.push_opt("tls_ciphers", self.tls_ciphers.as_ref()); params.push_opt("tls_versions", self.tls_versions.as_ref()); - params.push_opt("alpn_protocols", self.alpn_protocols.as_ref()); + params.push_opt("updated_at", self.updated_at.as_ref()); params.push_opt("provisioning_status", self.provisioning_status.as_ref()); params.push_opt("operating_status", self.operating_status.as_ref()); params.push_opt("tags", self.tags.as_ref()); @@ -213,6 +232,7 @@ impl RestEndpoint for Request<'_> { Some(ApiVersion::new(2, 0)) } } +impl Pageable for Request<'_> {} #[cfg(test)] mod tests { diff --git a/openstack_sdk/src/api/load_balancer/v2/pool/member/list.rs b/openstack_sdk/src/api/load_balancer/v2/pool/member/list.rs index dc98003a7..e5e5ef734 100644 --- a/openstack_sdk/src/api/load_balancer/v2/pool/member/list.rs +++ b/openstack_sdk/src/api/load_balancer/v2/pool/member/list.rs @@ -34,6 +34,7 @@ use crate::api::rest_endpoint_prelude::*; use std::borrow::Cow; +use crate::api::Pageable; #[derive(Builder, Debug, Clone)] #[builder(setter(strip_option))] pub struct Request<'a> { @@ -67,6 +68,16 @@ pub struct Request<'a> { #[builder(default, setter(into))] id: Option>, + /// Page size + /// + #[builder(default)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[builder(default, setter(into))] + marker: Option>, + /// An alternate IP address used for health monitoring a backend member. /// #[builder(default, setter(into))] @@ -99,6 +110,11 @@ pub struct Request<'a> { #[builder(default, setter(into))] operating_status: Option>, + /// The page direction. + /// + #[builder(default)] + page_reverse: Option, + /// pool_id parameter for /v2/lbaas/pools/{pool_id}/members/{member_id} API /// #[builder(default, setter(into))] @@ -195,20 +211,23 @@ impl RestEndpoint for Request<'_> { fn parameters(&self) -> QueryParams { let mut params = QueryParams::default(); - params.push_opt("id", self.id.as_ref()); + params.push_opt("address", self.address.as_ref()); + params.push_opt("admin_state_up", self.admin_state_up); + params.push_opt("backup", self.backup); + params.push_opt("created_at", self.created_at.as_ref()); params.push_opt("description", self.description.as_ref()); + params.push_opt("id", self.id.as_ref()); + params.push_opt("limit", self.limit); + params.push_opt("marker", self.marker.as_ref()); + params.push_opt("monitor_address", self.monitor_address.as_ref()); + params.push_opt("monitor_port", self.monitor_port.as_ref()); params.push_opt("name", self.name.as_ref()); + params.push_opt("page_reverse", self.page_reverse); params.push_opt("project_id", self.project_id.as_ref()); - params.push_opt("admin_state_up", self.admin_state_up); - params.push_opt("created_at", self.created_at.as_ref()); - params.push_opt("updated_at", self.updated_at.as_ref()); - params.push_opt("address", self.address.as_ref()); params.push_opt("protocol_port", self.protocol_port); params.push_opt("subnet_id", self.subnet_id.as_ref()); + params.push_opt("updated_at", self.updated_at.as_ref()); params.push_opt("weight", self.weight); - params.push_opt("monitor_address", self.monitor_address.as_ref()); - params.push_opt("monitor_port", self.monitor_port.as_ref()); - params.push_opt("backup", self.backup); params.push_opt("provisioning_status", self.provisioning_status.as_ref()); params.push_opt("operating_status", self.operating_status.as_ref()); params.push_opt("tags", self.tags.as_ref()); @@ -237,6 +256,7 @@ impl RestEndpoint for Request<'_> { Some(ApiVersion::new(2, 0)) } } +impl Pageable for Request<'_> {} #[cfg(test)] mod tests { diff --git a/openstack_sdk/src/api/load_balancer/v2/provider/list.rs b/openstack_sdk/src/api/load_balancer/v2/provider/list.rs index bf7e3f3b0..2c71d3381 100644 --- a/openstack_sdk/src/api/load_balancer/v2/provider/list.rs +++ b/openstack_sdk/src/api/load_balancer/v2/provider/list.rs @@ -29,15 +29,31 @@ use crate::api::rest_endpoint_prelude::*; use std::borrow::Cow; +use crate::api::Pageable; #[derive(Builder, Debug, Clone)] #[builder(setter(strip_option))] pub struct Request<'a> { #[builder(default, setter(into))] description: Option>, + /// Page size + /// + #[builder(default)] + limit: Option, + + /// ID of the last item in the previous list + /// + #[builder(default, setter(into))] + marker: Option>, + #[builder(default, setter(into))] name: Option>, + /// The page direction. + /// + #[builder(default)] + page_reverse: Option, + #[builder(setter(name = "_headers"), default, private)] _headers: Option, } @@ -85,7 +101,10 @@ impl RestEndpoint for Request<'_> { fn parameters(&self) -> QueryParams { let mut params = QueryParams::default(); params.push_opt("description", self.description.as_ref()); + params.push_opt("limit", self.limit); + params.push_opt("marker", self.marker.as_ref()); params.push_opt("name", self.name.as_ref()); + params.push_opt("page_reverse", self.page_reverse); params } @@ -108,6 +127,7 @@ impl RestEndpoint for Request<'_> { Some(ApiVersion::new(2, 0)) } } +impl Pageable for Request<'_> {} #[cfg(test)] mod tests {