openstack_keystone_core/resource/
backend.rs1use async_trait::async_trait;
16
17use crate::keystone::ServiceState;
18use crate::resource::ResourceProviderError;
19use crate::resource::types::*;
20
21#[cfg_attr(test, mockall::automock)]
23#[async_trait]
24pub trait ResourceBackend: Send + Sync {
25 async fn get_domain_enabled<'a>(
27 &self,
28 state: &ServiceState,
29 domain_id: &'a str,
30 ) -> Result<bool, ResourceProviderError>;
31
32 async fn create_domain(
34 &self,
35 state: &ServiceState,
36 domain: DomainCreate,
37 ) -> Result<Domain, ResourceProviderError>;
38
39 async fn create_project(
41 &self,
42 state: &ServiceState,
43 project: ProjectCreate,
44 ) -> Result<Project, ResourceProviderError>;
45
46 async fn delete_domain<'a>(
48 &self,
49 state: &ServiceState,
50 id: &'a str,
51 ) -> Result<(), ResourceProviderError>;
52
53 async fn delete_project<'a>(
55 &self,
56 state: &ServiceState,
57 id: &'a str,
58 ) -> Result<(), ResourceProviderError>;
59
60 async fn get_domain<'a>(
62 &self,
63 state: &ServiceState,
64 domain_id: &'a str,
65 ) -> Result<Option<Domain>, ResourceProviderError>;
66
67 async fn get_domain_by_name<'a>(
69 &self,
70 state: &ServiceState,
71 domain_name: &'a str,
72 ) -> Result<Option<Domain>, ResourceProviderError>;
73
74 async fn get_project<'a>(
76 &self,
77 state: &ServiceState,
78 project_id: &'a str,
79 ) -> Result<Option<Project>, ResourceProviderError>;
80
81 async fn get_project_by_name<'a>(
83 &self,
84 state: &ServiceState,
85 name: &'a str,
86 domain_id: &'a str,
87 ) -> Result<Option<Project>, ResourceProviderError>;
88
89 async fn get_project_parents<'a>(
91 &self,
92 state: &ServiceState,
93 project_id: &'a str,
94 ) -> Result<Option<Vec<Project>>, ResourceProviderError>;
95
96 async fn list_domains(
98 &self,
99 state: &ServiceState,
100 params: &DomainListParameters,
101 ) -> Result<Vec<Domain>, ResourceProviderError>;
102
103 async fn list_projects(
105 &self,
106 state: &ServiceState,
107 params: &ProjectListParameters,
108 ) -> Result<Vec<Project>, ResourceProviderError>;
109}