Jonathan Hurley created AMBARI-24537:
----------------------------------------
Summary: Use Mpack Instance Manager To Switch Component Instance
Version on Upgrade
Key: AMBARI-24537
URL: https://issues.apache.org/jira/browse/AMBARI-24537
Project: Ambari
Issue Type: Task
Affects Versions: 3.0.0
Reporter: Jonathan Hurley
Assignee: Jonathan Hurley
Fix For: 3.0.0
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:
{code}
def pre_upgrade_restart(self, env, upgrade_type=None):
if params.version and check_stack_feature(StackFeature.ROLLING_UPGRADE,
format_stack_version(params.version)):
stack_select.select_packages(params.version)
{code}
Mpacks v2 will instead use the mpack instance manager to change the pointer on
the file system:
{noformat}
/usr/hwx/mpacks
└── hdpcore
├── 1.0.0-b575
│ ├── zookeeper_client -> /usr/hwx/modules/zookeeper_clients/3.4.0.0-b42
│ └── zookeeper_server -> /usr/hwx/modules/zookeeper/3.4.0.0-b42
└── 1.0.0-b580
├── zookeeper_client -> /usr/hwx/modules/zookeeper_clients/3.4.0.0-b43
└── zookeeper_server -> /usr/hwx/modules/zookeeper_clients/3.4.0.0-b43
{noformat}
{noformat}
/usr/hwx/instances
└── hdpcore
└── HDPCORE
└── default
├── zookeeper
│ └── zookeeper_server
│ └── ZK-1
│ ├── current ->
/usr/hwx/mpacks/hdpcore/1.0.0-b575/zookeeper_server
└── zookeeper_client
├── current ->
/usr/hwx/mpacks/hdpcore/1.0.0-b575/zookeeper_client
{noformat}
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.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)