mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-31 11:22:27 +00:00 
			
		
		
		
	fix issue [CUSTOMER] the old diskless image built by xCAT can not be used after xcat 2.12.2 #2130
This commit is contained in:
		| @@ -2099,4 +2099,41 @@ sub getplatform { | ||||
|  | ||||
|     return $platform; | ||||
| } | ||||
|  | ||||
| #-------------------------------------------------------------------------------------------------------- | ||||
| #searchcompressedrootimg: | ||||
| #description: search the compressed rootimage for diskless or statelite osimage under specified directory | ||||
| #argument: | ||||
| #        $rootimgdir: the directory in which the compressed rootimage exist | ||||
| #return: | ||||
| #        on success: the basename of the compressed rootimage | ||||
| #        on fail:    undef | ||||
| #-------------------------------------------------------------------------------------------------------- | ||||
| sub searchcompressedrootimg{ | ||||
|     my $rootimgdir = shift;    | ||||
|     if (($rootimgdir) && ($rootimgdir =~ /xCAT::SvrUtils/)) { | ||||
|         $rootimgdir = shift; | ||||
|     } | ||||
|  | ||||
|     my $cpsdrootimg=undef; | ||||
|     if (-f -r "$rootimgdir/rootimg.sfs"){ | ||||
|         $cpsdrootimg="rootimg.sfs"; | ||||
|     }elsif(-f -r "$rootimgdir/rootimg.gz"){ | ||||
|         $cpsdrootimg="rootimg.gz"; | ||||
|     } | ||||
|  | ||||
|     if(-f -r "$rootimgdir/rootimg.cpio.gz"){ | ||||
|         $cpsdrootimg = 'rootimg.cpio.gz'; | ||||
|     }elsif(-f -r "$rootimgdir/rootimg.cpio.xz"){ | ||||
|         $cpsdrootimg = 'rootimg.cpio.xz'; | ||||
|     }elsif(-f -r "$rootimgdir/rootimg.tar.gz"){ | ||||
|         $cpsdrootimg = 'rootimg.tar.gz'; | ||||
|     }elsif(-f -r "$rootimgdir/rootimg.tar.xz"){ | ||||
|         $cpsdrootimg = 'rootimg.tar.xz'; | ||||
|     } | ||||
|  | ||||
|     return $cpsdrootimg; | ||||
| } | ||||
|  | ||||
|  | ||||
| 1; | ||||
|   | ||||
| @@ -462,13 +462,9 @@ sub mknetboot | ||||
|         } | ||||
|  | ||||
|         $platform = xCAT_plugin::anaconda::getplatform($osver); | ||||
|         my $suffix = 'cpio.gz'; | ||||
|         $suffix = 'sfs' if (-r "$rootimgdir/rootimg.sfs"); | ||||
|         $suffix = 'gz' if (-r "$rootimgdir/rootimg.gz"); | ||||
|         $suffix = 'cpio.xz' if (-r "$rootimgdir/rootimg.cpio.xz"); | ||||
|         $suffix = 'tar.gz' if (-r "$rootimgdir/rootimg.tar.gz"); | ||||
|         $suffix = 'tar.xz' if (-r "$rootimgdir/rootimg.tar.xz"); | ||||
|  | ||||
|         my $compressedrootimg=xCAT::SvrUtils->searchcompressedrootimg("$rootimgdir"); | ||||
|          | ||||
|        | ||||
|         # statelite images are not packed. | ||||
|         if ($statelite) { | ||||
|             unless (-r "$rootimgdir/kernel") { | ||||
| @@ -516,7 +512,7 @@ sub mknetboot | ||||
|                     copy("$rootimgdir/initrd.gz", "$rootimgdir/initrd-stateless.gz"); | ||||
|                 } | ||||
|             } | ||||
|             unless (-r "$rootimgdir/rootimg.cpio.gz" or -r "$rootimgdir/rootimg.cpio.xz" or -r "$rootimgdir/rootimg.tar.gz" or -r "$rootimgdir/rootimg.tar.xz" or -r "$rootimgdir/rootimg.sfs" or -r "$rootimgdir/rootimg.gz") { | ||||
|             unless ( -f -r "$rootimgdir/$compressedrootimg") { | ||||
|                 $callback->({ | ||||
|                         error => ["No packed image for platform $osver, architecture $arch, and profile $profile found at $rootimgdir/rootimg.gz or $rootimgdir/rootimg.sfs on $myname, please run packimage (e.g.  packimage -o $osver -p $profile -a $arch"], | ||||
|                         errorcode => [1] }); | ||||
| @@ -757,12 +753,12 @@ sub mknetboot | ||||
|             $kcmdline .= "NODE=$node "; | ||||
|         } | ||||
|         else { | ||||
|             if (-r "$rootimgdir/rootimg.$suffix.metainfo") { | ||||
|             if (-r "$rootimgdir/$compressedrootimg.metainfo") { | ||||
|                 $kcmdline = | ||||
| "imgurl=$httpmethod://$imgsrv:$httpport/$rootimgdir/rootimg.$suffix.metainfo "; | ||||
| "imgurl=$httpmethod://$imgsrv:$httpport/$rootimgdir/$compressedrootimg.metainfo "; | ||||
|             } else { | ||||
|                 $kcmdline = | ||||
| "imgurl=$httpmethod://$imgsrv:$httpport/$rootimgdir/rootimg.$suffix "; | ||||
| "imgurl=$httpmethod://$imgsrv:$httpport/$rootimgdir/$compressedrootimg "; | ||||
|             } | ||||
|             $kcmdline .= "XCAT=$xcatmaster:$xcatdport "; | ||||
|             $kcmdline .= "NODE=$node "; | ||||
|   | ||||
| @@ -1170,11 +1170,7 @@ sub mknetboot | ||||
|         } | ||||
|  | ||||
|         $platform = xCAT_plugin::debian::getplatform($osver); | ||||
|         my $suffix = 'cpio.gz'; | ||||
|         $suffix = 'gz' if (-r "$rootimgdir/rootimg.gz"); | ||||
|         $suffix = 'cpio.xz' if (-r "$rootimgdir/rootimg.cpio.xz"); | ||||
|         $suffix = 'tar.gz' if (-r "$rootimgdir/rootimg.tar.gz"); | ||||
|         $suffix = 'tar.xz' if (-r "$rootimgdir/rootimg.tar.xz"); | ||||
|         my $compressedrootimg=xCAT::SvrUtils->searchcompressedrootimg("$rootimgdir"); | ||||
|  | ||||
|         # statelite images are not packed. | ||||
|         if ($statelite) { | ||||
| @@ -1224,7 +1220,7 @@ sub mknetboot | ||||
|                     copy("$rootimgdir/initrd.gz", "$rootimgdir/initrd-stateless.gz"); | ||||
|                 } | ||||
|             } | ||||
|             unless (-r "$rootimgdir/rootimg.cpio.gz" or -r "$rootimgdir/rootimg.cpio.xz" or -r "$rootimgdir/rootimg.tar.gz" or -r "$rootimgdir/rootimg.tar.xz" or -r "$rootimgdir/rootimg.sfs" or -r "$rootimgdir/rootimg.gz") { | ||||
|             unless (-f -r $compressedrootimg) { | ||||
|                 $callback->({ | ||||
|                         error => ["No packed image for platform $osver, architecture $arch, and profile $profile, please run packimage (e.g.  packimage -o $osver -p $profile -a $arch"], | ||||
|                         errorcode => [1] }); | ||||
| @@ -1452,7 +1448,7 @@ sub mknetboot | ||||
|         else | ||||
|         { | ||||
|             $kcmdline = | ||||
|               "imgurl=http://$imgsrv/$rootimgdir/rootimg.$suffix "; | ||||
|               "imgurl=http://$imgsrv/$rootimgdir/$compressedrootimg "; | ||||
|             $kcmdline .= "XCAT=$xcatmaster:$xcatdport "; | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -32,6 +32,7 @@ use File::Path qw/rmtree/; | ||||
| use File::Basename; | ||||
| use xCAT::NodeRange; | ||||
| use xCAT::Schema; | ||||
| use xCAT::SvrUtils; | ||||
| use Cwd; | ||||
| my $requestcommand; | ||||
| $::VERBOSE = 0; | ||||
| @@ -607,17 +608,9 @@ sub get_files { | ||||
|                     if (-f "$rootimgdir/kernel") { | ||||
|                         $kernel = "$rootimgdir/kernel"; | ||||
|                     } | ||||
|                     if (-f "$rootimgdir/rootimg.cpio.xz") { | ||||
|                         $rootimg = "$rootimgdir/rootimg.cpio.xz"; | ||||
|                     } elsif (-f "$rootimgdir/rootimg.cpio.gz") { | ||||
|                         $rootimg = "$rootimgdir/rootimg.cpio.gz"; | ||||
|                     } elsif (-f "$rootimgdir/rootimg.tar.xz") { | ||||
|                         $rootimg = "$rootimgdir/rootimg.tar.xz"; | ||||
|                     } elsif (-f "$rootimgdir/rootimg.tar.gz") { | ||||
|                         $rootimg = "$rootimgdir/rootimg.tar.gz"; | ||||
|                     } elsif (-f "$rootimgdir/rootimg.gz") { | ||||
|                         $rootimg = "$rootimgdir/rootimg.gz"; | ||||
|                     } | ||||
|                      | ||||
|                     my $compressedrootimg=xCAT::SvrUtils->searchcompressedrootimg("$rootimgdir"); | ||||
|                     $rootimg = "$rootimgdir/$compressedrootimg"; | ||||
|  | ||||
|                 } else { | ||||
|                     $ramdisk = look_for_file('initrd-stateless.gz', $callback, $attrs, @arr); | ||||
|   | ||||
| @@ -488,6 +488,7 @@ sub process_request { | ||||
|  | ||||
|     $suffix = $method.".".$suffix; | ||||
|     unlink("$destdir/rootimg.sfs"); | ||||
|     unlink("$destdir/rootimg.gz"); | ||||
|     unlink("$destdir/rootimg.cpio.xz"); | ||||
|     unlink("$destdir/rootimg.cpio.gz"); | ||||
|     unlink("$destdir/rootimg.tar.xz"); | ||||
|   | ||||
| @@ -327,12 +327,7 @@ sub mknetboot | ||||
|             $platform = "sles"; | ||||
|         } | ||||
|  | ||||
|         my $suffix = 'cpio.gz'; | ||||
|         $suffix = 'sfs' if (-r "$rootimgdir/rootimg.sfs"); | ||||
|         $suffix = 'gz' if (-r "$rootimgdir/rootimg.gz"); | ||||
|         $suffix = 'cpio.xz' if (-r "$rootimgdir/rootimg.cpio.xz"); | ||||
|         $suffix = 'tar.gz' if (-r "$rootimgdir/rootimg.tar.gz"); | ||||
|         $suffix = 'tar.xz' if (-r "$rootimgdir/rootimg.tar.xz"); | ||||
|         my $compressedrootimg=xCAT::SvrUtils->searchcompressedrootimg("$rootimgdir"); | ||||
|  | ||||
|         if ($statelite) { | ||||
|             unless (-r "$rootimgdir/kernel") { | ||||
| @@ -384,7 +379,7 @@ sub mknetboot | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             unless (-r "$rootimgdir/rootimg.cpio.gz" or -r "$rootimgdir/rootimg.cpio.xz" or -r "$rootimgdir/rootimg.tar.gz" or -r "$rootimgdir/rootimg.tar.xz" or -r "$rootimgdir/rootimg.sfs" or -r "$rootimgdir/rootimg.gz") { | ||||
|             unless (-r -f $compressedrootimg) { | ||||
|                 $callback->({ | ||||
|                         error => [qq{No packed image for platform $osver, architecture $arch, and profile $profile, please run packimage before nodeset}], | ||||
|                         errorcode => [1] | ||||
| @@ -588,7 +583,7 @@ sub mknetboot | ||||
|         else | ||||
|         { | ||||
|             $kcmdline = | ||||
|               "imgurl=$httpmethod://$imgsrv/$rootimgdir/rootimg.$suffix "; | ||||
|               "imgurl=$httpmethod://$imgsrv/$rootimgdir/$compressedrootimg "; | ||||
|         } | ||||
|         $kcmdline .= "XCAT=$xcatmaster:$xcatdport quiet "; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user