@@ -1101,15 +1101,22 @@ impl DumpSetupWorker {
11011101 let oxz_zones = self . zone_invoker . get_zones ( ) . await ?;
11021102 for zone in oxz_zones {
11031103 let logdir = if zone. global ( ) {
1104- PathBuf :: from ( "/ var/svc/log")
1104+ zone . path . join ( " var/svc/log")
11051105 } else {
11061106 zone. path ( ) . join ( "root/var/svc/log" )
11071107 } ;
11081108 let zone_name = zone. name ( ) ;
11091109 self . archive_logs_from_zone_path (
1110- debug_dir, logdir, zone_name, false ,
1110+ debug_dir, logdir, "*.log" , zone_name, false ,
11111111 )
11121112 . await ?;
1113+ if zone. global ( ) {
1114+ let adm_logdir = zone. path . join ( "var/adm" ) ;
1115+ self . archive_logs_from_zone_path (
1116+ debug_dir, adm_logdir, "messages" , zone_name, false ,
1117+ )
1118+ . await ?;
1119+ }
11131120 }
11141121 Ok ( ( ) )
11151122 }
@@ -1129,6 +1136,7 @@ impl DumpSetupWorker {
11291136 . archive_logs_from_zone_path (
11301137 debug_dir,
11311138 logdir. into ( ) ,
1139+ "*.log" ,
11321140 zone_name,
11331141 true ,
11341142 )
@@ -1149,13 +1157,14 @@ impl DumpSetupWorker {
11491157 & self ,
11501158 debug_dir : & DebugDataset ,
11511159 logdir : PathBuf ,
1160+ log_name_pattern : & str ,
11521161 zone_name : & str ,
11531162 include_live : bool ,
11541163 ) -> Result < ( ) , ArchiveLogsError > {
11551164 let mut rotated_log_files = Vec :: new ( ) ;
11561165 if include_live {
11571166 let pattern = logdir
1158- . join ( "*.log*" )
1167+ . join ( format ! ( "{log_name_pattern}*" ) )
11591168 . to_str ( )
11601169 . ok_or_else ( || ArchiveLogsError :: Utf8 ( zone_name. to_string ( ) ) ) ?
11611170 . to_string ( ) ;
@@ -1166,7 +1175,7 @@ impl DumpSetupWorker {
11661175 // any
11671176 for n in 1 ..9 {
11681177 let pattern = logdir
1169- . join ( format ! ( "*.log .{}" , "[0-9]" . repeat( n) ) )
1178+ . join ( format ! ( "{log_name_pattern} .{}" , "[0-9]" . repeat( n) ) )
11701179 . to_str ( )
11711180 . ok_or_else ( || {
11721181 ArchiveLogsError :: Utf8 ( zone_name. to_string ( ) )
@@ -1794,8 +1803,13 @@ mod tests {
17941803 let core_dir = tempdir. path ( ) . join ( CRASH_DATASET ) ;
17951804 let debug_dir = tempdir. path ( ) . join ( DUMP_DATASET ) ;
17961805 let zone_logs = tempdir. path ( ) . join ( "root/var/svc/log" ) ;
1806+ let adm_logs = tempdir. path ( ) . join ( "var/adm" ) ;
17971807
17981808 let tempdir_path = tempdir. path ( ) . as_str ( ) . to_string ( ) ;
1809+ let global_zone = Zone :: from_str ( & format ! (
1810+ "0:global:running:{tempdir_path}::ipkg:shared"
1811+ ) )
1812+ . unwrap ( ) ;
17991813 let zone = Zone :: from_str ( & format ! (
18001814 "1:myzone:running:{tempdir_path}::ipkg:shared"
18011815 ) )
@@ -1831,14 +1845,15 @@ mod tests {
18311845 . into_iter ( )
18321846 . collect ( ) ,
18331847 } ) ,
1834- Box :: new ( FakeZone { zones : vec ! [ zone. clone( ) ] } ) ,
1848+ Box :: new ( FakeZone { zones : vec ! [ global_zone , zone. clone( ) ] } ) ,
18351849 logctx. log . clone ( ) ,
18361850 tokio:: sync:: mpsc:: channel ( 1 ) . 1 ,
18371851 ) ;
18381852
18391853 tokio:: fs:: create_dir_all ( & core_dir) . await . unwrap ( ) ;
18401854 tokio:: fs:: create_dir_all ( & debug_dir) . await . unwrap ( ) ;
18411855 tokio:: fs:: create_dir_all ( & zone_logs) . await . unwrap ( ) ;
1856+ tokio:: fs:: create_dir_all ( & adm_logs) . await . unwrap ( ) ;
18421857 const LOG_NAME : & ' static str = "foo.log.0" ;
18431858 tokio:: fs:: File :: create ( zone_logs. join ( LOG_NAME ) )
18441859 . await
@@ -1847,6 +1862,14 @@ mod tests {
18471862 . await
18481863 . expect ( "writing fake log" ) ;
18491864
1865+ const ADM_LOG_NAME : & ' static str = "messages.0" ;
1866+ tokio:: fs:: File :: create ( adm_logs. join ( ADM_LOG_NAME ) )
1867+ . await
1868+ . expect ( "creating fake adm log" )
1869+ . write_all ( b"admin stuff" )
1870+ . await
1871+ . expect ( "writing fake adm log" ) ;
1872+
18501873 const CORE_NAME : & str = "core.myzone.myexe.123.1690540950" ;
18511874 tokio:: fs:: File :: create ( core_dir. join ( CORE_NAME ) )
18521875 . await
@@ -1878,6 +1901,12 @@ mod tests {
18781901 debug_dir. join ( zone. name ( ) ) . join ( LOG_NAME . replace ( ".0" , ".*" ) ) ;
18791902 assert_eq ! ( glob:: glob( log_glob. as_str( ) ) . unwrap( ) . count( ) , 1 ) ;
18801903 assert ! ( !zone_logs. join( LOG_NAME ) . is_file( ) ) ;
1904+
1905+ let adm_glob =
1906+ debug_dir. join ( "global" ) . join ( ADM_LOG_NAME . replace ( ".0" , ".*" ) ) ;
1907+ assert_eq ! ( glob:: glob( adm_glob. as_str( ) ) . unwrap( ) . count( ) , 1 ) ;
1908+ assert ! ( !adm_logs. join( ADM_LOG_NAME ) . is_file( ) ) ;
1909+
18811910 assert ! ( debug_dir. join( CORE_NAME ) . is_file( ) ) ;
18821911 assert ! ( !core_dir. join( CORE_NAME ) . is_file( ) ) ;
18831912 logctx. cleanup_successful ( ) ;
0 commit comments