Licensed feature availability

As of GitLab 9.4, we’ve been supporting a simplified version of licensed feature availability checks via ee/app/models/license.rb, both for on-premise or GitLab.com plans and features.

Restricting features scoped by namespaces or projects

GitLab.com plans are persisted on user groups and namespaces, therefore, if you’re adding a feature such as Related issues or Service Desk, it should be restricted on namespace scope.

  1. Add the feature symbol on EES_FEATURES, EEP_FEATURES, or EEU_FEATURES constants in ee/app/models/license.rb. Note that the prefix EES signifies Starter, EEP signifies Premium, and EEU signifies Ultimate.
  2. Check using:
project.feature_available?(:feature_symbol)

Restricting global features (instance)

However, for features such as Geo and Load balancing, which cannot be restricted to only a subset of projects or namespaces, the check is made directly in the instance license.

  1. Add the feature symbol on EES_FEATURES, EEP_FEATURES or EEU_FEATURES constants in ee/app/models/license.rb.
  2. Add the same feature symbol to GLOBAL_FEATURES.
  3. Check using:
License.feature_available?(:feature_symbol)