6.11. Feature Flags¶
Feature flags control whether selected pre-release features are enabled.
Certain features may be included in a release which aren’t yet fully implemented, or fully tested. By default, these features are disabled and ‘hidden’, so should not affect normal functionality.
However, these features may be enabled on a ‘preview’ basis, on the understanding that they may be incomplete or unstable.
Warning
Do not enable preview features unless you are willing to accept the potential risks.
Once a feature is finalised and stable, it will be released officially, and the corresponding feature flag will be removed.
Note
There is currently no feature flagged functionality.
6.11.1. REST API¶
Features can be listed, enabled, or disabled via the Ngenea Hub REST API.
To list the available features, and whether they’re currently enabled
$ curl -s 'http://example.com/api/features/' -H 'Accept: application/json' -H "Authorization: Api-Key $TOKEN"
{
"count": 1,
"next": null,
"results": [
{
"name": "searchui",
"description": "Enable search features in the Ngenea Hub UI",
"enabled": false
},
{
"name": "bandwidth_controls",
"description": "Enable bandwidth controls in the Ngenea Hub UI",
"enabled": false,
}
]
}
Individual features are keyed by their name, e.g. http://example.com/api/features/searchui/
To enable a feature, make a PATCH
request against the desired feature
$ curl -s -X PATCH 'http://example.com/api/features/searchui/' -H 'Accept: application/json' -H "Authorization: Api-Key $TOKEN" -H 'Content-Type: application/json' -d '{"enabled": true}'
[
{
"name": "searchui",
"description": "Enable search features in the Ngenea Hub UI",
"enabled": true
},
...
]
And similarly, to disable a feature
curl -s -X PATCH 'http://example.com/api/features/searchui/' -H 'Accept: application/json' -H "Authorization: Api-Key $TOKEN" -H 'Content-Type: application/json' -d '{"enabled": false}'
Note
It may be necessary to restart the Ngenea Hub service for a feature change to take effect.
6.11.2. ngclient¶
Alternatively, feature flags can be interacted with using ngclient.
To list available features and whether they’re currently enabled
$ ngclient features list
[X] searchui Enable search features in the UI
[ ] bandwidth_controls Enable bandwidth controls in the UI
To enable a feature
ngclient features enable bandwidth_controls
And to disable a feature
ngclient features disable bandwidth_controls
See ngclient features for more information.