[pdm-devel] [PATCH datacenter-manager 1/7] server: api: add remote-type search category for resources
Christian Ebner
c.ebner at proxmox.com
Tue Oct 14 11:01:43 CEST 2025
On 10/14/25 10:35 AM, Dominik Csapak wrote:
> one comment inline
>
> On 10/13/25 10:56 AM, Christian Ebner wrote:
>> Extend the current search capability for resources by adding the
>> `RemoteType` search category, allowing to selectively filter remotes
>> of type PVE and PBS. While extending the search capabilities, this
>> will also be used to filter the resources to be gathered on status
>> api calls, to refine statistics based on remote type.
>>
>> Since the current remote filtering is only applied in case of remotes
>> only search, add an additional helper to pre-filter the to be fetched
>> resources by the remote type.
>>
>> With this it is now possible to search, e.g. `remote-type:pbs` to
>> only get resources from PBS remotes.
>>
>> Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
>> ---
>> server/src/api/resources.rs | 44 +++++++++++++++++++++++++++++++++----
>> 1 file changed, 40 insertions(+), 4 deletions(-)
>>
>> diff --git a/server/src/api/resources.rs b/server/src/api/resources.rs
>> index f4f56bc..029106f 100644
>> --- a/server/src/api/resources.rs
>> +++ b/server/src/api/resources.rs
>> @@ -56,6 +56,7 @@ enum MatchCategory {
>> Status,
>> Template,
>> Remote,
>> + RemoteType,
>> }
>> impl std::str::FromStr for MatchCategory {
>> @@ -69,6 +70,7 @@ impl std::str::FromStr for MatchCategory {
>> "status" => MatchCategory::Status,
>> "template" => MatchCategory::Template,
>> "remote" => MatchCategory::Remote,
>> + "remote-type" => MatchCategory::RemoteType,
>> _ => bail!("invalid category"),
>> };
>> Ok(category)
>> @@ -88,11 +90,18 @@ impl MatchCategory {
>> (Ok(a), Ok(b)) => a == b,
>> _ => false,
>> },
>> + MatchCategory::RemoteType => match (
>> + RemoteType::from_str(value),
>> + RemoteType::from_str(search_term),
>> + ) {
>> + (Ok(a), Ok(b)) => a == b,
>> + _ => false,
>> + },
>> }
>> }
>> }
>> -// returns None if we can't decide if it matches, currently only for
>> the `Remote` category`
>> +// returns None if we can't decide if it matches, currently only for
>> the `RemoteType` category
>> fn resource_matches_search_term(
>> remote_name: &str,
>> resource: &Resource,
>> @@ -112,6 +121,7 @@ fn resource_matches_search_term(
>> _ => false,
>> },
>> MatchCategory::Remote => category.matches(remote_name,
>> &term.value),
>> + MatchCategory::RemoteType => return None,
>> },
>> Some(Err(_)) => false,
>> None => {
>> @@ -122,7 +132,12 @@ fn resource_matches_search_term(
>> Some(matches)
>> }
>> -fn remote_matches_search_term(remote_name: &str, online:
>> Option<bool>, term: &SearchTerm) -> bool {
>> +fn remote_matches_search_term(
>> + remote_name: &str,
>> + online: Option<bool>,
>> + remote_type: Option<RemoteType>,
>> + term: &SearchTerm,
>
> maybe we could just pass '&Remote' here?
> then we don't have to add a new parameter in case we want extra info
> from the remote in the future?
Yes, makes sense to already have that in place. Will see to adapt that
accordingly.
More information about the pdm-devel
mailing list