Thank you for your kind explanation. I’ll try it!

Thanks,
Hiroyuki Adachi

--
    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