openstack_keystone_core/
plugin_manager.rs1use std::sync::Arc;
24
25use crate::application_credential::{
26 ApplicationCredentialProviderError, backend::ApplicationCredentialBackend,
27};
28use crate::assignment::backend::AssignmentBackend;
29use crate::assignment::error::AssignmentProviderError;
30use crate::catalog::backend::CatalogBackend;
31use crate::catalog::error::CatalogProviderError;
32use crate::federation::backend::FederationBackend;
33use crate::federation::error::FederationProviderError;
34use crate::identity::backend::IdentityBackend;
35use crate::identity::error::IdentityProviderError;
36use crate::identity_mapping::IdentityMappingProviderError;
37use crate::identity_mapping::backend::IdentityMappingBackend;
38use crate::k8s_auth::K8sAuthProviderError;
39use crate::k8s_auth::backend::K8sAuthBackend;
40use crate::resource::backend::ResourceBackend;
41use crate::resource::error::ResourceProviderError;
42use crate::revoke::RevokeProviderError;
43use crate::revoke::backend::RevokeBackend;
44use crate::role::RoleProviderError;
45use crate::role::backend::RoleBackend;
46use crate::token::TokenProviderError;
47use crate::token::backend::TokenRestrictionBackend;
48use crate::trust::TrustProviderError;
49use crate::trust::backend::TrustBackend;
50
51pub trait PluginManagerApi {
53 fn get_application_credential_backend<S: AsRef<str>>(
55 &self,
56 name: S,
57 ) -> Result<&Arc<dyn ApplicationCredentialBackend>, ApplicationCredentialProviderError>;
58
59 fn get_assignment_backend<S: AsRef<str>>(
61 &self,
62 name: S,
63 ) -> Result<&Arc<dyn AssignmentBackend>, AssignmentProviderError>;
64
65 fn get_catalog_backend<S: AsRef<str>>(
67 &self,
68 name: S,
69 ) -> Result<&Arc<dyn CatalogBackend>, CatalogProviderError>;
70
71 fn get_federation_backend<S: AsRef<str>>(
73 &self,
74 name: S,
75 ) -> Result<&Arc<dyn FederationBackend>, FederationProviderError>;
76
77 fn get_identity_backend<S: AsRef<str>>(
79 &self,
80 name: S,
81 ) -> Result<&Arc<dyn IdentityBackend>, IdentityProviderError>;
82
83 fn get_identity_mapping_backend<S: AsRef<str>>(
85 &self,
86 name: S,
87 ) -> Result<&Arc<dyn IdentityMappingBackend>, IdentityMappingProviderError>;
88
89 fn get_k8s_auth_backend<S: AsRef<str>>(
91 &self,
92 name: S,
93 ) -> Result<&Arc<dyn K8sAuthBackend>, K8sAuthProviderError>;
94
95 fn get_resource_backend<S: AsRef<str>>(
97 &self,
98 name: S,
99 ) -> Result<&Arc<dyn ResourceBackend>, ResourceProviderError>;
100
101 fn get_revoke_backend<S: AsRef<str>>(
103 &self,
104 name: S,
105 ) -> Result<&Arc<dyn RevokeBackend>, RevokeProviderError>;
106
107 fn get_role_backend<S: AsRef<str>>(
109 &self,
110 name: S,
111 ) -> Result<&Arc<dyn RoleBackend>, RoleProviderError>;
112
113 fn get_token_restriction_backend<S: AsRef<str>>(
115 &self,
116 name: S,
117 ) -> Result<&Arc<dyn TokenRestrictionBackend>, TokenProviderError>;
118
119 fn get_trust_backend<S: AsRef<str>>(
121 &self,
122 name: S,
123 ) -> Result<&Arc<dyn TrustBackend>, TrustProviderError>;
124
125 fn register_application_credential_backend<S: AsRef<str>>(
127 &mut self,
128 name: S,
129 plugin: Arc<dyn ApplicationCredentialBackend>,
130 );
131
132 fn register_assignment_backend<S: AsRef<str>>(
134 &mut self,
135 name: S,
136 plugin: Arc<dyn AssignmentBackend>,
137 );
138
139 fn register_catalog_backend<S: AsRef<str>>(&mut self, name: S, plugin: Arc<dyn CatalogBackend>);
141
142 fn register_federation_backend<S: AsRef<str>>(
144 &mut self,
145 name: S,
146 plugin: Arc<dyn FederationBackend>,
147 );
148
149 fn register_identity_backend<S: AsRef<str>>(
151 &mut self,
152 name: S,
153 plugin: Arc<dyn IdentityBackend>,
154 );
155
156 fn register_identity_mapping_backend<S: AsRef<str>>(
158 &mut self,
159 name: S,
160 plugin: Arc<dyn IdentityMappingBackend>,
161 );
162
163 fn register_k8s_auth_backend<S: AsRef<str>>(
165 &mut self,
166 name: S,
167 plugin: Arc<dyn K8sAuthBackend>,
168 );
169
170 fn register_resource_backend<S: AsRef<str>>(
172 &mut self,
173 name: S,
174 plugin: Arc<dyn ResourceBackend>,
175 );
176
177 fn register_revoke_backend<S: AsRef<str>>(&mut self, name: S, plugin: Arc<dyn RevokeBackend>);
179
180 fn register_role_backend<S: AsRef<str>>(&mut self, name: S, plugin: Arc<dyn RoleBackend>);
182
183 fn register_token_restriction_backend<S: AsRef<str>>(
185 &mut self,
186 name: S,
187 plugin: Arc<dyn TokenRestrictionBackend>,
188 );
189
190 fn register_trust_backend<S: AsRef<str>>(&mut self, name: S, plugin: Arc<dyn TrustBackend>);
192}