Mpacks will not continue use the stack-select tools which have been used by various stacks over the past few years. Previously, each stack shipped a tool which would manipulate the symlinks on the file system in order to both report versions for components and to change versions during an upgrade.
The following pieces were required for this old framework:
- A file, such as stack_packages.json which provided a mapping between Ambari's component name and the symlink name on the file system.
- Each component's Python file would need code which flips the version before restarting during an upgrade:
Mpacks v2 will instead use the mpack instance manager to change the pointer on the file system:
For each instance of a component, there is a current pointer which references the mpack (and indirectly) the module version. However, Ambari knows all of this information up front since it's all based on metadata contained with the mpack.json. Therefore, it is possible for Ambari to do all of this version linking inside of its own framework during the upgrade. The individual Python scripts will no longer have to perform these actions.