home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / lib / YaST2 / servers_non_y2 / ag_bootloader < prev    next >
Text File  |  2006-11-29  |  3KB  |  165 lines

  1. #!/usr/bin/perl
  2.  
  3. use lib "/usr/lib/YaST2/agents_non_y2";
  4. use ycp;
  5. use strict;
  6.  
  7. use Bootloader::Library;
  8.  
  9. my $lib_ref = undef;
  10.  
  11. my $result;
  12.  
  13. sub DumpLog {
  14.   foreach my $rec (@{$lib_ref->GetLogRecords ()})
  15.   {
  16.     if ($rec->{"level"} eq "debug")
  17.     {
  18.       y2debug ($rec->{"message"});
  19.     }
  20.     elsif ($rec->{"level"} eq "milestone")
  21.     {
  22.       y2milestone ($rec->{"message"});
  23.     }
  24.     elsif ($rec->{"level"} eq "warning")
  25.     {
  26.       y2warning ($rec->{"message"});
  27.     }
  28.     elsif ($rec->{"level"} eq "error")
  29.     {
  30.       y2error ($rec->{"message"});
  31.     }
  32.     else
  33.     {
  34.       y2error ("Uncomplete log record");
  35.       y2error ($rec->{"message"});
  36.     }
  37.   }
  38. }
  39.  
  40. sub DumpLogAndReturn {
  41.   my $ret = shift;
  42.  
  43.   DumpLog ();
  44.   ycp::Return ($ret);
  45. }
  46.  
  47. while ( <STDIN> )
  48. {
  49.   my ($command, $path, $argument) = ycp::ParseCommand ($_);
  50.  
  51.   if ($command eq "Read")
  52.   {
  53.     if ($path eq ".settings")
  54.     {
  55.       my $ret = $lib_ref->ReadSettings ();
  56.       if (! $ret)
  57.       {
  58.     DumpLogAndReturn (undef);
  59.       }
  60.       $ret = $lib_ref->GetSettings ();
  61.       DumpLogAndReturn ($ret);
  62.     }
  63.     elsif ($path eq ".fromstrings" && ref ($argument) eq "HASH")
  64.     {
  65.       my %contents = %{$argument};
  66.       my $ret = $lib_ref->SetFilesContents (\%contents);
  67.       if (! $ret)
  68.       {
  69.     DumpLogAndReturn (undef);
  70.       }
  71.       DumpLogAndReturn ($lib_ref->GetSettings ());
  72.     }
  73.     elsif ($path eq ".tostrings" && ref ($argument) eq "HASH")
  74.     {
  75.       $lib_ref->SetSettings ($argument);
  76.       DumpLogAndReturn ($lib_ref->GetFilesContents ());
  77.     }
  78. #    elsif ($path eq ".opttypes")
  79. #    {
  80. #      DumpLogAndReturn ($lib_ref->GetOptionTypes ());
  81. #    }
  82.     else
  83.     {
  84.       y2error ("Incorrect arguments for Read");
  85.       ycp::Return ("false");
  86.     }
  87.   }
  88.   elsif ($command eq "Write")
  89.   {
  90.     if ($path eq ".settings" && ref ($argument) eq "HASH")
  91.     {
  92.       $lib_ref->SetSettings ($argument);
  93.       DumpLogAndReturn ($lib_ref->WriteSettings ()
  94.     ? "true"
  95.     : "false");
  96.     }
  97.     else
  98.     {
  99.       y2error ("Incorrect arguments for Write");
  100.       ycp::Return ("false");
  101.     }
  102.   }
  103.   elsif ($command eq "Execute")
  104.   {
  105.     if ($path eq ".agent_init" && ! ref ($argument))
  106.     {
  107.       my $lt = $argument;
  108.       y2milestone ("Initializing for $lt");
  109.       $lib_ref = Bootloader::Library->new ();
  110.       my $ret = $lib_ref->Initialize ($lt);
  111. #      DumpLog ();
  112.       y2milestone ("Initialization status: $ret");
  113.       DumpLogAndReturn ($ret ? "true" : "false");
  114.     }
  115.     elsif ($path eq ".disk_init" && ref ($argument) eq "HASH")
  116.     {
  117.       my %args = %{$argument};
  118.       $lib_ref->DefineMountPoints ($args{"mountpoints"});
  119.       $lib_ref->DefinePartitions ($args{"partitions"});
  120.       $lib_ref->DefineMDArrays ($args{"md_arrays"});
  121.       DumpLogAndReturn ("true");
  122.     }
  123.     elsif ($path eq ".update")
  124.     {
  125.       DumpLogAndReturn ($lib_ref->UpdateBootloader ()
  126.     ? "true"
  127.     : "false");
  128.     }
  129.     elsif ($path eq ".initialize")
  130.     {
  131.       DumpLogAndReturn ($lib_ref->InitializeBootloader ()
  132.     ? "true"
  133.     : "false");
  134.     }
  135.     else
  136.     {
  137.       y2error ("Incorrect arguments for Execute");
  138.       ycp::Return ("false");
  139.     }
  140.   }
  141.   elsif ($command eq "result")
  142.   {
  143.     exit 0;
  144.   }
  145.   else
  146.   {
  147.     y2error ("Wrong path or arguments");
  148.     ycp::Return ("false");
  149.   }
  150. }
  151.  
  152. =item
  153.   elsif (ycpCommandIsRead)
  154.   {
  155.     my $ret = $lib_ref->ReadSettings ();
  156.     if (! $ret)
  157.     {
  158.       ycpReturnSkalarAsBoolean (undef);
  159.     }
  160.     ycpReturnHashAsMap ($lib_ref->GetSettings);
  161.   }
  162. =cut
  163.  
  164. # end
  165.