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 / include / partitioning / lvm_lib.ycp < prev    next >
Text File  |  2006-11-29  |  3KB  |  135 lines

  1. /**
  2.  * File:
  3.  *   lvm_lib.ycp
  4.  *
  5.  * Module:
  6.  *   LVM
  7.  *
  8.  * Summary:
  9.  *  main lib for defines, which are not lv or pv specific
  10.  *
  11.  * Authors:
  12.  *   mike <mike@suse.de>
  13.  *
  14.  * $Id: lvm_lib.ycp 27442 2006-01-30 14:53:09Z fehr $
  15.  *
  16.  */
  17.  
  18.   {
  19.     
  20.  
  21. include "partitioning/partition_defines.ycp";
  22. include "partitioning/signatures.ycp";
  23.  
  24. textdomain "storage";
  25.  
  26. define string lvmVg( string vg )
  27.     {
  28.     integer pos = search( vg, "/" );
  29.     if( pos!=nil )
  30.     return( substring( vg, pos+1 ));
  31.     else
  32.     return( vg );
  33.     }
  34.  
  35. //////////////////////////////////////////////////////////////////////
  36. // get a list of all volume groups in the targetMap
  37.     
  38. define list get_vgs( map<string,map> targetMap )
  39.     ``{
  40.     list lvm_vg = [];
  41.     
  42.     foreach( string dev, map devmap, targetMap,
  43.     ``{
  44.     if ( devmap["type"]:`CT_UNKNOWN==`CT_LVM )
  45.         {
  46.         // add a found volume group
  47.         lvm_vg = add( lvm_vg, substring(dev, 5) ); 
  48.         }
  49.     });
  50.     return( lvm_vg );
  51.     };
  52.  
  53. //////////////////////////////////////////////////////////////////////
  54. // pesize to byte
  55. // in: <number>[kKmM][bB]
  56. // 
  57. // return "0" if input is invalid
  58. // 
  59. // pesize is valid   8K to 512M in power of 2
  60. // 8 is 8k
  61. // 16K == 16k == 16KB == 16kb
  62. define integer pesize_str_to_byte( string input )
  63.     ``{
  64.     integer num = kmgt_str_to_byte( input );
  65.     if( findfirstnotof( input, "0123456789 " ) == nil )
  66.     num = num*1024;
  67.  
  68.     integer ret = num;
  69.  
  70.     if( ret % 1024 != 0 )
  71.     ret = 0;
  72.     else
  73.     {
  74.     while( num>1 && ret>0 )
  75.         {
  76.         if( num%2 != 0 )
  77.         ret = 0;
  78.         else
  79.         num = num/2;
  80.             }
  81.         }
  82.     if( ret < 8*1024 || ret > 524288*1024 )
  83.         {
  84.         ret = 0;
  85.         }
  86.     return( ret );
  87.     };
  88.  
  89.  
  90. //////////////////////////////////////////////////////////////////////
  91. // Let the User create a new Volume group: open dialog ...
  92. // return: the changed targetMap and lvm_vgs  and cancelled 
  93.  
  94. define map addVolumeGroup( map vg, map<string,map> targetMap, list lvm_vgs )
  95.     ``{
  96.     boolean cancelled   = true;
  97.     string  current_vg  = "";
  98.     integer pesize      = 0;
  99.       
  100.  
  101.     // has the user cancelled the dialog? 
  102.     if( size(vg)>0 )
  103.     {
  104.     // Now the user has created a new vg: make it the current vg
  105.     current_vg = vg["vgname"]:"error";
  106.     lvm_vgs    = add( lvm_vgs, current_vg);
  107.     pesize     = vg["pesize"]:0;
  108.       
  109.     // Display current vg:
  110.         if (UI::WidgetExists(`id(`rvg)) && UI::WidgetExists(`id(`vg)))
  111.         {
  112.             new_vg_list( lvm_vgs );
  113.             UI::ChangeWidget( `id(`vg), `Value, current_vg);
  114.         }
  115.     cancelled = !Storage::CreateLvmVg( current_vg, pesize, 
  116.                                        vg["lvm2"]:true );
  117.     }
  118.     else
  119.     {
  120.     cancelled = true;
  121.     }
  122.  
  123.     return( $[ "cancelled" : cancelled, "vg" : current_vg ]);
  124.     };
  125.  
  126. //////////////////////////////////////////////////////////////////////
  127. // Remove the specified volume group  
  128. // return: boolean if removal was succesful
  129.  
  130. define boolean removeVolumeGroup( string current_vg )
  131.     ``{
  132.     return( Storage::DeleteLvmVg( current_vg ));
  133.     };
  134. }         
  135.