% 
% 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.
% 
 
    \subsection{User Interface (UI)}     
    
    There is one \varUserInterface~per \varDUCC~cluster.
    
    The duties of the \varUserInterface~are:
    \textit{
      \input{part5/c01-UI.tex}
    }
        
    The \varUserInterface~provides essential functionality for operation of the
    \varDUCC~system.
    It comprises:   
    \begin{itemize}
      \item Application Program Interface (API)
      \item Command Line Interface (CLI)
    \end{itemize}  
    
    The \varUserInterface~facilities user and administrator operation of the \varDUCC system.
    Supported operations in create, retrieve, update, and modify.
       
    The \varUserInterface~is subdivided into several responsibility areas:

    \begin{itemize}
      \item API
      \item CLI
      \item AIO
      \item WS
      \item JSON
    \end{itemize} 
      
    \subsubsection{API}
          
    Provide application program interface to the \varDUCC~system comprising the ability
    to manage \varJobs, \varReservations~ and \varServices.     
    See \ref{CLI} CLI.
    
    \subsubsection{CLI}
    \label{CLI}
    
    Provide command line interface to the \varDUCC~system comprising the ability
    to manage \varJobs, \varReservations~ and \varServices.  
    
    \begin{itemize} 
      \item{Submit Job}
      \item{Submit Reservation}
      \item{Submit Service}
      \item{Cancel Job}
      \item{Cancel Reservation}
      \item{Cancel Service}
      \item{Modify Job}
      \item{Modify Reservation}
      \item{Modify Service}
      \item{Query Job}
      \item{Query Reservation}
      \item{Query Service}
    \end{itemize}
         
    \subsubsection{AIO}
    
    Provide test and debugging support in preparation for distributed deployment to the
    \varDUCC~system.
    
    \begin{itemize} 
      \item{All-In-One}
        \begin{description}
        \item Create a process comprising a user submitted \varJob.
        \item Install the equivalent of a \varJobDriver.
        \item Install the equivalent of a \varJobProcess.
        \item Process all work items.
        \end{description}
      \item{All-In-One Launcher}
        \begin{description}
        \item Launch an All-In-One process locally or remotely, according to user specification.
        \end{description}  
      \item{CAS Generator}
        \begin{description}
        \item Employ the user specified \varCollectionReader~ to produce \varWorkItems.
        \end{description}  
      \item{CAS Pipeline}
        \begin{description}
        \item Employ the user specified \varAnalysisEngine~ to process \varWorkItems.
        \end{description}  
      \item{DD PArser}
        \begin{description}
        \item Parse the user specified Deployment Descriptor.
        \item Extract the \varImport~name.
        \end{description}  
      \item{Message Handler}
        \begin{description}
        \item User replaceable message handlers for info, debug, error, trace, etc.
        \end{description}      
    \end{itemize}
    
    \subsubsection{WS}
    
    \begin{itemize} 
      \item{Query Machines}
        \begin{description}
        \item Fetch Machine facts.
        \end{description}
      \item{Query Reservation Facts}
        \begin{description}
        \item Fetch Reservation facts.
        \end{description}  
      \item{Query}
        \begin{description}
        \item Fetch node facts.
        \end{description}  
    \end{itemize}
            
    \subsubsection{JSON}
    
    \begin{itemize} 
      \item{Machine Facts}
        \begin{description}
        \item Provide information management with respect to each \varNodeMachineComputer~in the \varDUCC~cluster, comprising
        status, ip, name, reserve, memory, swap, aliens, sharesTotal, sharesInuse, and heartbeat.
        \end{description}
      \item{Reservation Facts}
        \begin{description}
        \item Provide information management with respect to each \varReservation~in the \varDUCC~cluster, comprising
        id, start, end, user, rclass, state, reason, allocation, userProcesses, size, list, and description.
        \end{description}  
      \item{Node Facts}
        \begin{description}
        \item Provide information management with respect to each \varNodeMachineComputer~in the \varDUCC~cluster, comprising
        a list of nodes and corresponding PIDs.
        \end{description}  
    \end{itemize}
          