openstack_keystone_core/catalog/
backend.rs1use async_trait::async_trait;
16
17use crate::catalog::error::CatalogProviderError;
18use crate::catalog::types::{Endpoint, EndpointListParameters, Service, ServiceListParameters};
19use crate::keystone::ServiceState;
20
21#[cfg_attr(test, mockall::automock)]
22#[async_trait]
23pub trait CatalogBackend: Send + Sync {
24 async fn list_services(
26 &self,
27 state: &ServiceState,
28 params: &ServiceListParameters,
29 ) -> Result<Vec<Service>, CatalogProviderError>;
30
31 async fn get_service<'a>(
33 &self,
34 state: &ServiceState,
35 id: &'a str,
36 ) -> Result<Option<Service>, CatalogProviderError>;
37
38 async fn list_endpoints(
40 &self,
41 state: &ServiceState,
42 params: &EndpointListParameters,
43 ) -> Result<Vec<Endpoint>, CatalogProviderError>;
44
45 async fn get_endpoint<'a>(
47 &self,
48 state: &ServiceState,
49 id: &'a str,
50 ) -> Result<Option<Endpoint>, CatalogProviderError>;
51
52 async fn get_catalog(
54 &self,
55 state: &ServiceState,
56 enabled: bool,
57 ) -> Result<Vec<(Service, Vec<Endpoint>)>, CatalogProviderError>;
58}