Skip to content
  • Leigh B Stoller's avatar
    New module, called Emulab Features. The basic usage (see tbswap) is: · 1d430992
    Leigh B Stoller authored
    use EmulabFeatures;
    
    if (EmulabFeatures->FeatureEnabled("NewMapper", $user, $group, $experiment)) {
       # Do something
    }
    else {
       # Do something else.
    }
    
    where $user, $group, and $experiment is the current Emulab user, group, and
    experiment the script is operating as. Any of them can be undef. Note that
    features can easily be globally enabled or disabled (bypassing user/group
    check). See below.
    
    There are two scripts to deal with features. The easy one is the script to
    grant (or revoke) feature usage to a particular user or group or experiment:
    
    boss> wap grantfeature -u stoller NewMapper
    boss> wap grantfeature -p geni NewMapper
    boss> wap grantfeature -e geni,myexp NewMapper
    
    Add -r to revoke the feature.
    
    The other script is for managing features. To create a new feature:
    
    boss> wap emulabfeature create NewFeature 'A pithy description'
    
    which adds the feature to the emulab_features DB table. Use "delete"
    to remove a feature from the DB.
    
    You can globally enable and disable features for all users/groups (the
    user/group checks are bypassed). Global disable overrides global
    enable. There are actually two different flags. Lots of rope, I mean
    flexibility.
    
    boss> wap emulabfeature enable NewFeature 1
    boss> wap emulabfeature enable NewFeature 0
    
    boss> wap emulabfeature disable NewFeature 1
    boss> wap emulabfeature disable NewFeature 0
    
    To display a list of all features and associated settings:
    
    boss> wap emulabfeature list
    
    To show the details (including the users and groups) of a specific
    feature:
    
    boss> wap emulabfeature show NewFeature
    
    Oh, if a test is made in the code for a feature, and that feature is
    not in the emulab_features table (as might be the case on other
    Emulab's), the feature is "disabled".
    1d430992