1use std::pin::Pin;
4
5use manta_backend_dispatcher::{
6 error::Error,
7 interfaces::cfs::CfsTrait,
8 types::{
9 Group, K8sDetails,
10 bos::session_template::BosSessionTemplate,
11 bss::BootParameters,
12 cfs::{
13 cfs_configuration_details::LayerDetails,
14 cfs_configuration_request::CfsConfigurationRequest,
15 cfs_configuration_response::{CfsConfigurationResponse, Layer},
16 component::Component as CfsComponent,
17 session::{CfsSessionGetResponse, CfsSessionPostRequest},
18 },
19 ims::Image,
20 },
21};
22
23use StaticBackendDispatcher::*;
24use chrono::NaiveDateTime;
25use futures::AsyncBufRead;
26
27use crate::manta_backend_dispatcher::StaticBackendDispatcher;
28
29impl CfsTrait for StaticBackendDispatcher {
30 type T = Pin<Box<dyn AsyncBufRead + Send>>;
31
32 async fn get_session_logs_stream(
33 &self,
34 shasta_token: &str,
35 site_name: &str,
36 cfs_session_name: &str,
37 timestamps: bool,
38 k8s: &K8sDetails,
39 ) -> Result<Pin<Box<dyn AsyncBufRead + Send>>, Error> {
40 dispatch!(
41 self,
42 get_session_logs_stream,
43 shasta_token,
44 site_name,
45 cfs_session_name,
46 timestamps,
47 k8s
48 )
49 }
50
51 async fn get_session_logs_stream_by_xname(
52 &self,
53 auth_token: &str,
54 site_name: &str,
55 xname: &str,
56 timestamps: bool,
57 k8s: &K8sDetails,
58 ) -> Result<Pin<Box<dyn AsyncBufRead + Send>>, Error> {
59 dispatch!(
60 self,
61 get_session_logs_stream_by_xname,
62 auth_token,
63 site_name,
64 xname,
65 timestamps,
66 k8s
67 )
68 }
69
70 async fn post_session(
71 &self,
72 shasta_token: &str,
73 shasta_base_url: &str,
74 shasta_root_cert: &[u8],
75 session: &CfsSessionPostRequest,
76 ) -> Result<CfsSessionGetResponse, Error> {
77 dispatch!(
78 self,
79 post_session,
80 shasta_token,
81 shasta_base_url,
82 shasta_root_cert,
83 session
84 )
85 }
86
87 async fn get_sessions(
88 &self,
89 auth_token: &str,
90 base_url: &str,
91 root_cert: &[u8],
92 session_name_opt: Option<&String>,
93 limit_opt: Option<u8>,
94 after_id_opt: Option<String>,
95 min_age_opt: Option<String>,
96 max_age_opt: Option<String>,
97 status_opt: Option<String>,
98 name_contains_opt: Option<String>,
99 is_succeded_opt: Option<bool>,
100 tags_opt: Option<String>,
101 ) -> Result<Vec<CfsSessionGetResponse>, Error> {
102 dispatch!(
103 self,
104 get_sessions,
105 auth_token,
106 base_url,
107 root_cert,
108 session_name_opt,
109 limit_opt,
110 after_id_opt,
111 min_age_opt,
112 max_age_opt,
113 status_opt,
114 name_contains_opt,
115 is_succeded_opt,
116 tags_opt
117 )
118 }
119
120 async fn get_and_filter_sessions(
121 &self,
122 shasta_token: &str,
123 shasta_base_url: &str,
124 shasta_root_cert: &[u8],
125 hsm_group_name_vec: Vec<String>,
126 xname_vec: Vec<&str>,
127 min_age_opt: Option<&String>,
128 max_age_opt: Option<&String>,
129 type_opt: Option<&String>,
130 status_opt: Option<&String>,
131 cfs_session_name_opt: Option<&String>,
132 limit_number_opt: Option<&u8>,
133 is_succeded_opt: Option<bool>,
134 ) -> Result<Vec<CfsSessionGetResponse>, Error> {
135 dispatch!(
136 self,
137 get_and_filter_sessions,
138 shasta_token,
139 shasta_base_url,
140 shasta_root_cert,
141 hsm_group_name_vec,
142 xname_vec,
143 min_age_opt,
144 max_age_opt,
145 type_opt,
146 status_opt,
147 cfs_session_name_opt,
148 limit_number_opt,
149 is_succeded_opt
150 )
151 }
152
153 async fn delete_and_cancel_session(
154 &self,
155 shasta_token: &str,
156 shasta_base_url: &str,
157 shasta_root_cert: &[u8],
158 group_available_vec: &[Group],
159 cfs_session: &CfsSessionGetResponse,
160 cfs_component_vec: &[CfsComponent],
161 bss_bootparameter_vec: &[BootParameters],
162 dry_run: bool,
163 ) -> Result<(), Error> {
164 dispatch!(
165 self,
166 delete_and_cancel_session,
167 shasta_token,
168 shasta_base_url,
169 shasta_root_cert,
170 group_available_vec,
171 cfs_session,
172 cfs_component_vec,
173 bss_bootparameter_vec,
174 dry_run
175 )
176 }
177
178 async fn create_configuration_from_repos(
179 &self,
180 gitea_token: &str,
181 gitea_base_url: &str,
182 shasta_root_cert: &[u8],
183 repo_name_vec: &[&str],
184 local_git_commit_vec: &[&str],
185 playbook_file_name_opt: Option<&str>,
186 ) -> Result<CfsConfigurationRequest, Error> {
187 dispatch!(
188 self,
189 create_configuration_from_repos,
190 gitea_token,
191 gitea_base_url,
192 shasta_root_cert,
193 repo_name_vec,
194 local_git_commit_vec,
195 playbook_file_name_opt
196 )
197 }
198
199 async fn get_configuration(
200 &self,
201 auth_token: &str,
202 base_url: &str,
203 root_cert: &[u8],
204 cfs_configuration_name_opt: Option<&String>,
205 ) -> Result<Vec<CfsConfigurationResponse>, Error> {
206 dispatch!(
207 self,
208 get_configuration,
209 auth_token,
210 base_url,
211 root_cert,
212 cfs_configuration_name_opt
213 )
214 }
215
216 async fn get_and_filter_configuration(
217 &self,
218 auth_token: &str,
219 base_url: &str,
220 root_cert: &[u8],
221 configuration_name: Option<&str>,
222 configuration_name_pattern: Option<&str>,
223 hsm_group_name_vec: &[String],
224 since_opt: Option<NaiveDateTime>,
225 until_opt: Option<NaiveDateTime>,
226 limit_number_opt: Option<&u8>,
227 ) -> Result<Vec<CfsConfigurationResponse>, Error> {
228 dispatch!(
229 self,
230 get_and_filter_configuration,
231 auth_token,
232 base_url,
233 root_cert,
234 configuration_name,
235 configuration_name_pattern,
236 hsm_group_name_vec,
237 since_opt,
238 until_opt,
239 limit_number_opt
240 )
241 }
242
243 async fn get_configuration_layer_details(
244 &self,
245 shasta_root_cert: &[u8],
246 gitea_base_url: &str,
247 gitea_token: &str,
248 layer: Layer,
249 site_name: &str,
250 ) -> Result<LayerDetails, Error> {
251 dispatch!(
252 self,
253 get_configuration_layer_details,
254 shasta_root_cert,
255 gitea_base_url,
256 gitea_token,
257 layer,
258 site_name
259 )
260 }
261
262 async fn update_runtime_configuration(
263 &self,
264 auth_token: &str,
265 base_url: &str,
266 root_cert: &[u8],
267 xnames: &[String],
268 desired_configuration: &str,
269 enabled: bool,
270 ) -> Result<(), Error> {
271 dispatch!(
272 self,
273 update_runtime_configuration,
274 auth_token,
275 base_url,
276 root_cert,
277 xnames,
278 desired_configuration,
279 enabled
280 )
281 }
282
283 async fn put_configuration(
284 &self,
285 shasta_token: &str,
286 shasta_base_url: &str,
287 shasta_root_cert: &[u8],
288 configuration: &CfsConfigurationRequest,
289 configuration_name: &str,
290 overwrite: bool,
291 ) -> Result<CfsConfigurationResponse, Error> {
292 dispatch!(
293 self,
294 put_configuration,
295 shasta_token,
296 shasta_base_url,
297 shasta_root_cert,
298 configuration,
299 configuration_name,
300 overwrite
301 )
302 }
303
304 async fn get_derivatives(
307 &self,
308 auth_token: &str,
309 base_url: &str,
310 root_cert: &[u8],
311 configuration_name: &str,
312 ) -> Result<
313 (
314 Option<Vec<CfsSessionGetResponse>>,
315 Option<Vec<BosSessionTemplate>>,
316 Option<Vec<Image>>,
317 ),
318 Error,
319 > {
320 dispatch!(
321 self,
322 get_derivatives,
323 auth_token,
324 base_url,
325 root_cert,
326 configuration_name
327 )
328 }
329
330 async fn get_cfs_components(
331 &self,
332 shasta_token: &str,
333 shasta_base_url: &str,
334 shasta_root_cert: &[u8],
335 configuration_name: Option<&str>,
336 components_ids: Option<&str>,
337 status: Option<&str>,
338 ) -> Result<
339 Vec<manta_backend_dispatcher::types::cfs::component::Component>,
340 Error,
341 > {
342 dispatch!(
343 self,
344 get_cfs_components,
345 shasta_token,
346 shasta_base_url,
347 shasta_root_cert,
348 configuration_name,
349 components_ids,
350 status
351 )
352 }
353}