home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / share / YaST2 / clients / inst_autoconfigure.ycp < prev    next >
Text File  |  2006-11-29  |  5KB  |  178 lines

  1. /**
  2.  * File:    clients/inst_autoconfigure.ycp
  3.  * Package:    Auto-installation
  4.  * Author:      Anas Nashif <nashif@suse.de>
  5.  * Summary:    This module finishes auto-installation and configures
  6.  *        the system as described in the profile file.
  7.  *
  8.  * $Id: inst_autoconfigure.ycp 22181 2005-03-03 04:22:40Z nashif $
  9.  */
  10.  
  11. {
  12.     textdomain "autoinst";
  13.  
  14.     import "Profile";
  15.     import "AutoinstScripts";
  16.     import "Wizard";
  17.     import "Call";
  18.     import "Y2ModuleConfig";
  19.     import "Label";
  20.  
  21.     integer current_step    = 0;    // Required by logStep()
  22.  
  23.     string resource = "";
  24.     string module_auto = "";
  25.  
  26.  
  27.     /**
  28.      * Display a step in the LogView widget and increment the progress bar.
  29.      * Uses global variable 'current_step'.
  30.      *
  31.      * @param step_descr description of the step.
  32.      */
  33.     define void logStep( string step_descr )
  34.     {
  35.     current_step = current_step + 1;
  36.     UI::ChangeWidget( `id(`progress), `Value, current_step );
  37.     UI::ChangeWidget( `id(`log), `LastLine, step_descr + "\n" );
  38.         y2milestone("current step: %1", current_step);
  39.     return;
  40.     };
  41.  
  42.  
  43.  
  44.     // Help text for last dialog of base installation
  45.     string help_text = _("<p>
  46. Please wait while the system is being configured.
  47. </p>");
  48.  
  49.  
  50.     integer max_steps = size(Y2ModuleConfig::ModuleMap) + 3;
  51.     y2milestone("max steps: %1", max_steps);
  52.     term contents = `VBox(
  53.               `LogView(`id(`log), "", 10, 0 ),
  54.  
  55.               // Progress bar that displays overall progress in this dialog
  56.               `ProgressBar(`id(`progress), _("Progress"), max_steps, 0 )
  57.               );
  58.  
  59.     Wizard::SetNextButton (`next,  Label::NextButton()  );
  60.     Wizard::SetBackButton (`back,  Label::BackButton()  );
  61.     Wizard::SetAbortButton(`abort, Label::AbortButton() );
  62.  
  63.     Wizard::SetContents(
  64.               // Dialog title for autoyast dialog
  65.               _("Configuring System according to auto-install settings"),
  66.               contents, help_text, false, false);
  67.  
  68.     Wizard::DisableAbortButton();
  69.  
  70.  
  71.  
  72.     y2debug("Module map: %1", Y2ModuleConfig::ModuleMap);
  73.     y2debug("Current profile: %1", Profile::current);
  74.  
  75.  
  76.     list<map> deps =  Y2ModuleConfig::Deps();
  77.  
  78.     y2milestone("Order: %1", maplist(map d, deps, ``(d["res"]:"")));
  79.  
  80.     foreach(map r, deps,
  81.         ``{
  82.     string p = r["res"]:"";
  83.     map d = r["data"]:$[];
  84.  
  85.     if (d["X-SuSE-YaST-AutoInst"]:"" == "all" || d["X-SuSE-YaST-AutoInst"]:"" == "write")
  86.     {
  87.         if (haskey(d,"X-SuSE-YaST-AutoInstResource") &&
  88.                 d["X-SuSE-YaST-AutoInstResource"]:"" != "" )
  89.         {
  90.         resource = d["X-SuSE-YaST-AutoInstResource"]:"unknown";
  91.         }
  92.         else
  93.         {
  94.         resource = p;
  95.         }
  96.         y2milestone("current resource: %1", resource);
  97.  
  98.         // determine name of client, if not use default name
  99.         if (haskey(d,"X-SuSE-YaST-AutoInstClient"))
  100.         module_auto = d["X-SuSE-YaST-AutoInstClient"]:"none";
  101.         else
  102.         module_auto = sformat("%1_auto", p);
  103.  
  104.         map result = $[];
  105.         if (haskey(Profile::current , resource) )
  106.         {
  107.         y2milestone("Writing configuration for %1", p);
  108.         string tomerge = d["X-SuSE-YaST-AutoInstMerge"]:"";
  109.         string tomergetypes = d["X-SuSE-YaST-AutoInstMergeTypes"]:"";
  110.         list MergeTypes = splitstring(tomergetypes, ",");
  111.  
  112.         if (  size(tomerge) > 0 )
  113.         {
  114.             integer i = 0;
  115.             foreach( string res, splitstring(tomerge, ",") ,
  116.                  ``{
  117.             if ( MergeTypes[i]:"map" == "map")
  118.                 result[res] = Profile::current[res]:$[];
  119.             else
  120.                 result[res] = Profile::current[res]:[];
  121.             i = i + 1;
  122.             });
  123.             y2milestone("Calling auto client with: %1", result);
  124.             if (size(result) > 0 )
  125.             logStep( sformat (_("Configuring %1"), p));
  126.             else
  127.             logStep( sformat (_("Not Configuring %1"), p));
  128.  
  129.             Call::Function(module_auto, ["Import", eval(result) ]);
  130.             Call::Function(module_auto, ["Write"]);
  131.         }
  132.         else if (d["X-SuSE-YaST-AutoInstDataType"]:"map" == "map")
  133.         {
  134.             y2milestone("Calling auto client with: %1",  eval(Profile::current[resource]:$[]));
  135.             if (size(Profile::current[resource]:$[]) > 0 )
  136.             logStep( sformat (_("Configuring %1"), p));
  137.             else
  138.             logStep( sformat (_("Not Configuring %1"), p));
  139.             //Call::Function(module_auto, ["Import", eval(Profile::current[resource]:$[])   ]);
  140.             Call::Function(module_auto, ["Write"]);
  141.         }
  142.         else
  143.         {
  144.             if (size(Profile::current[resource]:[]) > 0 )
  145.             logStep( sformat (_("Configuring %1"), p));
  146.             else
  147.             logStep( sformat (_("Not Configuring %1"), p));
  148.  
  149.             y2milestone("Calling auto client with: %1",  eval(Profile::current[resource]:[]));
  150.             //Call::Function(module_auto, ["Import",  eval(Profile::current[resource]:[]) ]);
  151.             Call::Function(module_auto, ["Write"]);
  152.         }
  153.             }
  154.             else
  155.             {
  156.                 current_step = current_step + 1;
  157.                 UI::ChangeWidget( `id(`progress), `Value, current_step );
  158.             }
  159.     }
  160.     else
  161.         {
  162.         current_step = current_step + 1;
  163.         UI::ChangeWidget( `id(`progress), `Value, current_step );
  164.     }
  165.     });
  166.  
  167.     logStep( _("Executing Post-Scripts"));
  168.     AutoinstScripts::Write("post-scripts", false);
  169.     AutoinstScripts::Write("init-scripts", false);
  170.  
  171.     // Just in case, remove this file to avoid reconfiguring...
  172.     SCR::Execute(.target.remove, "/var/lib/YaST2/runme_at_boot");
  173.  
  174.     logStep( _("Finishing Configuration") );
  175.  
  176.     return `next;
  177. }
  178.