5.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.

5.11.1. Available Features

The following features are currently available.

name

description

stability

default

searchui

Enable search features in the Ngenea Hub UI

stable

True

bandwidth_controls

Enable bandwidth controls in the Ngenea Hub UI

stable

True

5.11.2. 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.

5.11.3. 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.