I see, you'll need to take a look at the pre-* hooks in the stack, e.g.,
pre-install, pre-start.
E.g.,
ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-START

You may potentially need to modify script.py so that calling a start
method is allowed to call a pre_start method.
You also need to figure out if your pre_start method should be called
during an RU/EU, and if it happens before/after the pre_upgrade_restart
method that today is called between the stop and start during a restart
during RU/EU.

Thanks,
Alejandro

On 1/18/17, 6:53 PM, "Hiroyuki Adachi" <[email protected]> wrote:

>Hi Alejandro,
>
>I want to customize start/stop/restart actions not only during upgrade
>operation.
>
>In my understanding, a component script has start and stop methods,
>and they will be called when I push "Start/Stop" buttons of a component
>on Ambari UI.
>I want to call pre-start and post-start methods in my script
>before and after calling provided start method.
>
>On NAMENODE component, for example,
># current action flow
>1. push "Start" button on Ambari UI
>2. start method in namenode.py will be called
>https://github.com/apache/ambari/blob/trunk/ambari-server/src/main/
>resources/common-services/HDFS/2.1.0.2.0/package/scripts/namenode.py
>
># I want to change the action flow to below
>1. push "Start" button on Ambari UI
>2. pre-start method in myhook-namenode.py will be called
>3. start method in namenode.py will be called
>4. post-start method in myhook-namenode.py will be called
>
>Thanks,
>Hiroyuki Adachi
>
>-- 
>    Adachisan,
>    
>    
>    The usual operations of "restart" also appear in the upgrade packs.
>E.g.,
>    
>    
>https://github.com/apache/ambari/blob/trunk/ambari-server/src/main/resourc
>e
>    s/stacks/HDP/2.4/upgrades/upgrade-2.5.xml
>    
>    
>    <processing>
>      <service name="ZOOKEEPER">
>        <component name="ZOOKEEPER_SERVER">
>          <pre-upgrade>
>            <task xsi:type="configure" id="zookeeper_log4j_parameterize"
>/>
>          </pre-upgrade>
>          <pre-downgrade/>
>          <upgrade>
>            <task xsi:type="restart-task" />  <!-- Exact action to invoke
>    during the upgrade portion. -->
>          </upgrade>
>        </component>
>    
>    
>    
>    Thanks,
>    Alejandro
>    
>    On 1/17/17, 10:01 PM, "Hiroyuki Adachi" <[email protected]> wrote:
>    
>    >Hi Alejandro,
>    >
>    >Thank you for the response.
>    >I'm using HDP, and your information of the upgrade packs is useful
>for me.
>    >
>    >But, how about usual operations? (e.g. restart NameNode from Ambari)
>    >Can I hook pre/post start, stop, and restart actions of components?
>    >It is desirable that I can implement such actions in a similar way
>to the
>    >upgrade packs.
>    >
>    >Thanks,
>    >Hiroyuki Adachi
>    >
>    >----
>    >    Hi Adachisan,
>    >    
>    >    What stack are you using?
>    >    If you're using HDP, you can modify the upgrade packs (xml
>files) with
>    >    additional steps like calling functions in the python files to
>    >perform any
>    >    additional logic.
>    >    E.g.,
>    >    
>    >    <service name="HDFS">
>    >    
>    >     ...
>    >      <component name="NAMENODE">
>    >        ...
>    >        <post-upgrade>
>    >          <task xsi:type="execute">
>    >          <summary>Wait for HiveServer2 Connections</summary>
>    >          <script>scripts/namenode_upgrade.py</script>
>    >          <function>wait_for_hive</function>
>    >          </task>
>    >        </post-upgrade>
>    >     
>    >    
>    >    
>    >    In namenode_upgrade.py
>    >    
>    >    def wait_for_hive(self, env):
>    >      import params
>    >      # Ensure that Hive Server is actually present in the cluster
>    >    
>    >    Thanks,
>    >    
>    >    
>    >    Alejandro
>    >    
>    >    On 1/16/17, 6:46 PM, "Hiroyuki Adachi" <[email protected]>
>wrote:
>    >    
>    >    >Hello,
>    >    >
>    >    >We want to add our script at pre/post start and pre/post stop
>    >actions.
>    >    >
>    >    >When we upgrade our production environment,
>    >    >we need to check state of NameNode and wait for completion of
>    >HiveServer2
>    >    >connections, and so on.
>    >    >
>    >    >I know that we can do that with implementing custom services,
>    >    >but we do not willing to folk the code for such small jobs.
>    >    >
>    >    >Thanks,
>    >    >Hiroyuki Adachi
>    >    >
>    >    >
>    >    
>    >    
>    >
>    
>    
>

Reply via email to