Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
outlinh1. true
outlinh1. true
1printablefalse
2stylh1. none
3indent20px

Scope

Process Classes for use with JobScheduler Agents

  • We assume that we have a job in a job chain

...

  • to be executed on a JobScheduler Agent.
  • This requires a process_class that is assigned to the job.
  • Please read

...

Process Class configuration

Now we assume that we have use multiple JobScheduler Agents and we want that a job executes the job to be executed on different JobScheduler Agents depending on parameters.

  • Create a process class (e.g. with the name _agents_) in JOE with empty values for host and port. The values for host and port are set dynamically. So you get This should result in the following configuration file ./config/live/agents.process_class.xml:

    Code Block
    languagehtml/xml
     <?xml version="1.0" encoding="ISO-8859-1"?>
      <process_class max_processes="30"/>  
    
  • Assign the process class to the order job in JOE. In this example the job is named has the name shellOnDynamicAgent and calls hostname as a shell command.

    So you get should see the following content in the configuration file ./config/live/shellOnDynamicAgent.job.xml:

    Code Block
    languagehtml/xml
     <?xml version="1.0" encoding="ISO-8859-1"?>
     
     <job process_class="agents" order="yes" stop_on_error="no">
         <script language="shell">
             <![CDATA[
     #! /bin/sh
     # returns the hostname of the agent
     hostname
             ]]>
         </script>
         <run_time/>
     </job>  
    

Job configuration

  • Create the following job (, e.g. setAgent) , and put add it into to the job chain as the forerunner of the agent JobScheduler Agent job.

    This job change modifies the process_class setting of the successor job in the job chain according to the order parameter parameters agent_host_ and _agent_port.:

    Code Block
    languagehtml/xml
    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <job  order="yes" stop_on_error="no">
        <params />
    
        <script  language="java:javascript">
            <><![CDATA[
    		function spooler_process() {
    
    			var curOrder = spooler_task.order;
    			var agentHost = curOrder.params.value('agent_host');
    			var agentPort = curOrder.params.value('agent_port');
    			var nextJob = curOrder.job_chain_node.next_node.job;
    
    			spooler_log.info("Params agentHost:agentPort = "+agentHost+":"+agentPort);
    			spooler_log.info("before: "+nextJob.process_class.remote_scheduler);
    
    	        nextJob.process_class.remote_scheduler = agentHost+":"+agentPort;
    			spooler_log.info("after: "+nextJob.process_class.remote_scheduler);
    			return true;
    		}
            ]]>
        <></script>
    
        <run_time />
    </job>
    

Job chain configuration

  • Add Put these jobs into to a job chain (, e.g. jobChainWithAgentJob):



    So you have the This will result in the job chain configuration file ./config/live/jobChainWithAgentJob.job_chain.xml:

    Code Block
    languagehtml/xml
    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <job_chain  orders_recoverable="yes" visible="yes">
        <job_chain_node  state="setAgent" job="setAgent" next_state="callAgent" error_state="error"/>
        <job_chain_node  state="callAgent" job="shellOnDynamicAgent" next_state="success" error_state="error"/>
        <job_chain_node  state="success"/>
        <job_chain_node  state="error"/>
    </job_chain> 
    

Order configuration

  • Add an order to the job chain jobChainWithAgentJob for each JobScheduler Agent you want.

    For example, one agent is JobScheduler Agent runs on HostA with port 4444 and another agent is JobScheduler Agent runs on HostB with port 4444. The orders must have the parameter order has to be assigned the parameters agent_host_ and _agent_port.


    So you have the This should result in the order configuration files ./config/live/jobChainWithAgentJob,hostA-4444.order.xml and ./config/live/jobChainWithAgentJob,hostB-4444.order.xml:

    Code Block
    languagehtml/xml
    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <order>
        <params >
            <!-- for use with JobScheduler releases before 1.10
            <param  name="agent_host" value="HostA"/>
            -->
            <!-- for use with JobScheduler releases starting with 1.10 -->
            <param  name="agent_host" value="http://HostA"/>
    
            <param  name="agent_port" value="4444"/>
        </params>
        <run_time/>
    </order>
    
    Code Block
    languagehtml/xml
    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <order>
        <params >
            <!-- for use with JobScheduler releases before 1.10
            <param  name="agent_host" value="HostB"/>
            -->
            <!-- for use with JobScheduler releases starting with 1.10 -->
            <param  name="agent_host" value="http://HostB"/>
            <param  name="agent_port" value="4444"/>
        </params>
        <run_time/>
    </order>