[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