@@ -13,6 +13,7 @@ use containerd_shim_wasm::{
1313use futures:: future;
1414use log:: info;
1515use spin_app:: locked:: LockedApp ;
16+ use spin_factor_outbound_networking:: validate_service_chaining_for_components;
1617use spin_trigger:: cli:: NoCliArgs ;
1718use spin_trigger_http:: HttpTrigger ;
1819use spin_trigger_redis:: RedisTrigger ;
@@ -156,14 +157,18 @@ impl SpinEngine {
156157 let cache = initialize_cache ( ) . await ?;
157158 let app_source = Source :: from_ctx ( ctx, & cache) . await ?;
158159 let mut locked_app = app_source. to_locked_app ( & cache) . await ?;
159- let components_to_execute = env:: var ( constants:: SPIN_COMPONENTS_TO_RETAIN_ENV )
160- . ok ( )
161- . map ( |s| s. split ( ',' ) . map ( |s| s. to_string ( ) ) . collect :: < Vec < String > > ( ) ) ;
162- if let Some ( components) = components_to_execute {
163- if let Err ( e) = crate :: retain:: retain_components ( & mut locked_app, & components) {
164- println ! ( "Error with selective deployment: {:?}" , e) ;
165- return Err ( e) ;
166- }
160+ if let Ok ( components_env) = env:: var ( constants:: SPIN_COMPONENTS_TO_RETAIN_ENV ) {
161+ let components = components_env. split ( ',' ) . collect :: < Vec < & str > > ( ) ;
162+ locked_app = spin_app:: retain_components (
163+ locked_app,
164+ & components,
165+ & [ & validate_service_chaining_for_components] ,
166+ )
167+ . with_context ( || {
168+ format ! (
169+ "failed to resolve application with only [{components:?}] components retained" ,
170+ )
171+ } ) ?;
167172 }
168173 configure_application_variables_from_environment_variables ( & locked_app) ?;
169174 let trigger_cmds = get_supported_triggers ( & locked_app)
0 commit comments