The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Practical workshop for Config::Model
-------------------------------------------

Objevtive of this workshop:
- improve fstab model (MyFstab class) to support ext4 

- open file fstab/MyFstab.pl with favorite text editor
  This file contains a Perl data structure which describes
  the MyFstab configuration class. Note that no backend are 
  specified. Read and write are handled in test script (old demo)
 
- open model graphical editor
  $ config-model-edit -model MyFstab

- Open class Fs -> element -> fs -> type
                                    cargo -> config_class_name
  What do these parameters (type and cargo) mean? 
  Which class is to be explored next to better understand the structure
  of /etc/fstab configuration?

- explore next class (MyFstab::FsLine)
   MyFstab::FsLine -> element -> fs_vfstype -> type
                                               value_type
                                               choice
   What are there choices ? 
   How are these choices connected with fstab(5) man page ?

- In MyFstab::FsLine, what is the element representing the mount options ?

- explore this element:
  note the type: what does this mean ?
  open follow item: f1 is a variable name. The value of this variable
    is extracted from the tree using the path shown.
  open rules: 
    * formula ($f1 eq 'ext3') is a test condition related to ext3 
    * When this condition is satisfied, the parameters associated with
     this formula are applied. Look for applied parameter

- create new MyFstab::Ext4FsOpt 
  open class mentioned by the rule above with edit (or right-click)
  select ext3 class
  click on keep
  replace 3 by 4
  click copy

- open ext4 class -> element

- open mkfs.ext4 man page 
  * Note that ext4 features all ext3 and ext2 options
  * look for 'extended_options' in this man page.
    These are 3 integer and 2 booleans parameters

- Arrange Ext4 to offer all ext3 options
  open MyFstab::Ext4Options -> include
  set include to MyFstab::Ext3FsOpt
  
- create these elements:
  * open/edit Ext4options->element
    select journalling-mode click 'remove selected'
    type 'stride' in entry click add, repeat for other elements
  
  * open/edit stride
    In type drop-down box, select 'leaf'
    in value_type box, select integer
    cut'n'paste description from man page, paste on 'description' item in tree,
    in right part of window, click edit , cleanup, store (in tree)
  
  * open/edit Ext4options->element
    select stride
    enter stripe-width -> copy
    open/edit stripe-width -> description, click delete
    cut'n'paste man page in value field, cleanup, store

- Now it's time to offer the relevant choice
    open/edit class MyFstab::Fsline element fs_fstype choice 
    enter 'ext4' in entry beside 'push item'. click 'push item'

- And enter the relevant rules in fs_mntopts
    open/edit class MyFstab::Fsline element fs_mntopts rules
    select copy ext3 entry in ext4 
    (if modif does not show up (bug) -> close and open tree)

- In menu bar, click Model-> test
  open fs -> empty, which is normal -> no fstab file is read

  if problem with Model->test, 
   run 'config-edit -model MyFstab -model_dir lib/Config/Model/models'

- add a new file system to test ext4
  * add a new label (suggests mount point): home 
  * open label
  * set fs_spec to /dev/sda1
  * set fs_file to /home
  * fs_vfstype to ext4
    Note the new available mount options, including the stripe parameter 
   (for ext4) and journalling_mode (ext3)


Remember: it's a demo, there's no code to write back fstab.. yet