-
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