\label{doc_usecases_specification_underline-specification_md_md_doc_usecases_specification_underline_specification}%
\Hypertarget{doc_usecases_specification_underline-specification_md_md_doc_usecases_specification_underline_specification}%
 \hypertarget{doc_usecases_specification_underline-specification_md_autotoc_md4723}{}\doxysection{Summary}\label{doc_usecases_specification_underline-specification_md_autotoc_md4723}

\begin{DoxyItemize}
\item {\bfseries{Scope\+:}} {\ttfamily spec}
\item {\bfseries{Level\+:}} Developer Goal
\item {\bfseries{Actors\+:}} Dev-\/\+Ops Engineer
\item {\bfseries{Brief\+:}} This use case introduces an underline specification for a part of the dockerd configuration file (daemon.\+json).
\end{DoxyItemize}\hypertarget{doc_usecases_specification_underline-specification_md_autotoc_md4724}{}\doxysection{Scenarios}\label{doc_usecases_specification_underline-specification_md_autotoc_md4724}

\begin{DoxyItemize}
\item {\bfseries{Precondition\+:}} The Dev-\/\+Ops Engineer has a working setup for {\ttfamily docker} and the daemon {\ttfamily dockerd}.
\item {\bfseries{Main success scenario\+:}}
\begin{DoxyItemize}
\item The Dev-\/\+Ops Engineer wants to write a specification for the {\ttfamily runtimes} in the {\ttfamily dockerd} configuration file.
\item The underline specification configuration keys are {\ttfamily runtimes/\+\_\+}, {\ttfamily runtimes/\+\_\+/path}, {\ttfamily runtimes/\+\_\+/runtime\+Args/\#}.
\item The specification uses {\ttfamily type}, {\ttfamily description} and {\ttfamily example} as metakeys.
\item The underline configuration is defined by the wildcard character {\ttfamily \+\_\+}.
\item The keys are all stored for the {\ttfamily spec} namespace.
\end{DoxyItemize}
\item {\bfseries{Alternative scenario\+:}}
\begin{DoxyItemize}
\item Define the storage type with an array specification.
\item The array specification configuration keys are {\ttfamily runtimes/\#}, {\ttfamily runtimes/\#/path}, {\ttfamily runtimes/\#/runtime\+Args/\#}.
\item The configuration key {\ttfamily runtimes/\#} uses {\ttfamily array/min}, {\ttfamily description} and {\ttfamily example} as metakeys.
\item The configuration key {\ttfamily runtimes/\#/path} uses {\ttfamily type}, {\ttfamily description} and {\ttfamily example}.
\item The configuration key {\ttfamily runtimes/\#/runtime\+Args/\#} still uses {\ttfamily array/min}, {\ttfamily description} and {\ttfamily example}.
\end{DoxyItemize}
\item {\bfseries{Error scenario\+:}}
\begin{DoxyItemize}
\item Wrong metakeys are used (yielded as error to the user).
\end{DoxyItemize}
\item {\bfseries{Postcondition\+:}} The keys are all stored for the {\ttfamily spec} namespace..
\item {\bfseries{Non-\/functional Constraints\+:}} None.
\end{DoxyItemize}\hypertarget{doc_usecases_specification_underline-specification_md_autotoc_md4725}{}\doxysection{Example}\label{doc_usecases_specification_underline-specification_md_autotoc_md4725}
The {\ttfamily runtimes} configuration for the {\ttfamily dockerd} could look like\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{[runtimes/\_]}
\DoxyCodeLine{meta:/type = string}
\DoxyCodeLine{meta:/description = Additional OCI compatible runtime}
\DoxyCodeLine{meta:/example = custom}
\DoxyCodeLine{}
\DoxyCodeLine{[runtimes/\_/path]}
\DoxyCodeLine{meta:/type = string}
\DoxyCodeLine{meta:/description = The path to the OCI compatible runtime}
\DoxyCodeLine{meta:/example = /usr/local/bin/my-\/runc-\/replacement}
\DoxyCodeLine{}
\DoxyCodeLine{[runtimes/\_/runtimeArgs/\#]}
\DoxyCodeLine{meta:/array/min = 0}
\DoxyCodeLine{meta:/description = The runtime arguments for the OCI compatible runtime}
\DoxyCodeLine{meta:/example = -\/-\/debug}

\end{DoxyCode}


For the full specification of the {\ttfamily dockerd} configuration file see \href{/home/jenkins/workspace/libelektra-release/examples/spec/dockerd.ini}{\texttt{ dockerd-\/spec}}. 