DIFF action for a Helm blueprint: render values + qovery_helm template, run `terraform plan`, return the human-readable plan output. Never applies.
(
working_dir: &Path,
lib_root_dir: &str,
spec: &ResolvedHelmSpec,
request: &BlueprintRequest,
blueprint_info: &BlueprintInfo,
event_details: &EventDetails,
logger: &dyn Lo
| 85 | /// DIFF action for a Helm blueprint: render values + qovery_helm template, run `terraform plan`, |
| 86 | /// return the human-readable plan output. Never applies. |
| 87 | pub fn execute_diff( |
| 88 | working_dir: &Path, |
| 89 | lib_root_dir: &str, |
| 90 | spec: &ResolvedHelmSpec, |
| 91 | request: &BlueprintRequest, |
| 92 | blueprint_info: &BlueprintInfo, |
| 93 | event_details: &EventDetails, |
| 94 | logger: &dyn Logger, |
| 95 | ) -> Result<String, Box<EngineError>> { |
| 96 | let rendered_values = render_values_yaml(working_dir, &request.variables).map_err(|e| { |
| 97 | Box::new(EngineError::new_blueprint_error( |
| 98 | event_details.clone(), |
| 99 | BlueprintError::TerraformGenerationError(format!("Failed to render values.yaml: {}", e)), |
| 100 | )) |
| 101 | })?; |
| 102 | |
| 103 | let template_dir = PathBuf::from(lib_root_dir).join("blueprint").join("helm"); |
| 104 | let ctx = |
| 105 | tera::Context::from_serialize(BlueprintHelmTeraContext::new(spec, request, blueprint_info, rendered_values)) |
| 106 | .map_err(|e| { |
| 107 | Box::new(EngineError::new_blueprint_error( |
| 108 | event_details.clone(), |
| 109 | BlueprintError::TerraformGenerationError(format!("Failed to build Tera context: {}", e)), |
| 110 | )) |
| 111 | })?; |
| 112 | |
| 113 | render_and_diff( |
| 114 | &template_dir, |
| 115 | &ctx, |
| 116 | &request.qovery_api_token, |
| 117 | "qovery_helm", |
| 118 | event_details, |
| 119 | logger, |
| 120 | ) |
| 121 | } |
| 122 | |
| 123 | /// Render the blueprint's values.yaml template with Tera, replacing {{ var }} placeholders. |
| 124 | /// Returns None if no values.yaml exists. |
no test coverage detected