[ 
https://issues.apache.org/jira/browse/AMBARI-24537?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jonathan Hurley resolved AMBARI-24537.
--------------------------------------
    Resolution: Fixed

> 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
>            Priority: Blocker
>              Labels: pull-request-available
>             Fix For: 3.0.0
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> 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)

Reply via email to