add update_osdistro_table , modify update_tables_with_templates and update_tables_with_templates to support osdistro
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@13656 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
fc1e1386a1
commit
452dbe05a6
@ -19,7 +19,6 @@ use Exporter;
|
||||
our @ISA = qw/Exporter/;
|
||||
our @EXPORT_OK = qw/sendmsg/;
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -526,6 +525,7 @@ sub get_imgcapture_exlist_file_name {
|
||||
osver
|
||||
arch
|
||||
ospkgdir
|
||||
osdistroname
|
||||
Returns:
|
||||
an array (retcode, errmsg). The first one is the return code. If 0, it means succesful.
|
||||
|
||||
@ -540,6 +540,7 @@ sub update_tables_with_templates
|
||||
}
|
||||
my $arch = shift; #like ppc64, x86, x86_64
|
||||
my $ospkgdir=shift;
|
||||
my $osdistroname=shift;
|
||||
|
||||
my $osname=$osver;; #like sles, rh, centos, windows
|
||||
my $ostype="Linux"; #like Linux, Windows
|
||||
@ -653,7 +654,8 @@ sub update_tables_with_templates
|
||||
osname=>$ostype,
|
||||
osvers=>$osver,
|
||||
osarch=>$arch,
|
||||
synclists=>$synclistfile);
|
||||
synclists=>$synclistfile,
|
||||
osdistroname=>$osdistroname);
|
||||
$osimagetab->setAttribs(\%key_col, \%tb_cols);
|
||||
|
||||
if ($osname !~ /^win/) {
|
||||
@ -707,7 +709,8 @@ sub update_tables_with_diskless_image
|
||||
my $arch = shift; #like ppc64, x86, x86_64
|
||||
my $profile = shift;
|
||||
my $mode=shift;
|
||||
my $ospkgdir=shift;
|
||||
my $ospkgdir=shift;
|
||||
my $osdistroname=shift;
|
||||
|
||||
my $provm="netboot";
|
||||
if ($mode) { $provm = $mode; }
|
||||
@ -831,7 +834,8 @@ sub update_tables_with_diskless_image
|
||||
osname=>$ostype,
|
||||
osvers=>$osver,
|
||||
osarch=>$arch,
|
||||
synclists=>$synclistfile);
|
||||
synclists=>$synclistfile,
|
||||
osdistroname=>$osdistroname);
|
||||
$osimagetab->setAttribs(\%key_col, \%tb_cols);
|
||||
|
||||
if ($osname !~ /^win/) {
|
||||
@ -1473,4 +1477,141 @@ sub handle_deps()
|
||||
return $nodeseq;
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
=head3 parseosver
|
||||
parse osver to osdistribution base name,majorversion,minorversion
|
||||
Returns:
|
||||
list (osdistribution base name, majorversion,minorversion)
|
||||
Globals:
|
||||
none
|
||||
Error:
|
||||
none
|
||||
Input:
|
||||
osver
|
||||
Example:
|
||||
($basename,$majorversion,$minorversion)=xCAT::Utils->parseosver($osver);
|
||||
Comments:
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
sub parseosver
|
||||
{
|
||||
my $osver=shift;
|
||||
|
||||
if($osver =~ (/(\D+)(\d*)\.*(\d*)/))
|
||||
{
|
||||
return ($1,$2,$3);
|
||||
}
|
||||
|
||||
return ();
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
=head3 update_osdistro_table
|
||||
This function is called after copycds. It will update the osdistro table with
|
||||
given osver and arch
|
||||
Arguments:
|
||||
osver
|
||||
arch
|
||||
ospkgdir
|
||||
Returns:
|
||||
an array (retcode, errmsg). The first one is the return code. If 0, it means succesful.
|
||||
|
||||
=cut
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
sub update_osdistro_table
|
||||
{
|
||||
my $osver = shift; #like sle11, rhel5.3
|
||||
if (($osver) && ($osver =~ /xCAT::SvrUtils/)) {
|
||||
$osver = shift;
|
||||
}
|
||||
my $arch = shift; #like ppc64, x86, x86_64
|
||||
my $path=shift;
|
||||
my $distname=shift;
|
||||
|
||||
my $basename=undef;
|
||||
my $majorversion=undef;
|
||||
my $minorversion=undef;
|
||||
|
||||
my %keyhash=();
|
||||
my %updates=();
|
||||
|
||||
my $ostype="Linux"; #like Linux, Windows
|
||||
if (($osver =~ /^win/) || ($osver =~ /^imagex/)) {
|
||||
$osver="windows";
|
||||
$ostype="Windows";
|
||||
}
|
||||
|
||||
|
||||
unless($distname){
|
||||
$distname=$osver."-".$arch;
|
||||
}
|
||||
|
||||
$keyhash{osdistroname} = $distname;
|
||||
|
||||
$updates{type}=$ostype;
|
||||
if($arch){
|
||||
$updates{arch} = $arch;
|
||||
}
|
||||
|
||||
if($osver){
|
||||
($updates{basename},$updates{majorversion},$updates{minorversion}) = &parseosver($osver);
|
||||
}
|
||||
|
||||
|
||||
my $tab = xCAT::Table->new('osdistro',-create=>1);
|
||||
|
||||
unless($tab)
|
||||
{
|
||||
return(1,"failed to open table 'osdistro'!");
|
||||
}
|
||||
|
||||
if($path)
|
||||
{
|
||||
$path =~ s/\/+$//;
|
||||
(my $ref) = $tab->getAttribs(\%keyhash, 'dirpaths');
|
||||
if ($ref and $ref->{dirpaths} )
|
||||
{
|
||||
unless($ref->{dirpaths} =~ /^($path)\/*,|,($path)\/*,|,($path)\/*$|^($path)\/*$/)
|
||||
{
|
||||
$updates{dirpaths}=$ref->{dirpaths}.','.$path;
|
||||
}
|
||||
}else
|
||||
{
|
||||
$updates{dirpaths} = $path;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(%updates)
|
||||
{
|
||||
$tab->setAttribs( \%keyhash,\%updates );
|
||||
$tab->commit;
|
||||
}
|
||||
$tab->close;
|
||||
|
||||
return(0,"osdistro $distname update success");
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1;
|
||||
|
Loading…
Reference in New Issue
Block a user