[ 
https://issues.apache.org/jira/browse/AMBARI-4358?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13876982#comment-13876982
 ] 

Siddharth Wagle commented on AMBARI-4358:
-----------------------------------------

[~dmitriusan] Some questions/comments:

- When would the scripts that create symlinks run ?
- How would upgrade scenario be handled with existing symlinks?
- Is there an alternative to creating symlinks which could be fragile: meaning 
an accidental symlink delete leads to broken agent?
- Is it possible to consider an approach where scripts, hooks and templates are 
written for a service say HDFS without tie up to a specific stack version and 
then in the definition of a stack say 2.1.1, we declaratively pin point with 
script to use for that version. This way it becomes easy to develop a 
inheritance chain of python classes and unit test changes as stack is added.

> Add stack extension support for pluggable services
> --------------------------------------------------
>
>                 Key: AMBARI-4358
>                 URL: https://issues.apache.org/jira/browse/AMBARI-4358
>             Project: Ambari
>          Issue Type: Improvement
>          Components: controller
>    Affects Versions: 1.5.0
>            Reporter: Dmitry Lysnichenko
>            Assignee: Dmitry Lysnichenko
>             Fix For: 1.5.0
>
>
> h1. Proposal on inheritance rules for schema ver 2.0 service metainfo
> h2. Package and repository information
> Per-stack repository information will not be subject of stack extension (just 
> as it is done now). At the same time, if osSpecifics section (containing 
> per-service repo and package descriptions) is present at metainfo of 
> inherited service, it completely overrides appropriate information of a 
> parent service. Deletion of inherited osSpecifics section is not possible 
> because doing that makes no sense (service will not be able to install).
> h2. Command scripts and custom commands
> - Command script definition at child overrides parent's command script 
> definition. 
> - Custom command script definition in child overrides parent's custom command 
> script definition with the same command name.
> h2. Script files and templates
> Stack file structure for old-style (puppet) services did not contain script 
> files and templates. At the same time, it would be definitely nice to avoid 
> having a lot of file duplicates at project source. So the proposal is to 
> create a separate python script, that will:
> - read service and stack metainfo for all stacks and build inheritance tree
> - create appropriate symlinks for service folders where needed 
> (2.1.1/services/HDFS -> 2.0.6/services/HDFS)
> - create appropriate symlinks for services that have no "package" folder 
> (child's "package" folder -> parent's "package" folder). Package folder 
> contains all scripts and templates.
> - create symlinks on parent's hook dir for stacks that have no own hook dir
> - create symlinks on role_command_order.json file for stacks that have no own 
> hook dir
> This script will be triggered when running "ambari-server setup" command. 
> Also, as far as agents have no ability to download stack files from the 
> server yet, this script will be packaged to agent's rpm as well and launched 
> at a post-install hook.
> This approach should let us keep agent-side logic of filename resolution 
> simple. Later, when agent will be downloading scripts from the server instead 
> of having them packaged to rpm, agent will have multiple file duplicates in 
> cache (but I don't see any problem here).
> h2. Pre- and postcommand hooks
> Let's assume that at 2.1.1 stack we have ZK inherited from 2.0.6 stack. Then 
> when running any command for ZK, appropriate hooks (if any) will be launched 
> from hook dir of 2.1.1 stack. At the same time, if stack has no it's own 
> hooks dir, it will inherit parent's one. This will be done using symlinks by 
> the script, described at "Script files and templates" chapter.
> With proposed stack extension rules, child stack metainfo should be 
> lightweight enough in cases of minor changes (like adjusting repository 
> information or package names).



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to