openstack_keystone_core/role/
backend.rs1use async_trait::async_trait;
16use std::collections::{BTreeMap, BTreeSet};
17
18use crate::keystone::ServiceState;
19use crate::role::{RoleProviderError, types::role::*};
20
21#[cfg_attr(test, mockall::automock)]
22#[async_trait]
23pub trait RoleBackend: Send + Sync {
24 async fn create_role(
26 &self,
27 state: &ServiceState,
28 params: RoleCreate,
29 ) -> Result<Role, RoleProviderError>;
30
31 async fn delete_role<'a>(
33 &self,
34 state: &ServiceState,
35 id: &'a str,
36 ) -> Result<(), RoleProviderError>;
37
38 async fn get_role<'a>(
40 &self,
41 state: &ServiceState,
42 id: &'a str,
43 ) -> Result<Option<Role>, RoleProviderError>;
44
45 async fn expand_implied_roles(
47 &self,
48 state: &ServiceState,
49 roles: &mut Vec<RoleRef>,
50 ) -> Result<(), RoleProviderError>;
51
52 async fn list_imply_rules(
54 &self,
55 state: &ServiceState,
56 resolve: bool,
57 ) -> Result<BTreeMap<String, BTreeSet<String>>, RoleProviderError>;
58
59 async fn list_roles(
61 &self,
62 state: &ServiceState,
63 params: &RoleListParameters,
64 ) -> Result<Vec<Role>, RoleProviderError>;
65}