Package sos.spooler

Examples of sos.spooler.Job_chain


      return;
    }
    //spooler_job.set_state_text("Start Installation of " + installation.getHost() + ":" + installation.getServicePort());

    order = spooler.create_order();
    Job_chain jobchain = spooler.job_chain(installationJobChain);
    order.set_id(installation.getHost() + ":" + installation.getSchedulerPort());

    setParam("installation_file", installationFile.getName());

    setParam("ftp_user", installation.getFtp().getUser());
    setParam("ftp_local_dir", installation.getFtp().getLocalDir());
    setParam("ftp_host", installation.getHost());
    setParam("ftp_password", installation.getFtp().getPassword());
    setParam("ftp_remote_dir", installation.getFtp().getRemoteDir());

    setParam("TransferInstallationSetup/ftp_file_path", "scheduler_linux32_agent.jar");
    setParam("TransferInstallationFile/ftp_local_dir", installationFile.getParent());
    setParam("TransferInstallationFile/ftp_file_path", installationFile.getName());

    setParam("ShutdownScheduler/host", String.valueOf(installation.getHost()));
    setParam("ShutdownScheduler/port", String.valueOf(installation.getSsh().getPort()));
    setParam("ShutdownScheduler/user", installation.getSsh().getUser());
    setParam("ShutdownScheduler/auth_method", installation.getSsh().getAuthMethod());
    setParam("ShutdownScheduler/password", installation.getSsh().getPassword());
    setParam("ShutdownScheduler/sudo_passwd", installation.getSsh().getPassword());
     setParam("ShutdownScheduler/command",installation.getInstallPath() + "/" + installation.getSchedulerId() + "/bin/jobscheduler_agent.sh  stop");

    setParam("PerformInstall/host", String.valueOf(installation.getHost()));
    setParam("PerformInstall/port", String.valueOf(installation.getSsh().getPort()));
    setParam("PerformInstall/user", installation.getSsh().getUser());
    setParam("PerformInstall/auth_method", installation.getSsh().getAuthMethod());
    setParam("PerformInstall/password", installation.getSsh().getPassword());
    setParam("PerformInstall/sudo_passwd", installation.getSsh().getPassword());
    setParam("PerformInstall/command", installation.getSsh().getCommand());

    jobchain.add_order(order);
  }
View Full Code Here


          if(spooler.job_chain_exists(jobChainName)) return true;
          boolean jobExists = false;
          String jobName ="scheduler_managed_user_database_statement";
                 
          spooler_log.debug3("Creating jobchain user_database_statements.");
          Job_chain jobChain = spooler.create_job_chain();
            jobChain.set_name(jobChainName);
            spooler_log.debug3("Adding job scheduler_managed_user_database_statement to" +
                " job_chain.");
            jobChain.add_job("scheduler_managed_user_database_statement",
                "0","100","1100");
            jobChain.add_end_state("100");
            jobChain.add_end_state("1100");
            spooler.add_job_chain(jobChain);
           
        } catch(Exception e){
          try{ getLogger().error("Failed to create jobchain "+jobChainName); }
            catch (Exception ex){}
View Full Code Here

          } else{
            // wenns die schon gibt, false zur�ckgeben, damit bekannt ist,
            // dass keine Jobchain eingerichtet wurde
            if ( this.spooler.job_chain_exists(currWorkflowModel.get("name").toString())) {
              if (remove){
                Job_chain oldChain = spooler.job_chain(currWorkflowModel.get("name").toString());
                oldChain.remove();
              }else return false;
            }
          }
          Job_chain jobChain=null;
          /*if ( this.spooler.job_chain_exists(currWorkflowModel.get("name").toString())){
            jobChain = spooler.job_chain(currWorkflowModel.get("name").toString());                 
          } else */jobChain = this.spooler.create_job_chain();
          jobChain.set_name(currWorkflowModel.get("name").toString());

          if (this.getLog() != null) this.getLog().debug6("..  create job chain for workflow model: " +
                 currWorkflowModel.get("name").toString());

          // Tasks des aktuellen Workflow Modells einlesen
          currJobs = new ArrayList();
          currJobs = this.getJobsOfWorkflowModel(Integer.parseInt(
                  currWorkflowModel.get("id").toString()));

          if (currJobs.isEmpty()) {
              if (this.getLog() != null) this.getLog().warn(".. no job found for this workflow model [" +
                  currWorkflowModel.get("id").toString() + "]: " + currWorkflowModel.get("name"));
              continue;
          }

          Iterator itJobs = currJobs.iterator();

          HashMap currJob = new HashMap();
          int maxOutputLevel = 0;
          Set inputLevels = new HashSet();
          Set outputLevels = new HashSet();
          Set errorLevels = new HashSet();
          while (itJobs.hasNext()) {
              currJob = (HashMap) itJobs.next();
              if (currJob.containsKey("job_name") &&
                      currJob.containsKey("input_level") &&
                      currJob.containsKey("output_level") &&
                      currJob.containsKey("error_level")) {
               
               
                initJobs(currJob.get("id").toString(), false,currWorkflowModel.get("id").toString());
               
                  /*if (Integer.parseInt(currJob.get("output_level").toString()) >  maxOutputLevel)
                      maxOutputLevel = Integer.parseInt(currJob.get("output_level").
                                            toString());*/

                  jobChain.add_job(currJob.get("job_name").toString(),
                         currJob.get("input_level").toString(),
                         currJob.get("output_level").toString(),
                         currJob.get("error_level").toString()
                         );
                 
                  outputLevels.add(currJob.get("output_level").toString());
                  inputLevels.add(currJob.get("input_level").toString());
                  errorLevels.add(currJob.get("error_level").toString());
                  if (this.getLog() != null) this.getLog().debug3(".. job_name=" +
                      currJob.get("job_name").toString() +
                      ", input_level=" + currJob.get("input_level").toString() +
                      ", output_level=" + currJob.get("output_level").toString() +
                      ", error_level=" + currJob.get("error_level").toString() +
                      " .. added.");
                
              } // if
          } // while
          // Endzust�nde f�r Fehlerzust�nde ohne Folgeverarbeitung bekanntgeben:
          Iterator iter =errorLevels.iterator();
          while(iter.hasNext()){
            Object oLevel = iter.next();
            if(!inputLevels.contains(oLevel)){
              if (this.getLog() != null) this.getLog().debug9(".. try to add_end_state with error_level: " +
                          oLevel.toString());
                  jobChain.add_end_state(oLevel.toString());
                  if (this.getLog() != null) this.getLog().debug9(".. .. add_end_state with " +
                          oLevel.toString() + " ok.");
            }
          }
         
          // Endzustand des letzten Jobs mit positiven Status bekanntgeben
          /*if (this.getLog() != null) this.getLog().debug9(".. try to add_end_state with maxOutputLevel: " +
                 Integer.toString(maxOutputLevel));
          jobChain.add_end_state(Integer.toString(maxOutputLevel));
          if (this.getLog() != null) this.getLog().debug9(".. .. add_end_state with with maxOutputLevel: " +
                 Integer.toString(maxOutputLevel) + " ok.");*/
         
          // Ausganszust�nde, die nicht als Eingangszustand auftauchen als Endzustand bekanntgeben:
          outputLevels.removeAll(inputLevels);
          Iterator outIter = outputLevels.iterator();
          while (outIter.hasNext()){
            String endState = outIter.next().toString();
            if (this.getLog() != null) this.getLog().debug9(".. try to add_end_state with OutputLevel: " +
                     endState);
            jobChain.add_end_state(endState);
            if (this.getLog() != null) this.getLog().debug9(".. .. add_end_state with with OutputLevel: " +
                     endState + " ok.");
          }
         

View Full Code Here

      job.spooler_log.debug9("entered getOrderCommand()...");
      Order order = job.spooler_task.order();
      job.spooler_log.debug9("order!=null: "+(order!=null));
      String spoolerID = job.spooler.id().toLowerCase();
      job.spooler_log.debug9("spoolerID: "+spoolerID);
      Job_chain chain = order.job_chain();
      job.spooler_log.debug9("chain!=null: "+(chain!=null));
      String jobChainName = chain.name();
      job.spooler_log.debug9("jobChainName: "+jobChainName);
      String orderID = getOrderIdInTable(spoolerID, jobChainName, order);
     
    String command = "";
    try{
View Full Code Here

                    if (spooler_task.params().value(dependentJobChainName+";"+ dependentNodeName + "_required_orders") != null && spooler_task.params().value(dependentJobChainName+";"+ dependentNodeName + "_required_orders").length() > 0) {
                        requiredOrders = Integer.parseInt(spooler_task.params().value(dependentJobChainName+";"+ dependentNodeName + "_required_orders"));
                    } else if (spooler_task.params().value(dependentJobChainName + "_required_orders") != null && spooler_task.params().value(dependentJobChainName + "_required_orders").length() > 0) {
                        String s = spooler_task.params().value(dependentJobChainName + "_required_orders");
                        if (s.equalsIgnoreCase("job_chain.order_count")){
                           Job_chain j = spooler.job_chain(dependentJobChainPath);
                          spooler_log.debug9("Waiting for all orders in job_chain " + dependentJobChainPath + " ...");
                           if (j != null) {
                              requiredOrders = j.order_count();
                           }else {
                            spooler_log.warn(dependentJobChainPath + "does not exist");
                              requiredOrders = 1;
                           }
                        }else {
                           requiredOrders = Integer.parseInt(spooler_task.params().value(dependentJobChainName + "_required_orders"));
                        }
                    } else if (spooler_task.params().value("required_orders") != null && spooler_task.params().value("required_orders").length() > 0) {
                        requiredOrders = Integer.parseInt(spooler_task.params().value("required_orders"));
                    }

                    // should any of the dependent job chains have less orders enqueued than required, then the current order will be set on hold
                    if (requiredOrders > dependentJobChainOrders) {
                        passOrders = false;
                    }else {
                       if (minimumSyncHits > 0) satisfiedNode++;
                    }
                    spooler_log.info("job chain [" + dependentJobChainPath + "], state ["+dependentNodeName+"]"+syncSessionDebug+" requires " + requiredOrders + " orders being present, " + dependentJobChainOrders + " orders have been enqueued");
                   
                    // move this information to a hashmap for further use
                    int[] orders = new int[2];
                    orders[0] = dependentJobChainOrders;
                    orders[1] = requiredOrders;
                    dependentJobChainNodes.put(dependentJobChainPath+";"+dependentNodeName, orders);
                }
               
             spooler_log.info("Synchits:" + satisfiedNode);
             passOrders = (passOrders || satisfiedNode > 0 && satisfiedNode >= minimumSyncHits);
             if (!passOrders) {
                 // suspend/setback the current order for this job chain: it will be suspended
                   if (this.setbackType.equalsIgnoreCase("setback") ) {
                       spooler_task.order().setback();
                   } else {
                       if (!spooler_task.order().suspended()) {
                           spooler_task.order().set_state(spooler_task.order().state()); //Damit der Suspend auf den sync-Knoten geht und nicht auf den n�chsten.
                           spooler_task.order().set_suspended(true);
                       }
                   }
                  spooler_log.info("order is set on hold: " + spooler_task.order().id() + ", " + spooler_task.order().title());
               }               
              
               
               
                // display an overview of all dependent job chains
                Iterator jobChainNodesIterator = dependentJobChainNodes.keySet().iterator();
                while (jobChainNodesIterator.hasNext()) {
                  String keyName = (String)jobChainNodesIterator.next();
                    dependentJobChainPath = keyName.split(";")[0];
                    dependentNodeName = keyName.split(";")[1];
                    if (dependentJobChainPath == null) { continue; }
                    if (dependentNodeName == null) { continue; }
                    int[] orders = (int[])dependentJobChainNodes.get(keyName);
                    if (orders == null) { continue; }
                    spooler_log.info("synchronized job chain: " + dependentJobChainPath + ", state ["+dependentNodeName+"]"+syncSessionDebug+", required orders: " + orders[1] + ", pending orders: " + orders[0]);
                }
               
            } catch (Exception ex) {
                throw new Exception("could not check pending orders in dependent job chains: " + ex.getMessage());
            }
           
            // signal to other job chains that the next order should be passed through to its next state
            if (passOrders) {
                Iterator jobChainNodesIterator = dependentJobChainNodes.keySet().iterator();
                while (jobChainNodesIterator.hasNext()) {
                  String keyName = (String)jobChainNodesIterator.next();
                    dependentJobChainPath = keyName.split(";")[0];
                    dependentNodeName = keyName.split(";")[1];
                    if (dependentJobChainPath == null) { continue; }
                    if (dependentNodeName == null) { continue; }
                    int[] orders = (int[])dependentJobChainNodes.get(keyName);
                    if (orders == null) { continue; }
                    spooler_log.debug6("checking job chain: " + dependentJobChainPath+", state ["+dependentNodeName+"]");
                   
                    if (this.setbackType.equalsIgnoreCase("setback")) {
                      String signalVariable = keyName+ "_pass_through_next_order";
                        // signal current job chain to pass through the required number of orders minus the current one                     
                        if (dependentJobChainPath.equals(currentJobChainPath) && dependentNodeName.equals(currentNodeName)) {                         
                            if (orders[1]-1 > 0) {
                                spooler_log.debug6("setting signal variable: " + signalVariable+"=" + Integer.toString(orders[1]-1));
                                spooler.set_var(signalVariable, Integer.toString(orders[1]-1));
                            }
                        } else {
                            // make other job chain pass through the required number of orders
                            spooler_log.debug6("setting signal variable: " + signalVariable+"=" + Integer.toString(orders[1]));
                            spooler.set_var(signalVariable, Integer.toString(orders[1]));
                        }
                        spooler_log.info("signalling next " + orders[1] + " orders to be passed through by job chain: " + dependentJobChainPath+", state ["+dependentNodeName+"]");
                    }

                    try { // to signal waiting orders to start immediately
                        NodeList signalNodes = null;
                        if (this.setbackType.equalsIgnoreCase("setback")) {
                            signalNodes = currentStatusXPath.selectNodeList("/spooler/answer/state/job_chains/job_chain[@path = '" + dependentJobChainPath + "']/job_chain_node[@state = '" + dependentNodeName + "']/order_queue/order[@setback_count > 0 and @setback != '' "+syncSessionCondition+"]");
                            spooler_log.debug9("orders being set back: " + signalNodes.getLength() + " /spooler/answer/state/job_chains/job_chain[@path = '" + dependentJobChainPath + "']/job_chain_node[@state = '" + dependentNodeName + "']/order_queue/order[@setback_count > 0 and @setback != ''"+syncSessionCondition+"]");
                        } else {
                            signalNodes = currentStatusXPath.selectNodeList("/spooler/answer/state/job_chains/job_chain[@path = '" + dependentJobChainPath + "']/job_chain_node[@state = '" + dependentNodeName + "']/order_queue/order[@suspended = 'yes' "+syncSessionCondition+"]");
                            spooler_log.debug9("orders being suspended: " + signalNodes.getLength() + " /spooler/answer/state/job_chains/job_chain[@path = '" + dependentJobChainPath + "']/job_chain_node[@state = '" + dependentNodeName + "']/order_queue/order[@suspended = 'yes' "+syncSessionCondition+"]");
                        }
                        if (signalNodes == null || signalNodes.getLength() < 1) {
                            spooler_log.info("no suspended or set back orders found in dependent job chain: " + dependentJobChainPath);
                            continue;
                        }

                        SOSXMLXPath xPath = null;
                        String answer = "";
                        int requiredOrders = 1;
                        if (dependentJobChainPath.lastIndexOf("/") > -1) {
                            dependentJobChainName = dependentJobChainPath.substring(dependentJobChainPath.lastIndexOf("/")+1);
                        } else {
                            dependentJobChainName = dependentJobChainPath;
                        }

                        if (spooler_task.params().value(dependentJobChainName + "_required_orders") != null && spooler_task.params().value(dependentJobChainName + "_required_orders").length() > 0) {
                            requiredOrders = Integer.parseInt(spooler_task.params().value(dependentJobChainName + "_required_orders"));
                        } else if (spooler_task.params().value("required_orders") != null && spooler_task.params().value("required_orders").length() > 0) {
                            requiredOrders = Integer.parseInt(spooler_task.params().value("required_orders"));
                        }

                        for(int i=0; i<signalNodes.getLength(); i++) {
                            if (i >= requiredOrders) {
                                spooler_log.debug9("maximum number of orders for reactivation reached: found " + i + ", required " + requiredOrders);
                                break;
                            }
                           
                            spooler_log.info("signalling order [" + signalNodes.item(i).getAttributes().getNamedItem("id").getNodeValue() + "] to be continued for job chain [" + dependentJobChainPath + "]");
                            if (signalNodes.item(i).getAttributes().getNamedItem("setback") != null) {
                                if (!this.setbackType.equalsIgnoreCase("setback")) {
                                  String signalVariable = keyName+ "_pass_through_next_order";
                                    // signal current job chain to pass through the required number of orders minus the current one
                                    if (dependentJobChainPath.equals(currentJobChainPath) && dependentNodeName.equals(currentNodeName)) {
                                        if (orders[1]-1 > 0) {
                                            spooler.set_var(signalVariable, Integer.toString(orders[1]-1));
                                        }
                                    } else {
                                        // make other job chains pass through the required number of orders
                                        spooler.set_var(signalVariable, Integer.toString(orders[1]));
                                    }
                                    spooler_log.info("signalling next " + orders[1] + " orders to be passed through by job chain: " + dependentJobChainPath+", state ["+dependentNodeName+"]");
                                }

                                spooler_log.debug9("activate order after setback: <modify_order job_chain='" + dependentJobChainPath + "' order='" + signalNodes.item(i).getAttributes().getNamedItem("id").getNodeValue() + "' setback='no'/>");
                                answer = spooler.execute_xml("<modify_order job_chain='" + dependentJobChainPath + "' order='" + signalNodes.item(i).getAttributes().getNamedItem("id").getNodeValue() + "' setback='no'/>");
                            } else {
                                Job_chain j = spooler.job_chain(dependentJobChainPath);
                                spooler_log.debug9("---> dependentJobChainPath:" + dependentJobChainPath);
                                Job_chain_node n = j.node(signalNodes.item(i).getAttributes().getNamedItem("state").getNodeValue());
                                Job_chain_node next_n = n.next_node();
                                if (next_n.job() == null) {
                                   spooler_log.info("end state reached");
                                }
                                String next_state = n.next_state();
View Full Code Here

    order_params.set_var("mail_subject", message.getSubject());
    order_params.set_var("mail_body", message.getPlainTextBody());
    order_params.set_var("mail_send_at", message.getSentDateAsString());
    if (mailSchedulerHost.equals(spooler.hostname()) && mailSchedulerPort == spooler.tcp_port()) {
      sosLogger.debug3("...host/port is this host and port. Using API");
      Job_chain j = spooler.job_chain(jobchain);
      sosLogger.debug3("...jobchain " + jobchain + " created.");
      Order o = spooler.create_order();
      o.params().merge(order_params);
      // if (!id.equals(""))o.set_id(id);
      sosLogger.debug3("...order " + o.id() + " created.");
      if (!state.equals(""))
        o.set_state(state);
      if (!title.equals(""))
        o.set_title(title);
      j.add_order(o);
      sosLogger.debug3("...order added to " + jobchain);
    }
    else {
      startOrderXML(host_, port_, jobchain, id, state, title, order_params);
    }
View Full Code Here

     */
    private void createJobChain() throws Exception {
        getLogger().debug3("Calling " + SOSClassUtil.getMethodName());
        if (spooler.job_chain_exists(jobChainName))
            return;
        Job_chain jobChain = spooler.create_job_chain();
        getLogger().debug5(".. job chain [" + jobChainName + "] created.");
        jobChain.set_name(this.getJobName() + "." + jobChainName);
        jobChain.add_job(jobChainName, "0", "100", "1100");
        getLogger().debug3(".. job [" + jobChainName + "] added.");
        jobChain.add_end_state("100"); // on success
        jobChain.add_end_state("1100");// on error
        spooler.add_job_chain(jobChain);
        getLogger().debug3("Calling " + SOSClassUtil.getMethodName());
    }//createJobChain
View Full Code Here

   * @param currentJob object representing the current job (to resolve the relative path)
   * @return Job_chain object
   * @throws Exception if the job chain is not found
   */
  public Job_chain getJobChain(String jobChainName, Job currentJob) throws Exception{
    Job_chain jobChain = null;
    if (spooler.job_chain_exists(jobChainName)){
      jobChain = spooler.job_chain(jobChainName);
    } else {
      String jobChainCompletePath = currentJob.folder_path()+"/"+jobChainName;
      if (!spooler.job_chain_exists(jobChainCompletePath))
View Full Code Here

   * @param currentJob object representing the current job (to resolve the relative path)
   * @return Job Chain path
   * @throws Exception if the job chain is not found
   */
  public String getJobChainPath(String jobChainName, Job currentJob) throws Exception{
    Job_chain jobChain = null;
    if (spooler.job_chain_exists(jobChainName)){
      return jobChainName;
    } else {
      String jobChainCompletePath = currentJob.folder_path()+"/"+jobChainName;
      if (!spooler.job_chain_exists(jobChainCompletePath))
View Full Code Here

TOP

Related Classes of sos.spooler.Job_chain

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.