@@ -113,6 +113,8 @@ pub struct DeployResult {
113113 pub deployment_id : Option < i64 > ,
114114 /// Stacker server project ID (set for remote orchestrator deploys).
115115 pub project_id : Option < i64 > ,
116+ /// Server name used/generated for this deploy (for lockfile persistence).
117+ pub server_name : Option < String > ,
116118}
117119
118120// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
@@ -212,6 +214,7 @@ impl DeployStrategy for LocalDeploy {
212214 server_ip : None ,
213215 deployment_id : None ,
214216 project_id : None ,
217+ server_name : None ,
215218 } )
216219 }
217220
@@ -432,6 +435,7 @@ impl DeployStrategy for CloudDeploy {
432435 server_ip : None ,
433436 deployment_id : None ,
434437 project_id : None ,
438+ server_name : None ,
435439 } ) ;
436440 }
437441
@@ -466,7 +470,7 @@ impl DeployStrategy for CloudDeploy {
466470 reason : format ! ( "Failed to initialize async runtime: {}" , e) ,
467471 } ) ?;
468472
469- let response = rt. block_on ( async {
473+ let ( response, effective_server_name ) = rt. block_on ( async {
470474 let client = StackerClient :: new ( & base_url, & creds. access_token ) ;
471475
472476 // Step 1: Resolve or auto-create project
@@ -629,6 +633,17 @@ impl DeployStrategy for CloudDeploy {
629633
630634 // Step 4: Build deploy form
631635 let mut deploy_form = stacker_client:: build_deploy_form ( config) ;
636+
637+ // Capture the server name from the form (auto-generated or overridden)
638+ // so we can persist it in the deployment lock even if the API fetch
639+ // after deploy doesn't return server details yet.
640+ let effective_server_name = server_name. clone ( ) . or_else ( || {
641+ deploy_form
642+ . get ( "server" )
643+ . and_then ( |s| s. get ( "name" ) )
644+ . and_then ( |n| n. as_str ( ) )
645+ . map ( |s| s. to_string ( ) )
646+ } ) ;
632647 if let Some ( sid) = server_id {
633648 if let Some ( server_obj) = deploy_form. get_mut ( "server" ) {
634649 if let Some ( obj) = server_obj. as_object_mut ( ) {
@@ -672,7 +687,7 @@ impl DeployStrategy for CloudDeploy {
672687 eprintln ! ( " Deploying project '{}' (id={})..." , project_name, project. id) ;
673688 let resp = client. deploy ( project. id , cloud_id, deploy_form) . await ?;
674689
675- Ok ( resp)
690+ Ok ( ( resp, effective_server_name ) )
676691 } ) . map_err ( |e : CliError | e) ?;
677692
678693 let deploy_id = response
@@ -709,6 +724,7 @@ impl DeployStrategy for CloudDeploy {
709724 server_ip : None ,
710725 deployment_id : deploy_id,
711726 project_id : project_id. map ( |id| id as i64 ) ,
727+ server_name : effective_server_name,
712728 } ) ;
713729 }
714730 }
@@ -739,6 +755,7 @@ impl DeployStrategy for CloudDeploy {
739755 server_ip : extract_server_ip ( & output. stdout ) ,
740756 deployment_id : None ,
741757 project_id : None ,
758+ server_name : None ,
742759 } )
743760 }
744761
@@ -1211,6 +1228,7 @@ impl DeployStrategy for ServerDeploy {
12111228 server_ip : server_host,
12121229 deployment_id : None ,
12131230 project_id : None ,
1231+ server_name : None ,
12141232 } )
12151233 }
12161234
0 commit comments