% 
% Licensed to the Apache Software Foundation (ASF) under one
% or more contributor license agreements.  See the NOTICE file
% distributed with this work for additional information
% regarding copyright ownership.  The ASF licenses this file
% to you under the Apache License, Version 2.0 (the
% "License"); you may not use this file except in compliance
% with the License.  You may obtain a copy of the License at
% 
%   http://www.apache.org/licenses/LICENSE-2.0
% 
% Unless required by applicable law or agreed to in writing,
% software distributed under the License is distributed on an
% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
% KIND, either express or implied.  See the License for the
% specific language governing permissions and limitations
% under the License.
% 
% Create well-known link to this spot for HTML version
\ifpdf
\else
\HCode{<a name='DUCC_VIADUCC'></a>}
\fi
    \section{viaducc and java\_viaducc}
    \label{sec:cli.viaducc}

    \paragraph{Description:}
        Viaducc is a small script wrapper around the \hyperref[sec:cli.ducc-process-submit]{\em
          ducc\_process\_submit } CLI to facilitate launching processes on DUCC-managed machines,
          either from the command line or from an Eclipse run configuration.

        \begin{sloppypar}
          When run from the command line as ``viaducc'', the arguments are bundled into the form expected by
          \hyperref[sec:cli.ducc-process-submit]{\em ducc\_process\_submit } and submitted to DUCC.
          By default the remote stdin and stdout of the deployed process are mapped back to the 
          command line terminal.
        \end{sloppypar}
        
        If a symbolic link to the viaducc script is created with the name ``java\_viaducc''
        and used from the command line,
        the arguments are assumed to be a Java classname and its arguments.
        The java process will be executed using DUCC's default JRE, or
        optionally, a specific JRE supplied by the user with a -D argument.

        If the ``java\_viaducc'' symbolic link is installed in a JRE/bin directory, DUCC will use
        the java executable from the same directory. More interestingly, it may be specified as an alternative
        to the ``java'' command in an eclipse launcher.  The remote stdin and stdout of the deployed
        DUCC process are redirected to the Eclipse console.  This provides essentially transparent
        execution of code in an Eclipse workspaces on DUCC-managed resources.

    \paragraph{Usage:}
\begin{verbatim}
     viaducc [defines] [command and parameters]"
\end{verbatim}
     or
\begin{verbatim}
     java_viaducc [defines] [java-class and parameters]"
\end{verbatim}

     The ``defines'' are described below.  The ``command and parameters'' are either any command
     (with full path) and it's arguments, or a Java class (with a ``main'') and its arguments (including
     the classpath if necessary.)

     \paragraph{Defines}

     The arguments are specified in the syntax of Java ``-D'' system properties, to be more consistent
     with execution under Eclipse.
     \begin{description}
         \item[-DDUCC\_MEMORY\_SIZE] This specifies the memory required, in GB.  If not specified, the
           smallest memory quanta configured for the scheduler is used.
         \item[-DDUCC\_CLASS] This is the scheduling class to submit the process to.  It should generally
           be a non-preemptable class.  If not specified, it defaults to class ``fixed''.
         \item[-DDUCC\_ENVIRONMENT] This species additional environment parameters to pass to the job.
           It should specify a quoted string of blank-delimeted K=V environment values.  For example:
\begin{verbatim}
      -DDUCC_ENVIRONMENT="DUCC_RLIMIT_NOFILE=1000 V1=V2 A=B"
\end{verbatim}
         \item[-DJAVA\_BIN] This species the exact ``java'' command to use, for ``java\_viaducc''.  it
           must be a full path to some JRE that is known to be installed on all the DUCC nodes.  If not
           specified, the JRE used to run ducc is uses.
    \end{description}
        
