Skip to main content

openstack_keystone_core/federation/
backend.rs

1// Licensed under the Apache License, Version 2.0 (the "License");
2// you may not use this file except in compliance with the License.
3// You may obtain a copy of the License at
4//
5//     http://www.apache.org/licenses/LICENSE-2.0
6//
7// Unless required by applicable law or agreed to in writing, software
8// distributed under the License is distributed on an "AS IS" BASIS,
9// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10// See the License for the specific language governing permissions and
11// limitations under the License.
12//
13// SPDX-License-Identifier: Apache-2.0
14
15use async_trait::async_trait;
16
17use crate::federation::FederationProviderError;
18use crate::federation::types::*;
19use crate::keystone::ServiceState;
20
21/// Backend driver interface for the Federation Provider.
22#[cfg_attr(test, mockall::automock)]
23#[async_trait]
24pub trait FederationBackend: Send + Sync {
25    /// Cleanup expired resources.
26    async fn cleanup(&self, state: &ServiceState) -> Result<(), FederationProviderError>;
27
28    /// Create new authentication state.
29    async fn create_auth_state(
30        &self,
31        state: &ServiceState,
32        auth_state: AuthState,
33    ) -> Result<AuthState, FederationProviderError>;
34
35    /// Create Identity provider.
36    async fn create_identity_provider(
37        &self,
38        state: &ServiceState,
39        idp: IdentityProviderCreate,
40    ) -> Result<IdentityProvider, FederationProviderError>;
41
42    /// Create mapping.
43    async fn create_mapping(
44        &self,
45        state: &ServiceState,
46        idp: Mapping,
47    ) -> Result<Mapping, FederationProviderError>;
48
49    /// Delete authentication state.
50    async fn delete_auth_state<'a>(
51        &self,
52        state: &ServiceState,
53        id: &'a str,
54    ) -> Result<(), FederationProviderError>;
55
56    /// Delete identity provider.
57    async fn delete_identity_provider<'a>(
58        &self,
59        state: &ServiceState,
60        id: &'a str,
61    ) -> Result<(), FederationProviderError>;
62
63    /// Delete mapping.
64    async fn delete_mapping<'a>(
65        &self,
66        state: &ServiceState,
67        id: &'a str,
68    ) -> Result<(), FederationProviderError>;
69
70    /// Get authentication state.
71    async fn get_auth_state<'a>(
72        &self,
73        state: &ServiceState,
74        id: &'a str,
75    ) -> Result<Option<AuthState>, FederationProviderError>;
76
77    /// Get single identity provider by ID.
78    async fn get_identity_provider<'a>(
79        &self,
80        state: &ServiceState,
81        id: &'a str,
82    ) -> Result<Option<IdentityProvider>, FederationProviderError>;
83
84    /// Get single mapping by ID.
85    async fn get_mapping<'a>(
86        &self,
87        state: &ServiceState,
88        id: &'a str,
89    ) -> Result<Option<Mapping>, FederationProviderError>;
90
91    /// List Identity Providers.
92    async fn list_identity_providers(
93        &self,
94        state: &ServiceState,
95        params: &IdentityProviderListParameters,
96    ) -> Result<Vec<IdentityProvider>, FederationProviderError>;
97
98    /// List Identity Providers.
99    async fn list_mappings(
100        &self,
101        state: &ServiceState,
102        params: &MappingListParameters,
103    ) -> Result<Vec<Mapping>, FederationProviderError>;
104
105    /// Update Identity provider.
106    async fn update_identity_provider<'a>(
107        &self,
108        state: &ServiceState,
109        id: &'a str,
110        idp: IdentityProviderUpdate,
111    ) -> Result<IdentityProvider, FederationProviderError>;
112
113    /// Update mapping.
114    async fn update_mapping<'a>(
115        &self,
116        state: &ServiceState,
117        id: &'a str,
118        idp: MappingUpdate,
119    ) -> Result<Mapping, FederationProviderError>;
120}