%
% Copyright (c) 2006 XenSource, Inc.
%
% Permission is granted to copy, distribute and/or modify this document under
% the terms of the GNU Free Documentation License, Version 1.2 or any later
% version published by the Free Software Foundation; with no Invariant
% Sections, no Front-Cover Texts and no Back-Cover Texts.  A copy of the
% license is included in the section entitled
% "GNU Free Documentation License" or the file fdl.tex.
%
% Authors: Ewan Mellor, Richard Sharp, Dave Scott, Jon Harrop.
%

\section{To-Do}

Lots and lots! Including:

\subsection{Clarity}

\begin{itemize}

\item Roll constructors and get\_by\_uuid etc (section 1.2) into section 2 so
that it is clearer that each class has these.

\item Emphasise that enums are strings on the wire, and so are not restricted
to a certain number of bits.

\item Clarify return values, in particular that void means return a status
code, potential error description, but otherwise no value.

\item Talk about UUID generation.

\item Clarify session behaviour wrt timeouts and disconnects.

\item Clarify behaviour of progress field on asyncrhonous request polling when
that request fails.

\item Clarify which calls have asynchronous counterparts by marking them as such in the reference. (Individual getters and setters are too small and quick to justify having async versions)

\end{itemize}

\subsection{Content}

\subsubsection{Model}

\begin{itemize}

\item Improve the set of available power\_states and corresponding lifecycle
semantics.  Rename power\_state, maybe.

\item Specify the CPU scheduler configuration properly, inc CPU affinity,
weights, etc.

\item Add Vm.architecture and Host.compatible\_architecture fields.

\item Add migration calls, including the ability to test whether a migration
will succeed, and authentication token exchange.

\item Improve asynchronous task handling, with a registration call, a
``blocking poll'' call, and an explicit notification destination.  Registration
for ``power\_state'' is useful.

\item Specify that session keys outlive the HTTP session, and add a timeout
for them (configurable in the tools).

\item Add places for people to store extra data (``otherConfig'' perhaps)

\item Specify how hardware UUIDs are used / accessed.

\item Marking VDIs as exclusive / shareable (locking?)

\item Consider how to represent CDROMs (as VDIs?)

\item Define lists of exceptions which may be thrown by each RPC, including
error codes and parameters.

\item Host characteristics: minimum amount of memory, TPM, network bandwidth,
amount of host memory, amount consumed by VMs, max amount available for new
VMs?

\item Cooked resource monitoring interface.

\item Network needs additional attributes that provide media characteristics
of the NIC:

\begin{itemize}

\item RO bandwidth integer Bandwidth in mbps
\item RO latency integer time in ms for an icmp roundtrip to a host on the
same subnet.

\end{itemize}

\item ACM
\begin{itemize}

\item A Xen system can be running an access control policy where each
VM's run-time access to resources is restricted by the label it has been given
compared to those of the resources. Currently a VM's configuration file may
contain a line like access\_control[policy='$<$name of the system's
policy$>$',label='$<$label given to VM$>$'].  I think the identifiers 'policy'
and 'label' should also be part of the VM class either directly in the form
'access\_control/policy' or indirectly in an access\_control class.

\end{itemize}

\item Mike Day's Vm.profile field?

\item Clone customisation?

\item NIC teaming?  The NIC field of the Network class should be a list (Set)
so that we can signify NIC teaming. (Combining physical NICs in a single host
interface to achieve greater bandwidth).

\end{itemize}

\subsubsection{Transport}

\begin{itemize}

\item Allow non-HTTP transports.  Explicitly allow stdio transport, for SSH.

\end{itemize}

\subsubsection{Authentication}

\begin{itemize}

\item Delegation to the transport layer.

\item Extend PAM exchange across the wire.

\item Fine-grained access control.

\end{itemize}
