Feature Groups

https://blueprints.launchpad.net/fuel/+spec/feature-groups

We need a mechanism to build Fuel ISOs with different “flavors”. Currently, it is only possible to specify MIRANTIS=yes flag to create an ISO with Mirantis logo, but we need to configure ISO build in a more flexible way.

Problem description

For now, we need have two options for ISO build:

  • Whether or not to put Mirantis logo to the footer
  • Whether or not to allow usage of experimental features

The resulting ISO may have both or none of them. It is also be good if any of these options could be changed on a working master node.

Proposed change

A key “feature_groups” needs to be added to “VERSION” section of settings.yaml. It should contain a list of strings, which presence in this list should be checked in a few places such as footer, settings tab, role list, wizard, etc. These checks also can be written as restrictions in configs:

values:
  - data: "kernel_lt"
    label: "EXPERIMENTAL: Use Fedora longterm kernel"
    description: "Install the Fedora 3.10 longterm kernel"
    restrictions:
      - "'experimental' in version:feature_groups"

ISO build scripts should be modified to use FEATURE_GROUPS environment variable. Its value should contain a list of feature groups separated by comma to put into settings.yaml. Example:

make FEATURE_GROUPS=mirantis,experimental iso

If FEATURE_GROUPS is undefined, only “experimental” feature group should be enabled. Handling of MIRANTIS environment variable should be removed.

Alternatives

This can also be achieved by implementing these features as plugins, so this approach should probably be considered as a temporary solution until plugin system is implemented properly.

Data model impact

None

REST API impact

A new field “feature_groups” should be added to /api/version response. Field “mirantis” should be removed.

Upgrade impact

None

Security impact

None

Notifications impact

None

Other end user impact

None

Performance Impact

Minimal. UI should perform checks whether or not to show settings/roles/other controls dependent on feature groups.

Other deployer impact

None

Developer impact

None

Implementation

Assignee(s)

Primary assignee:
vkramskikh
Other contributors:
dpyzhov

Work Items

Dependencies

None

Testing

Should be tested manually. Acceptance criteria:

  • ISO built with “mirantis” group should have the logo in the footer
  • ISO built with “experimental” group should have Zabbix role

Documentation Impact

Processes of specifying feature groups for ISO build and modifiying them on deployed master node should be documented.

References

None