all: generate doc
-generate: events.tex status.tex ver.tex
+generate: events.tex status.tex ver.tex nameslists.tex
doc: LBUG.pdf LBAG.pdf LBDG.pdf LBTP.pdf LBTG.pdf
done
clean:
- rm -rvf LBUG* LBAG* LBDG* LBTP* LBTG* events.tex status.tex ver.tex comment*
+ rm -rvf LBUG* LBAG* LBDG* LBTP* LBTG* events.tex status.tex nameslists.tex ver.tex comment*
rm -rvf dist ${package}-*.tar.gz
distclean:
LBUG-Introduction.tex components.tex \
LBUG-Tools.tex logevent.tex https_configuration.tex notify.tex log_usertag.tex change_acl.tex \
LBUG-Troubleshooting.tex \
- LBUG-Appendix.tex events.tex status.tex faq.tex
+ LBUG-Appendix.tex events.tex status.tex nameslists.tex faq.tex
LBAG.pdf: ${COMMON} \
LBAG.tex \
glite-lb-authz.conf & Authorization policy, in use since \LBver{2.1}. Extensively explained in Section \ref{inst:authz} (page \pageref{inst:authz}).\\
log4crc & Logging output configuration, in use since \LBver{2.0}. Explained in Section \ref{inst:comlog} (page \pageref{inst:comlog}).\\
msg.conf & Messaging plugin and features configuration, in use since \LBver{3.0}. Explained in Section \ref{inst:messaging} (page \pageref{inst:messaging}).\\
-site-notif.conf & Permanent notification registrations to be maintained on the server. Available since \LBver{3.2}. Explained in section \ref{inst:sitenotif} (page \pageref{inst:sitenotif}).
-%\\glite-lb-my.cnf & Pre-prepared \emph{MySQL} configuration file, designed to be included in \texttt{my.cnf} by the \texttt{!include} directive. Available since \LBver{3.2}.
+site-notif.conf & Permanent notification registrations to be maintained on the server. Available since \LBver{3.2}. Explained in section \ref{inst:sitenotif} (page \pageref{inst:sitenotif}).\\
+%glite-lb-my.cnf & Pre-prepared \emph{MySQL} configuration file, designed to be included in \texttt{my.cnf} by the \texttt{!include} directive. Available since \LBver{3.2}.\\
+html-header.html & Recognized since \LBver{3.3}; optional HTML header to be included in all \LB server's HTML output. Explained in section \ref{inst:branding} (page \pageref{inst:branding}).
\end{tabularx}
Besides configuration files observed directly by \LB's services, there is a score of other files installed by \LB and used by other system services. They are:
\end{itemize}
+\subsubsection{Branding \LB's HTML output}
+\label{inst:branding}
+
+Since \LBver{3.3}, the server allows site admins to specify header files to be used in all HTML output, branding it with their home organization's visual style or logos. The server looks for the file at \texttt{/etc/glite-lb/html-header.html} but option \texttt{-H} can be used to specify a different location. The contents of the file are inserted verbatim between the \texttt{<head>} and \texttt{</head>} tags and typically they will give a \texttt{<style>} definition.
+
+The include file's existence is checked on server startup, meaning that it must exist at that moment to be used in the session at all. It is not stored in memory, however, but rather read again from disk every time HTML output is being generated. This simplifies debugging/development of the style file.
+
+It is important to note that \LB does in no way parse the file. It simply includes it ``as is'' and making the resulting output valid is the sole responsibility of the site administrator.
+
\subsection{\LB proxy}
\label{inst:LBproxy}
% TODO: Describe LB Proxy migration here.
Complete reference of the query language can be found in~\LB Developer's Guide
\cite{lbdg}.
+As of \LBver{3.3} a subset of the querying interface, allowing to query for jobs trhough query attributes, is also accessible over \LB's HTML interface (Section~\ref{HTML:queries}, page~\pageref{HTML:queries}).
+
\subsubsection{Notifications}
\LB notifications are the other mode of user interaction.
https://pelargir.ics.muni.cz:9000/1234567890?text
\end{verbatim}
+\subsubsection{Querying for Jobs by Attribute}
+\label{HTML:queries}
+
+A subset of the \LB querying API---specifically job queries---has been made available over the HTML interface as of \LBver{3.3}. It supports the full range\footnote{There a single exception: it does not implement any syntax for using the \emph{within} operator, which must therefore be expressed as a combination of \emph{greater than AND lower than} conditions} of job queries as discussed in \cite{lbdg} and is also subject to the same limitations, i. e., that multiple conditions may only be combined in the following structure:
+$$(attr_{1}cond_{1} \vee \dots \vee attr_{1}cond_{n}) \wedge \dots \wedge (attr_{n}cond_{1} \vee \dots \vee attr_{n}cond_{n})$$
+In other words, different attributes given in the query are always \emph{AND}ed, meaning that they must all be satisfied at once, but different \emph{OR} conditions can be given for the same attribute within the same query.
+
+Conditions are conveyed to the \LB server through a query string starting with \texttt{?query}, which becomes a part of the URL, allowing frequently used queries to be stored as bookmarks in any Web browser. For instance, to check for all your currenlty running jobs, an URL constructed along the following pattern could be used:
+
+\begin{verbatim}
+https://pelargir.ics.muni.cz:9000/?query=status=running
+\end{verbatim}
+
+It is important to note that in its default configuration, \LB server requires at least one indexed attribute to be included in the query.\footnote{The list of indexed attributes can be received from the given \LB server's configuration page (see Section~\ref{s:findbroker}).} In most installations, attributes such as \emph{owner} or \emph{last update time} will be indexed. Toquery for all running jobs in such conditions, add an indexed attribute to your query. For instance:
+
+\begin{verbatim}
+https://pelargir.ics.muni.cz:9000/?query=status=running&lastupdatetime>1577836800
+\end{verbatim}
+
+Note that temporal attributes such as \emph{last update time} or \emph{state enter time} accept UNIX time values.
+
+Since \emph{OR}ed conditions may only apply to a single attribute, the name of the attribute is given only once in the condition. For instance, to query for jobs in state \emph{running} or \emph{scheduled}:
+
+\begin{verbatim}
+https://pelargir.ics.muni.cz:9000/?query=status=scheduled|=running
+\end{verbatim}
+
+{\raggedright{}Currently the query attributes supported are: \texttt{jobid}, \texttt{owner}, \texttt{status}, \texttt{location}, \texttt{destination}, \texttt{donecode}, \texttt{usertag}, \texttt{time}, \texttt{level}, \texttt{host}, \texttt{source}, \texttt{instance}, \texttt{type}, \texttt{chkpt\_tag}, \texttt{resubmitted}, \texttt{parent\_job}, \texttt{exitcode}, \texttt{jdl}, \texttt{stateentertime}, \texttt{lastupdatetime}, \texttt{networkserver} and \texttt{jobtype}.}
+
+Supported operators are: \texttt{=}, \texttt{<>}, \texttt{>} or \texttt{<}.
+
+Supported job state values (attribute \texttt{status}) are listed in Appendix~\ref{a:jobstat}.
+
+{\raggedright{}Supported job type values are: \jobtypenames.}
+
+All queries result in a list of JobIDs of jobs that match the specified criteria.
+
\input{https_configuration}
+\subsubsection{Summary of Applicable Query Strings}
+\label{HTML:querystrings}
+
\subsection{Job state changes as an RSS feed}
The \LB includes an RSS interface allowing users to keep trace of their jobs in a very simple way using an RSS reader. The parameters of the RSS feeds are predefined, so no configuration is required.
\lstinline'EDG_WLL_QUERY_ATTR_JDL_ATTR' & Arbitrary JDL attribute. \\
\lstinline'EDG_WLL_QUERY_ATTR_STATEENTERTIME' & When entered current status. \\
\lstinline'EDG_WLL_QUERY_ATTR_LASTUPDATETIME' & Time of the last known event of the job. \\
+\lstinline'EDG_WLL_QUERY_ATTR_JOB_TYPE' & Job type. \\
\end{tabularx}
\caption{Query record specific attributes.}
\label{t:cqueryattr}
\newcommand{\email}[1]{\href{mailto:#1}{#1}}
\input{ver.tex}
+\input{nameslists.tex}
--- /dev/null
+@@@{
+gen qq{
+% !! Automatically generated file. Do not edit.
+% !! Change the corresponding template file $ARGV
+};
+@@@}
+
+@@@{
+ for my $n ($status->getAllFieldsOrdered) {
+ my $f = selectField $status $n;
+ if ($f->{codes}) {
+ my $n = lc (ucfirst getName $f);
+ printf("\\def\\${n}names{");
+ my $num = 0;
+ for (@{$f->{codes}}) {
+ my $uc = lc(uc $_->{name});
+ next if ($uc =~ m/unused/);
+ $uc =~ s/_/\\_/g;
+ $uc =~ tr/-/_/;
+ if ( $num != 0 ) { printf (", "); }
+ printf("\\texttt{$uc}");
+ $num++;
+ }
+ printf("}\n\n");
+ }
+ }
+@@@}
+
\textbf{The following versions of \LB service are covered by these documents:}
\begin{itemize}
-%\item \LBver{x.x}: included in the EMI-3 \emph{Monte Bianco} release
+\item \LBver{3.3}: included in the EMI-3 \emph{Monte Bianco} release
\item \LBver{3.2}: included in the EMI-2 \emph{Matterhorn} release
\item \LBver{3.1}: an update for the EMI-1 \emph{Kebnekaise} release
\item \LBver{3.0}: included in the EMI-1 \emph{Kebnekaise} release
if (!html_header) {
char *html_header_prefix = getenv("GLITE_LB_LOCATION_ETC");
if (!html_header_prefix) html_header_prefix="/etc/glite-lb";
- asprintf(&html_header, "%s/html_header.html", html_header_prefix);
+ asprintf(&html_header, "%s/html-header.html", html_header_prefix);
}
if (html_header) {
FILE *fp = fopen(html_header, "r");