manta_server/service/
sat_file.rs1use std::collections::HashMap;
14
15use manta_backend_dispatcher::error::Error;
16use manta_backend_dispatcher::interfaces::apply_sat_file::{
17 ApplyConfigurationParams, ApplyImageCreateSessionParams,
18 ApplyImageStampParams, ApplySessionTemplateParams, SatTrait,
19};
20use manta_backend_dispatcher::types::bos::{
21 session::BosSession, session_template::BosSessionTemplate,
22};
23use manta_backend_dispatcher::types::cfs::cfs_configuration_response::CfsConfigurationResponse;
24use manta_backend_dispatcher::types::cfs::session::CfsSessionGetResponse;
25use manta_backend_dispatcher::types::ims::Image;
26
27use crate::server::common::app_context::InfraContext;
28use crate::service::authorization;
29
30#[allow(clippy::too_many_arguments)]
36pub async fn apply_configuration(
37 infra: &InfraContext<'_>,
38 token: &str,
39 vault_base_url: &str,
40 k8s_api_url: &str,
41 gitea_token: &str,
42 configuration: serde_json::Value,
43 dry_run: bool,
44 overwrite: bool,
45) -> Result<CfsConfigurationResponse, Error> {
46 infra
47 .backend
48 .apply_configuration(ApplyConfigurationParams {
49 shasta_token: token,
50 vault_base_url,
51 site_name: infra.site_name,
52 k8s_api_url,
53 gitea_base_url: infra.gitea_base_url,
54 gitea_token,
55 configuration,
56 dry_run,
57 overwrite,
58 })
59 .await
60}
61
62#[allow(clippy::too_many_arguments)]
70pub async fn create_image_cfs_session(
71 infra: &InfraContext<'_>,
72 token: &str,
73 vault_base_url: &str,
74 k8s_api_url: &str,
75 image: serde_json::Value,
76 ref_lookup: HashMap<String, String>,
77 ansible_verbosity: Option<u8>,
78 ansible_passthrough: Option<&str>,
79 dry_run: bool,
80) -> Result<CfsSessionGetResponse, Error> {
81 infra
82 .backend
83 .apply_sat_image_create_session(ApplyImageCreateSessionParams {
84 shasta_token: token,
85 vault_base_url,
86 site_name: infra.site_name,
87 k8s_api_url,
88 image,
89 ref_lookup,
90 ansible_verbosity,
91 ansible_passthrough,
92 dry_run,
93 })
94 .await
95}
96
97pub async fn stamp_image_from_session(
105 infra: &InfraContext<'_>,
106 token: &str,
107 cfs_session_name: &str,
108) -> Result<Image, Error> {
109 infra
110 .backend
111 .apply_sat_image_stamp_from_session(ApplyImageStampParams {
112 shasta_token: token,
113 cfs_session_name,
114 })
115 .await
116}
117
118pub async fn apply_session_template(
127 infra: &InfraContext<'_>,
128 token: &str,
129 session_template: serde_json::Value,
130 ref_lookup: HashMap<String, String>,
131 target_groups: &[String],
132 reboot: bool,
133 dry_run: bool,
134) -> Result<(BosSessionTemplate, Option<BosSession>), Error> {
135 let hsm_group_available_vec =
136 authorization::fetch_group_names_and_validate_access(
137 infra,
138 token,
139 target_groups,
140 )
141 .await?;
142 infra
143 .backend
144 .apply_session_template(ApplySessionTemplateParams {
145 shasta_token: token,
146 session_template,
147 ref_lookup,
148 hsm_group_available_vec: &hsm_group_available_vec,
149 reboot,
150 dry_run,
151 })
152 .await
153}