%
% Copyright (c) 2006-2007 XenSource, Inc.
% Copyright (c) 2009 flonatel GmbH & Co. KG
%
% 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.
% Contributor: Andreas Florath
%

\chapter{API Reference}
\label{api-reference}


\section{Classes}
The following classes are defined:

\begin{center}\begin{tabular}{|lp{10cm}|}
\hline
Name & Description \\
\hline
{\tt session} & A session \\
{\tt task} & A long-running asynchronous task \\
{\tt event} & Asynchronous event registration and handling \\
{\tt VM} & A virtual machine (or 'guest') \\
{\tt VM\_metrics} & The metrics associated with a VM \\
{\tt VM\_guest\_metrics} & The metrics reported by the guest (as opposed to inferred from outside) \\
{\tt host} & A physical host \\
{\tt host\_metrics} & The metrics associated with a host \\
{\tt host\_cpu} & A physical CPU \\
{\tt network} & A virtual network \\
{\tt VIF} & A virtual network interface \\
{\tt VIF\_metrics} & The metrics associated with a virtual network device \\
{\tt PIF} & A physical network interface (note separate VLANs are represented as several PIFs) \\
{\tt PIF\_metrics} & The metrics associated with a physical network interface \\
{\tt SR} & A storage repository \\
{\tt VDI} & A virtual disk image \\
{\tt VBD} & A virtual block device \\
{\tt VBD\_metrics} & The metrics associated with a virtual block device \\
{\tt PBD} & The physical block devices through which hosts access SRs \\
{\tt crashdump} & A VM crashdump \\
{\tt VTPM} & A virtual TPM device \\
{\tt console} & A console \\
{\tt DPCI} & A pass-through PCI device \\
{\tt PPCI} & A physical PCI device \\
{\tt DSCSI} & A half-virtualized SCSI device \\
{\tt DSCSI\_HBA} & A half-virtualized SCSI host bus adapter \\
{\tt PSCSI} & A physical SCSI device \\
{\tt PSCSI\_HBA} & A physical SCSI host bus adapter \\
{\tt user} & A user of the system \\
{\tt debug} & A basic class for testing \\
{\tt XSPolicy} & A class for handling Xen Security Policies \\
{\tt ACMPolicy} & A class for handling ACM-type policies \\
\hline
\end{tabular}\end{center}
\section{Relationships Between Classes}
Fields that are bound together are shown in the following table: 
\begin{center}\begin{tabular}{|ll|l|}
\hline
{\em object.field} & {\em object.field} & {\em relationship} \\

\hline
host.PBDs & PBD.host & many-to-one\\
SR.PBDs & PBD.SR & many-to-one\\
VDI.VBDs & VBD.VDI & many-to-one\\
VDI.crash\_dumps & crashdump.VDI & many-to-one\\
VBD.VM & VM.VBDs & one-to-many\\
crashdump.VM & VM.crash\_dumps & one-to-many\\
VIF.VM & VM.VIFs & one-to-many\\
VIF.network & network.VIFs & one-to-many\\
PIF.host & host.PIFs & one-to-many\\
PIF.network & network.PIFs & one-to-many\\
SR.VDIs & VDI.SR & many-to-one\\
VTPM.VM & VM.VTPMs & one-to-many\\
console.VM & VM.consoles & one-to-many\\
DPCI.VM & VM.DPCIs & one-to-many\\
PPCI.host & host.PPCIs & one-to-many\\
DSCSI.VM & VM.DSCSIs & one-to-many\\
DSCSI.HBA & DSCSI\_HBA.DSCSIs & one-to-many\\
DSCSI\_HBA.VM & VM.DSCSI\_HBAs & one-to-many\\
PSCSI.host & host.PSCSIs & one-to-many\\
PSCSI.HBA & PSCSI\_HBA.PSCSIs & one-to-many\\
PSCSI\_HBA.host & host.PSCSI\_HBAs & one-to-many\\
host.resident\_VMs & VM.resident\_on & many-to-one\\
host.host\_CPUs & host\_cpu.host & many-to-one\\
\hline
\end{tabular}\end{center}

The following represents bound fields (as specified above) diagrammatically, using crows-foot notation to specify one-to-one, one-to-many or many-to-many
                   relationships:

\begin{center}\resizebox{0.8\textwidth}{!}{
\includegraphics{xenapi-datamodel-graph}
}\end{center}
\
\subsection{List of bound fields}
\section{Types}
\subsection{Primitives}
The following primitive types are used to specify methods and fields in the API Reference:

\begin{center}\begin{tabular}{|ll|}
\hline
Type & Description \\
\hline
String & text strings \\
Int    & 64-bit integers \\
Float & IEEE double-precision floating-point numbers \\
Bool   & boolean \\
DateTime & date and timestamp \\
Ref (object name) & reference to an object of class name \\
\hline
\end{tabular}\end{center}
\subsection{Higher order types}
The following type constructors are used:

\begin{center}\begin{tabular}{|ll|}
\hline
Type & Description \\
\hline
List (t) & an arbitrary-length list of elements of type t \\
Map (a $\rightarrow$ b) & a table mapping values of type a to values of type b \\
\hline
\end{tabular}\end{center}
\subsection{Enumeration types}
The following enumeration types are used:

\begin{longtable}{|ll|}
\hline
{\tt enum event\_operation} & \\
\hline
\hspace{0.5cm}{\tt add} & An object has been created \\
\hspace{0.5cm}{\tt del} & An object has been deleted \\
\hspace{0.5cm}{\tt mod} & An object has been modified \\
\hline
\end{longtable}

\vspace{1cm}
\begin{longtable}{|ll|}
\hline
{\tt enum console\_protocol} & \\
\hline
\hspace{0.5cm}{\tt vt100} & VT100 terminal \\
\hspace{0.5cm}{\tt rfb} & Remote FrameBuffer protocol (as used in VNC) \\
\hspace{0.5cm}{\tt rdp} & Remote Desktop Protocol \\
\hline
\end{longtable}

\vspace{1cm}
\begin{longtable}{|ll|}
\hline
{\tt enum vdi\_type} & \\
\hline
\hspace{0.5cm}{\tt system} & a disk that may be replaced on upgrade \\
\hspace{0.5cm}{\tt user} & a disk that is always preserved on upgrade \\
\hspace{0.5cm}{\tt ephemeral} & a disk that may be reformatted on upgrade \\
\hspace{0.5cm}{\tt suspend} & a disk that stores a suspend image \\
\hspace{0.5cm}{\tt crashdump} & a disk that stores VM crashdump information \\
\hline
\end{longtable}

\vspace{1cm}
\begin{longtable}{|ll|}
\hline
{\tt enum vm\_power\_state} & \\
\hline
\hspace{0.5cm}{\tt Halted} & Halted \\
\hspace{0.5cm}{\tt Paused} & Paused \\
\hspace{0.5cm}{\tt Running} & Running \\
\hspace{0.5cm}{\tt Suspended} & Suspended \\
\hspace{0.5cm}{\tt Crashed} & Crashed \\
\hspace{0.5cm}{\tt Unknown} & Some other unknown state \\
\hline
\end{longtable}

\vspace{1cm}
\begin{longtable}{|ll|}
\hline
{\tt enum task\_allowed\_operations} & \\
\hline
\hspace{0.5cm}{\tt Cancel} & Cancel \\
\hline
\end{longtable}

\vspace{1cm}
\begin{longtable}{|ll|}
\hline
{\tt enum task\_status\_type} & \\
\hline
\hspace{0.5cm}{\tt pending} & task is in progress \\
\hspace{0.5cm}{\tt success} & task was completed successfully \\
\hspace{0.5cm}{\tt failure} & task has failed \\
\hspace{0.5cm}{\tt cancelling} & task is being cancelled \\
\hspace{0.5cm}{\tt cancelled} & task has been cancelled \\
\hline
\end{longtable}

\vspace{1cm}
\begin{longtable}{|ll|}
\hline
{\tt enum on\_normal\_exit} & \\
\hline
\hspace{0.5cm}{\tt destroy} & destroy the VM state \\
\hspace{0.5cm}{\tt restart} & restart the VM \\
\hline
\end{longtable}

\vspace{1cm}
\begin{longtable}{|ll|}
\hline
{\tt enum on\_crash\_behaviour} & \\
\hline
\hspace{0.5cm}{\tt destroy} & destroy the VM state \\
\hspace{0.5cm}{\tt coredump\_and\_destroy} & record a coredump and then destroy the VM state \\
\hspace{0.5cm}{\tt restart} & restart the VM \\
\hspace{0.5cm}{\tt coredump\_and\_restart} & record a coredump and then restart the VM \\
\hspace{0.5cm}{\tt preserve} & leave the crashed VM as-is \\
\hspace{0.5cm}{\tt rename\_restart} & rename the crashed VM and start a new copy \\
\hline
\end{longtable}

\vspace{1cm}
\begin{longtable}{|ll|}
\hline
{\tt enum vbd\_mode} & \\
\hline
\hspace{0.5cm}{\tt RO} & disk is mounted read-only \\
\hspace{0.5cm}{\tt RW} & disk is mounted read-write \\
\hline
\end{longtable}

\vspace{1cm}
\begin{longtable}{|ll|}
\hline
{\tt enum vbd\_type} & \\
\hline
\hspace{0.5cm}{\tt CD} & VBD will appear to guest as CD \\
\hspace{0.5cm}{\tt Disk} & VBD will appear to guest as disk \\
\hline
\end{longtable}

\vspace{1cm}
\newpage

\section{Error Handling}
When a low-level transport error occurs, or a request is malformed at the HTTP
or XML-RPC level, the server may send an XML-RPC Fault response, or the client
may simulate the same.  The client must be prepared to handle these errors,
though they may be treated as fatal.  On the wire, these are transmitted in a
form similar to this:

\begin{verbatim}
    <methodResponse>
      <fault>
        <value>
          <struct>
            <member>
                <name>faultCode</name>
                <value><int>-1</int></value>
              </member>
              <member>
                <name>faultString</name>
                <value><string>Malformed request</string></value>
            </member>
          </struct>
        </value>
      </fault>
    </methodResponse>
\end{verbatim}

All other failures are reported with a more structured error response, to
allow better automatic response to failures, proper internationalisation of
any error message, and easier debugging.  On the wire, these are transmitted
like this:

\begin{verbatim}
    <struct>
      <member>
        <name>Status</name>
        <value>Failure</value>
      </member>
      <member>
        <name>ErrorDescription</name>
        <value>
          <array>
            <data>
              <value>MAP_DUPLICATE_KEY</value>
              <value>Customer</value>
              <value>eSpeil Inc.</value>
              <value>eSpeil Incorporated</value>
            </data>
          </array>
        </value>
      </member>
    </struct>
\end{verbatim}

Note that {\tt ErrorDescription} value is an array of string values. The
first element of the array is an error code; the remainder of the array are
strings representing error parameters relating to that code.  In this case,
the client has attempted to add the mapping {\tt Customer $\rightarrow$
eSpiel Incorporated} to a Map, but it already contains the mapping
{\tt Customer $\rightarrow$ eSpiel Inc.}, and so the request has failed.

The reference below lists each possible error returned by each method.
As well as the errors explicitly listed, any method may return low-level
errors as described above, or any of the following generic errors:

\begin{itemize}
\item HANDLE\_INVALID
\item INTERNAL\_ERROR
\item MAP\_DUPLICATE\_KEY
\item MESSAGE\_METHOD\_UNKNOWN
\item MESSAGE\_PARAMETER\_COUNT\_MISMATCH
\item OPERATION\_NOT\_ALLOWED
\item PERMISSION\_DENIED
\item SESSION\_INVALID
\end{itemize}

Each possible error code is documented in the following section.

\subsection{Error Codes}

\subsubsection{HANDLE\_INVALID}

You gave an invalid handle.  The object may have recently been deleted. 
The class parameter gives the type of reference given, and the handle
parameter echoes the bad value given.

\vspace{0.3cm}
{\bf Signature:}
\begin{verbatim}HANDLE_INVALID(class, handle)\end{verbatim}
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{INTERNAL\_ERROR}

The server failed to handle your request, due to an internal error.  The
given message may give details useful for debugging the problem.

\vspace{0.3cm}
{\bf Signature:}
\begin{verbatim}INTERNAL_ERROR(message)\end{verbatim}
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{MAP\_DUPLICATE\_KEY}

You tried to add a key-value pair to a map, but that key is already there. 
The key, current value, and the new value that you tried to set are all
echoed.

\vspace{0.3cm}
{\bf Signature:}
\begin{verbatim}MAP_DUPLICATE_KEY(key, current value, new value)\end{verbatim}
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{MESSAGE\_METHOD\_UNKNOWN}

You tried to call a method that does not exist.  The method name that you
used is echoed.

\vspace{0.3cm}
{\bf Signature:}
\begin{verbatim}MESSAGE_METHOD_UNKNOWN(method)\end{verbatim}
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{MESSAGE\_PARAMETER\_COUNT\_MISMATCH}

You tried to call a method with the incorrect number of parameters.  The
fully-qualified method name that you used, and the number of received and
expected parameters are returned.

\vspace{0.3cm}
{\bf Signature:}
\begin{verbatim}MESSAGE_PARAMETER_COUNT_MISMATCH(method, expected, received)\end{verbatim}
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{NETWORK\_ALREADY\_CONNECTED}

You tried to create a PIF, but the network you tried to attach it to is
already attached to some other PIF, and so the creation failed.

\vspace{0.3cm}
{\bf Signature:}
\begin{verbatim}NETWORK_ALREADY_CONNECTED(network, connected PIF)\end{verbatim}
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{OPERATION\_NOT\_ALLOWED}

You attempted an operation that was not allowed.

\vspace{0.3cm}
No parameters.
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{PERMISSION\_DENIED}

You do not have the required permissions to perform the operation.

\vspace{0.3cm}
No parameters.
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{PIF\_IS\_PHYSICAL}

You tried to destroy a PIF, but it represents an aspect of the physical
host configuration, and so cannot be destroyed.  The parameter echoes the
PIF handle you gave.

\vspace{0.3cm}
{\bf Signature:}
\begin{verbatim}PIF_IS_PHYSICAL(PIF)\end{verbatim}
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{SESSION\_AUTHENTICATION\_FAILED}

The credentials given by the user are incorrect, so access has been denied,
and you have not been issued a session handle.

\vspace{0.3cm}
No parameters.
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{SESSION\_INVALID}

You gave an invalid session handle.  It may have been invalidated by a
server restart, or timed out.  You should get a new session handle, using
one of the session.login\_ calls.  This error does not invalidate the
current connection.  The handle parameter echoes the bad value given.

\vspace{0.3cm}
{\bf Signature:}
\begin{verbatim}SESSION_INVALID(handle)\end{verbatim}
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{SESSION\_NOT\_REGISTERED}

This session is not registered to receive events.  You must call
event.register before event.next.  The session handle you are using is
echoed.

\vspace{0.3cm}
{\bf Signature:}
\begin{verbatim}SESSION_NOT_REGISTERED(handle)\end{verbatim}
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{VALUE\_NOT\_SUPPORTED}

You attempted to set a value that is not supported by this implementation. 
The fully-qualified field name and the value that you tried to set are
returned.  Also returned is a developer-only diagnostic reason.

\vspace{0.3cm}
{\bf Signature:}
\begin{verbatim}VALUE_NOT_SUPPORTED(field, value, reason)\end{verbatim}
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{VLAN\_TAG\_INVALID}

You tried to create a VLAN, but the tag you gave was invalid -- it must be
between 0 and 4095.  The parameter echoes the VLAN tag you gave.

\vspace{0.3cm}
{\bf Signature:}
\begin{verbatim}VLAN_TAG_INVALID(VLAN)\end{verbatim}
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{VM\_BAD\_POWER\_STATE}

You attempted an operation on a VM that was not in an appropriate power
state at the time; for example, you attempted to start a VM that was
already running.  The parameters returned are the VM's handle, and the
expected and actual VM state at the time of the call.

\vspace{0.3cm}
{\bf Signature:}
\begin{verbatim}VM_BAD_POWER_STATE(vm, expected, actual)\end{verbatim}
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{VM\_HVM\_REQUIRED}

HVM is required for this operation

\vspace{0.3cm}
{\bf Signature:}
\begin{verbatim}VM_HVM_REQUIRED(vm)\end{verbatim}
\begin{center}\rule{10em}{0.1pt}\end{center}

\subsubsection{SECURITY\_ERROR}

A security error occurred. The parameter provides the xen security
error code and a message describing the error.

\vspace{0.3cm}
{\bf Signature:}
\begin{verbatim}SECURITY_ERROR(xserr, message)\end{verbatim}
\begin{center}\rule{10em}{0.1pt}\end{center}


\newpage
\section{Class: session}
\subsection{Fields for class: session}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf session} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
session.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{run}$ &  {\tt this\_host} & host ref & Currently connected host \\
$\mathit{RO}_\mathit{run}$ &  {\tt this\_user} & user ref & Currently connected user \\
$\mathit{RO}_\mathit{run}$ &  {\tt last\_active} & int & Timestamp for last time session was active \\
\hline
\end{longtable}
\subsection{RPCs associated with class: session}
\subsubsection{RPC name:~login\_with\_password}

{\bf Overview:} 
Attempt to authenticate the user, returning a session\_id if successful.

 \noindent {\bf Signature:} 
\begin{verbatim} (session ref) login_with_password (string uname, string pwd)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uname & Username for login. \\ \hline 

{\tt string } & pwd & Password for login. \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
session ref
}


ID of newly created session

\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt SESSION\_AUTHENTICATION\_FAILED}

\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~logout}

{\bf Overview:} 
Log out of a session.

 \noindent {\bf Signature:} 
\begin{verbatim} void logout (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given session.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, session ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt session ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_this\_host}

{\bf Overview:} 
Get the this\_host field of the given session.

 \noindent {\bf Signature:} 
\begin{verbatim} (host ref) get_this_host (session_id s, session ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt session ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
host ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_this\_user}

{\bf Overview:} 
Get the this\_user field of the given session.

 \noindent {\bf Signature:} 
\begin{verbatim} (user ref) get_this_user (session_id s, session ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt session ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
user ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_last\_active}

{\bf Overview:} 
Get the last\_active field of the given session.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_last_active (session_id s, session ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt session ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the session instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (session ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
session ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given session.

 \noindent {\bf Signature:} 
\begin{verbatim} (session record) get_record (session_id s, session ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt session ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
session record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: task}
\subsection{Fields for class: task}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf task} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
long-running asynchronous task.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{run}$ &  {\tt name/label} & string & a human-readable name \\
$\mathit{RO}_\mathit{run}$ &  {\tt name/description} & string & a notes field containg human-readable description \\
$\mathit{RO}_\mathit{run}$ &  {\tt status} & task\_status\_type & current status of the task \\
$\mathit{RO}_\mathit{run}$ &  {\tt session} & session ref & the session that created the task \\
$\mathit{RO}_\mathit{run}$ &  {\tt progress} & int & if the task is still pending, this field contains the estimated percentage complete (0-100). If task has completed (successfully or unsuccessfully) this should be 100. \\
$\mathit{RO}_\mathit{run}$ &  {\tt type} & string & if the task has completed successfully, this field contains the type of the encoded result (i.e. name of the class whose reference is in the result field). Undefined otherwise. \\
$\mathit{RO}_\mathit{run}$ &  {\tt result} & string & if the task has completed successfully, this field contains the result value (either Void or an object reference). Undefined otherwise. \\
$\mathit{RO}_\mathit{run}$ &  {\tt error\_info} & string Set & if the task has failed, this field contains the set of associated error strings. Undefined otherwise. \\
$\mathit{RO}_\mathit{run}$ &  {\tt allowed\_operations} & (task\_allowed\_operations) Set & Operations allowed on this task \\
\hline
\end{longtable}
\subsection{RPCs associated with class: task}
\subsubsection{RPC name:~cancel}

{\bf Overview:} 
Cancel this task.  If task.allowed\_operations does not contain Cancel,
then this will fail with OPERATION\_NOT\_ALLOWED.  The task will show the
status 'cancelling', and you should continue to check its status until it
shows 'cancelled'.  There is no guarantee as to the time within which this
task will be cancelled.

 \noindent {\bf Signature:} 
\begin{verbatim} void cancel (session_id s, task ref task)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt task ref } & task & The task \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt OPERATION\_NOT\_ALLOWED}

\vspace{0.6cm}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the tasks known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((task ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(task ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given task.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, task ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt task ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_name\_label}

{\bf Overview:} 
Get the name/label field of the given task.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_name_label (session_id s, task ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt task ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_name\_description}

{\bf Overview:} 
Get the name/description field of the given task.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_name_description (session_id s, task ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt task ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_status}

{\bf Overview:} 
Get the status field of the given task.

 \noindent {\bf Signature:} 
\begin{verbatim} (task_status_type) get_status (session_id s, task ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt task ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
task\_status\_type
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_session}

{\bf Overview:} 
Get the session field of the given task.

 \noindent {\bf Signature:} 
\begin{verbatim} (session ref) get_session (session_id s, task ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt task ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
session ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_progress}

{\bf Overview:} 
Get the progress field of the given task.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_progress (session_id s, task ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt task ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_type}

{\bf Overview:} 
Get the type field of the given task.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_type (session_id s, task ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt task ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_result}

{\bf Overview:} 
Get the result field of the given task.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_result (session_id s, task ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt task ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_error\_info}

{\bf Overview:} 
Get the error\_info field of the given task.

 \noindent {\bf Signature:} 
\begin{verbatim} (string Set) get_error_info (session_id s, task ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt task ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_allowed\_operations}

{\bf Overview:} 
Get the allowed\_operations field of the given task.

 \noindent {\bf Signature:} 
\begin{verbatim} ((task_allowed_operations) Set) get_allowed_operations (session_id s, task ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt task ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(task\_allowed\_operations) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the task instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (task ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
task ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given task.

 \noindent {\bf Signature:} 
\begin{verbatim} (task record) get_record (session_id s, task ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt task ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
task record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_name\_label}

{\bf Overview:} 
Get all the task instances with the given label.

 \noindent {\bf Signature:} 
\begin{verbatim} ((task ref) Set) get_by_name_label (session_id s, string label)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & label & label of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(task ref) Set
}


references to objects with match names
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: event}
\subsection{Fields for class: event}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf event} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em
Asynchronous event registration and handling.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{ins}$ &  {\tt id} & int & An ID, monotonically increasing, and local to the current session \\
$\mathit{RO}_\mathit{ins}$ &  {\tt timestamp} & datetime & The time at which the event occurred \\
$\mathit{RO}_\mathit{ins}$ &  {\tt class} & string & The name of the class of the object that changed \\
$\mathit{RO}_\mathit{ins}$ &  {\tt operation} & event\_operation & The operation that was performed \\
$\mathit{RO}_\mathit{ins}$ &  {\tt ref} & string & A reference to the object that changed \\
$\mathit{RO}_\mathit{ins}$ &  {\tt obj\_uuid} & string & The uuid of the object that changed \\
\hline
\end{longtable}
\subsection{RPCs associated with class: event}
\subsubsection{RPC name:~register}

{\bf Overview:} 
Registers this session with the event system.  Specifying the empty list
will register for all classes.

 \noindent {\bf Signature:} 
\begin{verbatim} void register (session_id s, string Set classes)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string Set } & classes & register for events for the indicated classes \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~unregister}

{\bf Overview:} 
Unregisters this session with the event system.

 \noindent {\bf Signature:} 
\begin{verbatim} void unregister (session_id s, string Set classes)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string Set } & classes & remove this session's registration for the indicated classes \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~next}

{\bf Overview:} 
Blocking call which returns a (possibly empty) batch of events.

 \noindent {\bf Signature:} 
\begin{verbatim} ((event record) Set) next (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(event record) Set
}


the batch of events
\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt SESSION\_NOT\_REGISTERED}

\vspace{0.6cm}

\vspace{1cm}
\newpage
\section{Class: VM}
\subsection{Fields for class: VM}
\begin{longtable}{|llp{0.21\textwidth}p{0.33\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf VM} \\
\multicolumn{4}{|l|}{\parbox{11cm}{\em Description: A
virtual machine (or 'guest').}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{run}$ &  {\tt power\_state} & vm\_power\_state & Current power state of the machine \\
$\mathit{RW}$ &  {\tt name/label} & string & a human-readable name \\
$\mathit{RW}$ &  {\tt name/description} & string & a notes field containg human-readable description \\
$\mathit{RW}$ &  {\tt user\_version} & int & a user version number for this machine \\
$\mathit{RW}$ &  {\tt is\_a\_template} & bool & true if this is a template. Template VMs can never be started, they are used only for cloning other VMs \\
$\mathit{RW}$ &  {\tt auto\_power\_on} & bool & true if this VM should be started automatically after host boot \\
$\mathit{RO}_\mathit{run}$ &  {\tt suspend\_VDI} & VDI ref & The VDI that a suspend image is stored on. (Only has meaning if VM is currently suspended) \\
$\mathit{RO}_\mathit{run}$ &  {\tt resident\_on} & host ref & the host the VM is currently resident on \\
$\mathit{RW}$ &  {\tt memory/static\_max} & int & Statically-set (i.e. absolute) maximum (bytes) \\
$\mathit{RW}$ &  {\tt memory/dynamic\_max} & int & Dynamic maximum (bytes) \\
$\mathit{RW}$ &  {\tt memory/dynamic\_min} & int & Dynamic minimum (bytes) \\
$\mathit{RW}$ &  {\tt memory/static\_min} & int & Statically-set (i.e. absolute) minimum (bytes) \\
$\mathit{RW}$ &  {\tt VCPUs/params} & (string $\rightarrow$ string) Map & configuration parameters for the selected VCPU policy \\
$\mathit{RW}$ &  {\tt VCPUs/max} & int & Max number of VCPUs \\
$\mathit{RW}$ &  {\tt VCPUs/at\_startup} & int & Boot number of VCPUs \\
$\mathit{RW}$ &  {\tt actions/after\_shutdown} & on\_normal\_exit & action to take after the guest has shutdown itself \\
$\mathit{RW}$ &  {\tt actions/after\_reboot} & on\_normal\_exit & action to take after the guest has rebooted itself \\
$\mathit{RW}$ &  {\tt actions/after\_crash} & on\_crash\_behaviour & action to take if the guest crashes \\
$\mathit{RO}_\mathit{run}$ &  {\tt consoles} & (console ref) Set & virtual console devices \\
$\mathit{RO}_\mathit{run}$ &  {\tt VIFs} & (VIF ref) Set & virtual network interfaces \\
$\mathit{RO}_\mathit{run}$ &  {\tt VBDs} & (VBD ref) Set & virtual block devices \\
$\mathit{RO}_\mathit{run}$ &  {\tt crash\_dumps} & (crashdump ref) Set & crash dumps associated with this VM \\
$\mathit{RO}_\mathit{run}$ &  {\tt VTPMs} & (VTPM ref) Set & virtual TPMs \\
$\mathit{RO}_\mathit{run}$ &  {\tt DPCIs} & (DPCI ref) Set & pass-through PCI devices \\
$\mathit{RO}_\mathit{run}$ &  {\tt DSCSIs} & (DSCSI ref) Set & half-virtualized SCSI devices \\
$\mathit{RO}_\mathit{run}$ &  {\tt DSCSI\_HBAs} & (DSCSI\_HBA ref) Set & half-virtualized SCSI host bus adapters \\
$\mathit{RW}$ &  {\tt PV/bootloader} & string & name of or path to bootloader \\
$\mathit{RW}$ &  {\tt PV/kernel} & string & URI of kernel \\
$\mathit{RW}$ &  {\tt PV/ramdisk} & string & URI of initrd \\
$\mathit{RW}$ &  {\tt PV/args} & string & kernel command-line arguments \\
$\mathit{RW}$ &  {\tt PV/bootloader\_args} & string & miscellaneous arguments for the bootloader \\
$\mathit{RW}$ &  {\tt HVM/boot\_policy} & string & HVM boot policy \\
$\mathit{RW}$ &  {\tt HVM/boot\_params} & (string $\rightarrow$ string) Map & HVM boot params \\
$\mathit{RW}$ &  {\tt platform} & (string $\rightarrow$ string) Map & platform-specific configuration \\
$\mathit{RW}$ &  {\tt PCI\_bus} & string & PCI bus path for pass-through devices \\
$\mathit{RW}$ &  {\tt other\_config} & (string $\rightarrow$ string) Map & additional configuration \\
$\mathit{RO}_\mathit{run}$ &  {\tt domid} & int & domain ID (if available, -1 otherwise) \\
$\mathit{RO}_\mathit{run}$ &  {\tt is\_control\_domain} & bool & true if this is a control domain (domain 0 or a driver domain) \\
$\mathit{RO}_\mathit{run}$ &  {\tt metrics} & VM\_metrics ref & metrics associated with this VM \\
$\mathit{RO}_\mathit{run}$ &  {\tt guest\_metrics} & VM\_guest\_metrics ref & metrics associated with the running guest \\
$\mathit{RO}_\mathit{run}$ &  {\tt security/label} & string & the VM's security label \\
\hline
\end{longtable}
\subsection{Parameter Details}
\subsubsection{PV/kernel and PV/ramdisk}
The \texttt{PV/kernel} and \texttt{PV/ramdisk} parameters should be
specified as URIs with either a \texttt{file} or \texttt{data} scheme.

The \texttt{file} scheme must be used when a file on the remote dom0
should be used.  The remote dom0 is the one where the guest system
should be started on. Only absolute filenames are supported, i.e. the
string must start with \texttt{file://} appended with the absolute
path.  This is typically used when the guest system use the same
operating systems as the dom0 or there is some kind of shared storage
for the images inside the dom0s.

Note that for compatibility reasons it is possible --- but not
recommended --- to leave out the scheme specification for
\texttt{file}, i.e. \texttt{file:///some/path} and \texttt{/some/path}
is equivalent.

Examples (in python):

Use kernel image which resides in the \texttt{/boot} directory:
\begin{verbatim}
xenapi.VM.create({ ...
   'PV_kernel': 'file:///boot/vmlinuz-2.6.26-2-xen-686',
   ... })
\end{verbatim}

Use ramdisk image which resides on a (shared) nfs directory:
\begin{verbatim}
xenapi.VM.create({ ...
   'PV_ramdisk': 'file:///nfs/xen/debian/5.0.1/initrd.img-2.6.26-2-xen-686'
   ... })
\end{verbatim}

When an image should be used which resides on the local system,
i.e. the system where the XenAPI call is send from, it is possible to
use the \texttt{data} URI scheme as described in \cite{RFC2397}.  The
media-type must be set to \texttt{application/octet-stream}.
Currently only base64 encoding is supported.  The URI must therefore
start with \texttt{data:application/octet-stream;base64,} followed by
the base64 encoded image.

The \texttt{xen/util/fileuri.py} provides a helper function which
takes a local filename as parameter and build up the correct URI from
this.

Examples (in python):

Use kernel image specified inline:
\begin{verbatim}
xenapi.VM.create({ ...
   'PV_kernel': 'data:application/octet-stream;base64,H4Zu....'
      # most of base64 encoded data is omitted 
   ... })
\end{verbatim}

Using the utility function:
\begin{verbatim}
from xen.util.fileuri import scheme_data
xenapi.VM.create({ ...
   'PV_kernel': scheme_data.create_from_file(
       "/xen/guests/images/debian/5.0.1/vmlinuz-2.6.26-2-xen-686"),
   ... })
\end{verbatim}

Currently when using the \texttt{data} URI scheme, a temporary file is
created on the remote dom0 in the directory
\texttt{/var/run/xend/boot} which is then used for booting. When not
used any longer the file is deleted.  (Therefore reading of the
\texttt{PV/kernel} or \texttt{PV/ramdisk} parameters when created with
a \texttt{data} URI scheme returns a filename to a temporary file ---
which might even not exists when querying.)  This implementation might
change in the way that the data is directly used --- without the
indirection using a file.  Therefore do not rely on the data resulting
from a read of a variables which was set using the \texttt{data}
scheme.

Note: a mix of different schemes for the parameters is possible; e.g.
the kernel can be specified with a \texttt{file} and the ramdisk with
the \texttt{data} URI scheme.

\subsection{RPCs associated with class: VM}
\subsubsection{RPC name:~clone}

{\bf Overview:} 
Clones the specified VM, making a new VM. Clone automatically exploits the
capabilities of the underlying storage repository in which the VM's disk
images are stored (e.g. Copy on Write).   This function can only be called
when the VM is in the Halted State.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM ref) clone (session_id s, VM ref vm, string new_name)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & vm & The VM to be cloned \\ \hline 

{\tt string } & new\_name & The name of the cloned VM \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM ref
}


The ID of the newly created VM.
\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt VM\_BAD\_POWER\_STATE}

\vspace{0.6cm}
\subsubsection{RPC name:~start}

{\bf Overview:} 
Start the specified VM.  This function can only be called with the VM is in
the Halted State.

 \noindent {\bf Signature:} 
\begin{verbatim} void start (session_id s, VM ref vm, bool start_paused)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & vm & The VM to start \\ \hline 

{\tt bool } & start\_paused & Instantiate VM in paused state if set to true. \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt VM\_BAD\_POWER\_STATE}, {\tt
VM\_HVM\_REQUIRED}

\vspace{0.6cm}
\subsubsection{RPC name:~pause}

{\bf Overview:} 
Pause the specified VM. This can only be called when the specified VM is in
the Running state.

 \noindent {\bf Signature:} 
\begin{verbatim} void pause (session_id s, VM ref vm)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & vm & The VM to pause \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt VM\_BAD\_POWER\_STATE}

\vspace{0.6cm}
\subsubsection{RPC name:~unpause}

{\bf Overview:} 
Resume the specified VM. This can only be called when the specified VM is
in the Paused state.

 \noindent {\bf Signature:} 
\begin{verbatim} void unpause (session_id s, VM ref vm)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & vm & The VM to unpause \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt VM\_BAD\_POWER\_STATE}

\vspace{0.6cm}
\subsubsection{RPC name:~clean\_shutdown}

{\bf Overview:} 
Attempt to cleanly shutdown the specified VM. (Note: this may not be
supported---e.g. if a guest agent is not installed).

Once shutdown has been completed perform poweroff action specified in guest
configuration.

This can only be called when the specified VM is in the Running state.

 \noindent {\bf Signature:} 
\begin{verbatim} void clean_shutdown (session_id s, VM ref vm)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & vm & The VM to shutdown \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt VM\_BAD\_POWER\_STATE}

\vspace{0.6cm}
\subsubsection{RPC name:~clean\_reboot}

{\bf Overview:} 
Attempt to cleanly shutdown the specified VM (Note: this may not be
supported---e.g. if a guest agent is not installed).

Once shutdown has been completed perform reboot action specified in guest
configuration.

This can only be called when the specified VM is in the Running state.

 \noindent {\bf Signature:} 
\begin{verbatim} void clean_reboot (session_id s, VM ref vm)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & vm & The VM to shutdown \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt VM\_BAD\_POWER\_STATE}

\vspace{0.6cm}
\subsubsection{RPC name:~hard\_shutdown}

{\bf Overview:} 
Stop executing the specified VM without attempting a clean shutdown. Then
perform poweroff action specified in VM configuration.

 \noindent {\bf Signature:} 
\begin{verbatim} void hard_shutdown (session_id s, VM ref vm)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & vm & The VM to destroy \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt VM\_BAD\_POWER\_STATE}

\vspace{0.6cm}
\subsubsection{RPC name:~hard\_reboot}

{\bf Overview:} 
Stop executing the specified VM without attempting a clean shutdown. Then
perform reboot action specified in VM configuration.

 \noindent {\bf Signature:} 
\begin{verbatim} void hard_reboot (session_id s, VM ref vm)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & vm & The VM to reboot \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~suspend}

{\bf Overview:} 
Suspend the specified VM to disk.  This can only be called when the
specified VM is in the Running state.

 \noindent {\bf Signature:} 
\begin{verbatim} void suspend (session_id s, VM ref vm)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & vm & The VM to suspend \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt VM\_BAD\_POWER\_STATE}

\vspace{0.6cm}
\subsubsection{RPC name:~resume}

{\bf Overview:} 
Awaken the specified VM and resume it.  This can only be called when the
specified VM is in the Suspended state.

 \noindent {\bf Signature:} 
\begin{verbatim} void resume (session_id s, VM ref vm, bool start_paused)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & vm & The VM to resume \\ \hline 

{\tt bool } & start\_paused & Resume VM in paused state if set to true. \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt VM\_BAD\_POWER\_STATE}

\vspace{0.6cm}
\subsubsection{RPC name:~set\_VCPUs\_number\_live}

{\bf Overview:} 
Set this VM's VCPUs/at\_startup value, and set the same value on the VM, if
running.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_VCPUs_number_live (session_id s, VM ref self, int nvcpu)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & The VM \\ \hline 

{\tt int } & nvcpu & The number of VCPUs \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~add\_to\_VCPUs\_params\_live}

{\bf Overview:} 
Add the given key-value pair to VM.VCPUs\_params, and apply that value on
the running VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void add_to_VCPUs_params_live (session_id s, VM ref self, string key, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & The VM \\ \hline 

{\tt string } & key & The key \\ \hline 

{\tt string } & value & The value \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_memory\_dynamic\_max\_live}

{\bf Overview:} 
Set memory\_dynamic\_max in database and on running VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_memory_dynamic_max_live (session_id s, VM ref self, int max)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & The VM \\ \hline 

{\tt int } & max & The memory\_dynamic\_max value \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_memory\_dynamic\_min\_live}

{\bf Overview:} 
Set memory\_dynamic\_min in database and on running VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_memory_dynamic_min_live (session_id s, VM ref self, int min)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & The VM \\ \hline 

{\tt int } & min & The memory\_dynamic\_min value \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~send\_sysrq}

{\bf Overview:} 
Send the given key as a sysrq to this VM.  The key is specified as a single
character (a String of length 1).  This can only be called when the
specified VM is in the Running state.

 \noindent {\bf Signature:} 
\begin{verbatim} void send_sysrq (session_id s, VM ref vm, string key)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & vm & The VM \\ \hline 

{\tt string } & key & The key to send \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt VM\_BAD\_POWER\_STATE}

\vspace{0.6cm}
\subsubsection{RPC name:~send\_trigger}

{\bf Overview:} 
Send the named trigger to this VM.  This can only be called when the
specified VM is in the Running state.

 \noindent {\bf Signature:} 
\begin{verbatim} void send_trigger (session_id s, VM ref vm, string trigger)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & vm & The VM \\ \hline 

{\tt string } & trigger & The trigger to send \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt VM\_BAD\_POWER\_STATE}

\vspace{0.6cm}
\subsubsection{RPC name:~migrate}

{\bf Overview:} 
Migrate the VM to another host.  This can only be called when the specified
VM is in the Running state.

 \noindent {\bf Signature:} 
\begin{verbatim} void migrate (session_id s, VM ref vm, string dest, bool live, (string -> string) Map options)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & vm & The VM \\ \hline 

{\tt string } & dest & The destination host \\ \hline 

{\tt bool } & live & Live migration \\ \hline 

{\tt (string $\rightarrow$ string) Map } & options & Other parameters \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt VM\_BAD\_POWER\_STATE}

\vspace{0.6cm}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the VMs known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VM ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VM ref) Set
}


A list of all the IDs of all the VMs
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_power\_state}

{\bf Overview:} 
Get the power\_state field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} (vm_power_state) get_power_state (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
vm\_power\_state
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_name\_label}

{\bf Overview:} 
Get the name/label field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_name_label (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_name\_label}

{\bf Overview:} 
Set the name/label field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_name_label (session_id s, VM ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_name\_description}

{\bf Overview:} 
Get the name/description field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_name_description (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_name\_description}

{\bf Overview:} 
Set the name/description field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_name_description (session_id s, VM ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_user\_version}

{\bf Overview:} 
Get the user\_version field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_user_version (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_user\_version}

{\bf Overview:} 
Set the user\_version field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_user_version (session_id s, VM ref self, int value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt int } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_is\_a\_template}

{\bf Overview:} 
Get the is\_a\_template field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} bool get_is_a_template (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
bool
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_is\_a\_template}

{\bf Overview:} 
Set the is\_a\_template field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_is_a_template (session_id s, VM ref self, bool value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt bool } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_auto\_power\_on}

{\bf Overview:} 
Get the auto\_power\_on field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} bool get_auto_power_on (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
bool
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_auto\_power\_on}

{\bf Overview:} 
Set the auto\_power\_on field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_auto_power_on (session_id s, VM ref self, bool value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt bool } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_suspend\_VDI}

{\bf Overview:} 
Get the suspend\_VDI field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} (VDI ref) get_suspend_VDI (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VDI ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_resident\_on}

{\bf Overview:} 
Get the resident\_on field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} (host ref) get_resident_on (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
host ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_memory\_static\_max}

{\bf Overview:} 
Get the memory/static\_max field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_memory_static_max (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_memory\_static\_max}

{\bf Overview:} 
Set the memory/static\_max field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_memory_static_max (session_id s, VM ref self, int value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt int } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_memory\_dynamic\_max}

{\bf Overview:} 
Get the memory/dynamic\_max field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_memory_dynamic_max (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_memory\_dynamic\_max}

{\bf Overview:} 
Set the memory/dynamic\_max field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_memory_dynamic_max (session_id s, VM ref self, int value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt int } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_memory\_dynamic\_min}

{\bf Overview:} 
Get the memory/dynamic\_min field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_memory_dynamic_min (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_memory\_dynamic\_min}

{\bf Overview:} 
Set the memory/dynamic\_min field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_memory_dynamic_min (session_id s, VM ref self, int value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt int } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_memory\_static\_min}

{\bf Overview:} 
Get the memory/static\_min field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_memory_static_min (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_memory\_static\_min}

{\bf Overview:} 
Set the memory/static\_min field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_memory_static_min (session_id s, VM ref self, int value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt int } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VCPUs\_params}

{\bf Overview:} 
Get the VCPUs/params field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_VCPUs_params (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_VCPUs\_params}

{\bf Overview:} 
Set the VCPUs/params field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_VCPUs_params (session_id s, VM ref self, (string -> string) Map value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~add\_to\_VCPUs\_params}

{\bf Overview:} 
Add the given key-value pair to the VCPUs/params field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void add_to_VCPUs_params (session_id s, VM ref self, string key, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to add \\ \hline 

{\tt string } & value & Value to add \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~remove\_from\_VCPUs\_params}

{\bf Overview:} 
Remove the given key and its corresponding value from the VCPUs/params
field of the given VM.  If the key is not in that Map, then do nothing.

 \noindent {\bf Signature:} 
\begin{verbatim} void remove_from_VCPUs_params (session_id s, VM ref self, string key)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to remove \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VCPUs\_max}

{\bf Overview:} 
Get the VCPUs/max field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_VCPUs_max (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_VCPUs\_max}

{\bf Overview:} 
Set the VCPUs/max field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_VCPUs_max (session_id s, VM ref self, int value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt int } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VCPUs\_at\_startup}

{\bf Overview:} 
Get the VCPUs/at\_startup field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_VCPUs_at_startup (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_VCPUs\_at\_startup}

{\bf Overview:} 
Set the VCPUs/at\_startup field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_VCPUs_at_startup (session_id s, VM ref self, int value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt int } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_actions\_after\_shutdown}

{\bf Overview:} 
Get the actions/after\_shutdown field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} (on_normal_exit) get_actions_after_shutdown (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
on\_normal\_exit
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_actions\_after\_shutdown}

{\bf Overview:} 
Set the actions/after\_shutdown field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_actions_after_shutdown (session_id s, VM ref self, on_normal_exit value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt on\_normal\_exit } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_actions\_after\_reboot}

{\bf Overview:} 
Get the actions/after\_reboot field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} (on_normal_exit) get_actions_after_reboot (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
on\_normal\_exit
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_actions\_after\_reboot}

{\bf Overview:} 
Set the actions/after\_reboot field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_actions_after_reboot (session_id s, VM ref self, on_normal_exit value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt on\_normal\_exit } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_actions\_after\_crash}

{\bf Overview:} 
Get the actions/after\_crash field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} (on_crash_behaviour) get_actions_after_crash (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
on\_crash\_behaviour
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_actions\_after\_crash}

{\bf Overview:} 
Set the actions/after\_crash field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_actions_after_crash (session_id s, VM ref self, on_crash_behaviour value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt on\_crash\_behaviour } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_consoles}

{\bf Overview:} 
Get the consoles field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} ((console ref) Set) get_consoles (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(console ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VIFs}

{\bf Overview:} 
Get the VIFs field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VIF ref) Set) get_VIFs (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VIF ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VBDs}

{\bf Overview:} 
Get the VBDs field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VBD ref) Set) get_VBDs (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VBD ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_crash\_dumps}

{\bf Overview:} 
Get the crash\_dumps field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} ((crashdump ref) Set) get_crash_dumps (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(crashdump ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VTPMs}

{\bf Overview:} 
Get the VTPMs field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VTPM ref) Set) get_VTPMs (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VTPM ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_DPCIs}

{\bf Overview:} 
Get the DPCIs field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} ((DPCI ref) Set) get_DPCIs (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(DPCI ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_DSCSIs}

{\bf Overview:} 
Get the DSCSIs field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} ((DSCSI ref) Set) get_DSCSIs (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(DSCSI ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_DSCSI\_HBAs}

{\bf Overview:} 
Get the DSCSI\_HBAs field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} ((DSCSI_HBA ref) Set) get_DSCSI_HBAs (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(DSCSI\_HBA ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PV\_bootloader}

{\bf Overview:} 
Get the PV/bootloader field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_PV_bootloader (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_PV\_bootloader}

{\bf Overview:} 
Set the PV/bootloader field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_PV_bootloader (session_id s, VM ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PV\_kernel}

{\bf Overview:} 
Get the PV/kernel field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_PV_kernel (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_PV\_kernel}

{\bf Overview:} 
Set the PV/kernel field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_PV_kernel (session_id s, VM ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PV\_ramdisk}

{\bf Overview:} 
Get the PV/ramdisk field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_PV_ramdisk (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_PV\_ramdisk}

{\bf Overview:} 
Set the PV/ramdisk field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_PV_ramdisk (session_id s, VM ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PV\_args}

{\bf Overview:} 
Get the PV/args field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_PV_args (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_PV\_args}

{\bf Overview:} 
Set the PV/args field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_PV_args (session_id s, VM ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PV\_bootloader\_args}

{\bf Overview:} 
Get the PV/bootloader\_args field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_PV_bootloader_args (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_PV\_bootloader\_args}

{\bf Overview:} 
Set the PV/bootloader\_args field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_PV_bootloader_args (session_id s, VM ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_HVM\_boot\_policy}

{\bf Overview:} 
Get the HVM/boot\_policy field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_HVM_boot_policy (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_HVM\_boot\_policy}

{\bf Overview:} 
Set the HVM/boot\_policy field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_HVM_boot_policy (session_id s, VM ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_HVM\_boot\_params}

{\bf Overview:} 
Get the HVM/boot\_params field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_HVM_boot_params (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_HVM\_boot\_params}

{\bf Overview:} 
Set the HVM/boot\_params field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_HVM_boot_params (session_id s, VM ref self, (string -> string) Map value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~add\_to\_HVM\_boot\_params}

{\bf Overview:} 
Add the given key-value pair to the HVM/boot\_params field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void add_to_HVM_boot_params (session_id s, VM ref self, string key, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to add \\ \hline 

{\tt string } & value & Value to add \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~remove\_from\_HVM\_boot\_params}

{\bf Overview:} 
Remove the given key and its corresponding value from the HVM/boot\_params
field of the given VM.  If the key is not in that Map, then do nothing.

 \noindent {\bf Signature:} 
\begin{verbatim} void remove_from_HVM_boot_params (session_id s, VM ref self, string key)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to remove \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_platform}

{\bf Overview:} 
Get the platform field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_platform (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_platform}

{\bf Overview:} 
Set the platform field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_platform (session_id s, VM ref self, (string -> string) Map value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~add\_to\_platform}

{\bf Overview:} 
Add the given key-value pair to the platform field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void add_to_platform (session_id s, VM ref self, string key, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to add \\ \hline 

{\tt string } & value & Value to add \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~remove\_from\_platform}

{\bf Overview:} 
Remove the given key and its corresponding value from the platform field of
the given VM.  If the key is not in that Map, then do nothing.

 \noindent {\bf Signature:} 
\begin{verbatim} void remove_from_platform (session_id s, VM ref self, string key)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to remove \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PCI\_bus}

{\bf Overview:} 
Get the PCI\_bus field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_PCI_bus (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_PCI\_bus}

{\bf Overview:} 
Set the PCI\_bus field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_PCI_bus (session_id s, VM ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_other\_config}

{\bf Overview:} 
Get the other\_config field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_other_config (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_other\_config}

{\bf Overview:} 
Set the other\_config field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_other_config (session_id s, VM ref self, (string -> string) Map value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~add\_to\_other\_config}

{\bf Overview:} 
Add the given key-value pair to the other\_config field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void add_to_other_config (session_id s, VM ref self, string key, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to add \\ \hline 

{\tt string } & value & Value to add \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~remove\_from\_other\_config}

{\bf Overview:} 
Remove the given key and its corresponding value from the other\_config
field of the given VM.  If the key is not in that Map, then do nothing.

 \noindent {\bf Signature:} 
\begin{verbatim} void remove_from_other_config (session_id s, VM ref self, string key)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to remove \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_domid}

{\bf Overview:} 
Get the domid field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_domid (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_is\_control\_domain}

{\bf Overview:} 
Get the is\_control\_domain field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} bool get_is_control_domain (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
bool
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_metrics}

{\bf Overview:} 
Get the metrics field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM_metrics ref) get_metrics (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM\_metrics ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_guest\_metrics}

{\bf Overview:} 
Get the guest\_metrics field of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM_guest_metrics ref) get_guest_metrics (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM\_guest\_metrics ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_security\_label}

{\bf Overview:}
Get the security label field of the given VM. Refer to the XSPolicy class
for the format of the security label.

 \noindent {\bf Signature:}
\begin{verbatim} string get_security_label (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_security\_label}

{\bf Overview:}
Set the security label field of the given VM. Refer to the XSPolicy class
for the format of the security label.

 \noindent {\bf Signature:}
\begin{verbatim} int set_security_label (session_id s, VM ref self, string
security_label, string old_label)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline
{\tt string } & security\_label & security label for the VM \\ \hline
{\tt string } & old\_label & Label value that the security label \\
& & must currently have for the change to succeed.\\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
int
}


Returns the ssidref in case of an VM that is currently running or
paused, zero in case of a dormant VM (halted, suspended).

\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt SECURITY\_ERROR}

\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~create}

{\bf Overview:} 
Create a new VM instance, and return its handle.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM ref) create (session_id s, VM record args)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM record } & args & All constructor arguments \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM ref
}


reference to the newly created object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~destroy}

{\bf Overview:} 
Destroy the specified VM.  The VM is completely removed from the system. 
This function can only be called when the VM is in the Halted State.

 \noindent {\bf Signature:} 
\begin{verbatim} void destroy (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the VM instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given VM.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM record) get_record (session_id s, VM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_name\_label}

{\bf Overview:} 
Get all the VM instances with the given label.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VM ref) Set) get_by_name_label (session_id s, string label)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & label & label of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VM ref) Set
}


references to objects with match names
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: VM\_metrics}
\subsection{Fields for class: VM\_metrics}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf VM\_metrics} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em
The metrics associated with a VM.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{run}$ &  {\tt memory/actual} & int & Guest's actual memory (bytes) \\
$\mathit{RO}_\mathit{run}$ &  {\tt VCPUs/number} & int & Current number of VCPUs \\
$\mathit{RO}_\mathit{run}$ &  {\tt VCPUs/utilisation} & (int $\rightarrow$ float) Map & Utilisation for all of guest's current VCPUs \\
$\mathit{RO}_\mathit{run}$ &  {\tt VCPUs/CPU} & (int $\rightarrow$ int) Map & VCPU to PCPU map \\
$\mathit{RO}_\mathit{run}$ &  {\tt VCPUs/params} & (string $\rightarrow$ string) Map & The live equivalent to VM.VCPUs\_params \\
$\mathit{RO}_\mathit{run}$ &  {\tt VCPUs/flags} & (int $\rightarrow$ string Set) Map & CPU flags (blocked,online,running) \\
$\mathit{RO}_\mathit{run}$ &  {\tt state} & string Set & The state of the guest, eg blocked, dying etc \\
$\mathit{RO}_\mathit{run}$ &  {\tt start\_time} & datetime & Time at which this VM was last booted \\
$\mathit{RO}_\mathit{run}$ &  {\tt last\_updated} & datetime & Time at which this information was last updated \\
\hline
\end{longtable}
\subsection{RPCs associated with class: VM\_metrics}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the VM\_metrics instances known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VM_metrics ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VM\_metrics ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given VM\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, VM_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_memory\_actual}

{\bf Overview:} 
Get the memory/actual field of the given VM\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_memory_actual (session_id s, VM_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VCPUs\_number}

{\bf Overview:} 
Get the VCPUs/number field of the given VM\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_VCPUs_number (session_id s, VM_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VCPUs\_utilisation}

{\bf Overview:} 
Get the VCPUs/utilisation field of the given VM\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} ((int -> float) Map) get_VCPUs_utilisation (session_id s, VM_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(int $\rightarrow$ float) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VCPUs\_CPU}

{\bf Overview:} 
Get the VCPUs/CPU field of the given VM\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} ((int -> int) Map) get_VCPUs_CPU (session_id s, VM_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(int $\rightarrow$ int) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VCPUs\_params}

{\bf Overview:} 
Get the VCPUs/params field of the given VM\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_VCPUs_params (session_id s, VM_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VCPUs\_flags}

{\bf Overview:} 
Get the VCPUs/flags field of the given VM\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} ((int -> string Set) Map) get_VCPUs_flags (session_id s, VM_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(int $\rightarrow$ string Set) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_state}

{\bf Overview:} 
Get the state field of the given VM\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} (string Set) get_state (session_id s, VM_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_start\_time}

{\bf Overview:} 
Get the start\_time field of the given VM\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} datetime get_start_time (session_id s, VM_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
datetime
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_last\_updated}

{\bf Overview:} 
Get the last\_updated field of the given VM\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} datetime get_last_updated (session_id s, VM_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
datetime
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the VM\_metrics instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM_metrics ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM\_metrics ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given VM\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM_metrics record) get_record (session_id s, VM_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM\_metrics record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: VM\_guest\_metrics}
\subsection{Fields for class: VM\_guest\_metrics}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf VM\_guest\_metrics} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em
The metrics reported by the guest (as opposed to inferred from outside).}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{run}$ &  {\tt os\_version} & (string $\rightarrow$ string) Map & version of the OS \\
$\mathit{RO}_\mathit{run}$ &  {\tt PV\_drivers\_version} & (string $\rightarrow$ string) Map & version of the PV drivers \\
$\mathit{RO}_\mathit{run}$ &  {\tt memory} & (string $\rightarrow$ string) Map & free/used/total memory \\
$\mathit{RO}_\mathit{run}$ &  {\tt disks} & (string $\rightarrow$ string) Map & disk configuration/free space \\
$\mathit{RO}_\mathit{run}$ &  {\tt networks} & (string $\rightarrow$ string) Map & network configuration \\
$\mathit{RO}_\mathit{run}$ &  {\tt other} & (string $\rightarrow$ string) Map & anything else \\
$\mathit{RO}_\mathit{run}$ &  {\tt last\_updated} & datetime & Time at which this information was last updated \\
\hline
\end{longtable}
\subsection{RPCs associated with class: VM\_guest\_metrics}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the VM\_guest\_metrics instances known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VM_guest_metrics ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VM\_guest\_metrics ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given VM\_guest\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, VM_guest_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_os\_version}

{\bf Overview:} 
Get the os\_version field of the given VM\_guest\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_os_version (session_id s, VM_guest_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PV\_drivers\_version}

{\bf Overview:} 
Get the PV\_drivers\_version field of the given VM\_guest\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_PV_drivers_version (session_id s, VM_guest_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_memory}

{\bf Overview:} 
Get the memory field of the given VM\_guest\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_memory (session_id s, VM_guest_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_disks}

{\bf Overview:} 
Get the disks field of the given VM\_guest\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_disks (session_id s, VM_guest_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_networks}

{\bf Overview:} 
Get the networks field of the given VM\_guest\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_networks (session_id s, VM_guest_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_other}

{\bf Overview:} 
Get the other field of the given VM\_guest\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_other (session_id s, VM_guest_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_last\_updated}

{\bf Overview:} 
Get the last\_updated field of the given VM\_guest\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} datetime get_last_updated (session_id s, VM_guest_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
datetime
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the VM\_guest\_metrics instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM_guest_metrics ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM\_guest\_metrics ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given VM\_guest\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM_guest_metrics record) get_record (session_id s, VM_guest_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VM\_guest\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM\_guest\_metrics record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: host}
\subsection{Fields for class: host}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf host} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
physical host.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RW}$ &  {\tt name/label} & string & a human-readable name \\
$\mathit{RW}$ &  {\tt name/description} & string & a notes field containg human-readable description \\
$\mathit{RO}_\mathit{run}$ &  {\tt API\_version/major} & int & major version number \\
$\mathit{RO}_\mathit{run}$ &  {\tt API\_version/minor} & int & minor version number \\
$\mathit{RO}_\mathit{run}$ &  {\tt API\_version/vendor} & string & identification of vendor \\
$\mathit{RO}_\mathit{run}$ &  {\tt API\_version/vendor\_implementation} & (string $\rightarrow$ string) Map & details of vendor implementation \\
$\mathit{RO}_\mathit{run}$ &  {\tt enabled} & bool & True if the host is currently enabled \\
$\mathit{RO}_\mathit{run}$ &  {\tt software\_version} & (string $\rightarrow$ string) Map & version strings \\
$\mathit{RW}$ &  {\tt other\_config} & (string $\rightarrow$ string) Map & additional configuration \\
$\mathit{RO}_\mathit{run}$ &  {\tt capabilities} & string Set & Xen capabilities \\
$\mathit{RO}_\mathit{run}$ &  {\tt cpu\_configuration} & (string $\rightarrow$ string) Map & The CPU configuration on this host.  May contain keys such as ``nr\_nodes'', ``sockets\_per\_node'', ``cores\_per\_socket'', or ``threads\_per\_core'' \\
$\mathit{RO}_\mathit{run}$ &  {\tt sched\_policy} & string & Scheduler policy currently in force on this host \\
$\mathit{RO}_\mathit{run}$ &  {\tt supported\_bootloaders} & string Set & a list of the bootloaders installed on the machine \\
$\mathit{RO}_\mathit{run}$ &  {\tt resident\_VMs} & (VM ref) Set & list of VMs currently resident on host \\
$\mathit{RW}$ &  {\tt logging} & (string $\rightarrow$ string) Map & logging configuration \\
$\mathit{RO}_\mathit{run}$ &  {\tt PIFs} & (PIF ref) Set & physical network interfaces \\
$\mathit{RW}$ &  {\tt suspend\_image\_sr} & SR ref & The SR in which VDIs for suspend images are created \\
$\mathit{RW}$ &  {\tt crash\_dump\_sr} & SR ref & The SR in which VDIs for crash dumps are created \\
$\mathit{RO}_\mathit{run}$ &  {\tt PBDs} & (PBD ref) Set & physical blockdevices \\
$\mathit{RO}_\mathit{run}$ &  {\tt PPCIs} & (PPCI ref) Set & physical PCI devices \\
$\mathit{RO}_\mathit{run}$ &  {\tt PSCSIs} & (PSCSI ref) Set & physical SCSI devices \\
$\mathit{RO}_\mathit{run}$ &  {\tt PSCSI\_HBAs} & (PSCSI\_HBA ref) Set & physical SCSI host bus adapters \\
$\mathit{RO}_\mathit{run}$ &  {\tt host\_CPUs} & (host\_cpu ref) Set & The physical CPUs on this host \\
$\mathit{RO}_\mathit{run}$ &  {\tt metrics} & host\_metrics ref & metrics associated with this host \\
\hline
\end{longtable}
\subsection{RPCs associated with class: host}
\subsubsection{RPC name:~disable}

{\bf Overview:} 
Puts the host into a state in which no new VMs can be started. Currently
active VMs on the host continue to execute.

 \noindent {\bf Signature:} 
\begin{verbatim} void disable (session_id s, host ref host)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & host & The Host to disable \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~enable}

{\bf Overview:} 
Puts the host into a state in which new VMs can be started.

 \noindent {\bf Signature:} 
\begin{verbatim} void enable (session_id s, host ref host)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & host & The Host to enable \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~shutdown}

{\bf Overview:} 
Shutdown the host. (This function can only be called if there are no
currently running VMs on the host and it is disabled.).

 \noindent {\bf Signature:} 
\begin{verbatim} void shutdown (session_id s, host ref host)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & host & The Host to shutdown \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~reboot}

{\bf Overview:} 
Reboot the host. (This function can only be called if there are no
currently running VMs on the host and it is disabled.).

 \noindent {\bf Signature:} 
\begin{verbatim} void reboot (session_id s, host ref host)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & host & The Host to reboot \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~dmesg}

{\bf Overview:} 
Get the host xen dmesg.

 \noindent {\bf Signature:} 
\begin{verbatim} string dmesg (session_id s, host ref host)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & host & The Host to query \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


dmesg string
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~dmesg\_clear}

{\bf Overview:} 
Get the host xen dmesg, and clear the buffer.

 \noindent {\bf Signature:} 
\begin{verbatim} string dmesg_clear (session_id s, host ref host)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & host & The Host to query \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


dmesg string
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_log}

{\bf Overview:} 
Get the host's log file.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_log (session_id s, host ref host)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & host & The Host to query \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


The contents of the host's primary log file
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~send\_debug\_keys}

{\bf Overview:} 
Inject the given string as debugging keys into Xen.

 \noindent {\bf Signature:} 
\begin{verbatim} void send_debug_keys (session_id s, host ref host, string keys)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & host & The host \\ \hline 

{\tt string } & keys & The keys to send \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~list\_methods}

{\bf Overview:} 
List all supported methods.

 \noindent {\bf Signature:} 
\begin{verbatim} (string Set) list_methods (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string Set
}


The name of every supported method.
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the hosts known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((host ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(host ref) Set
}


A list of all the IDs of all the hosts
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_name\_label}

{\bf Overview:} 
Get the name/label field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_name_label (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_name\_label}

{\bf Overview:} 
Set the name/label field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_name_label (session_id s, host ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_name\_description}

{\bf Overview:} 
Get the name/description field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_name_description (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_name\_description}

{\bf Overview:} 
Set the name/description field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_name_description (session_id s, host ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_API\_version\_major}

{\bf Overview:} 
Get the API\_version/major field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_API_version_major (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_API\_version\_minor}

{\bf Overview:} 
Get the API\_version/minor field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_API_version_minor (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_API\_version\_vendor}

{\bf Overview:} 
Get the API\_version/vendor field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_API_version_vendor (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_API\_version\_vendor\_implementation}

{\bf Overview:} 
Get the API\_version/vendor\_implementation field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_API_version_vendor_implementation (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_enabled}

{\bf Overview:} 
Get the enabled field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} bool get_enabled (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
bool
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_software\_version}

{\bf Overview:} 
Get the software\_version field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_software_version (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_other\_config}

{\bf Overview:} 
Get the other\_config field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_other_config (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_other\_config}

{\bf Overview:} 
Set the other\_config field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_other_config (session_id s, host ref self, (string -> string) Map value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~add\_to\_other\_config}

{\bf Overview:} 
Add the given key-value pair to the other\_config field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} void add_to_other_config (session_id s, host ref self, string key, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to add \\ \hline 

{\tt string } & value & Value to add \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~remove\_from\_other\_config}

{\bf Overview:} 
Remove the given key and its corresponding value from the other\_config
field of the given host.  If the key is not in that Map, then do nothing.

 \noindent {\bf Signature:} 
\begin{verbatim} void remove_from_other_config (session_id s, host ref self, string key)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to remove \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_capabilities}

{\bf Overview:} 
Get the capabilities field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} (string Set) get_capabilities (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_cpu\_configuration}

{\bf Overview:} 
Get the cpu\_configuration field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_cpu_configuration (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_sched\_policy}

{\bf Overview:} 
Get the sched\_policy field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_sched_policy (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_supported\_bootloaders}

{\bf Overview:} 
Get the supported\_bootloaders field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} (string Set) get_supported_bootloaders (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_resident\_VMs}

{\bf Overview:} 
Get the resident\_VMs field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VM ref) Set) get_resident_VMs (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VM ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_logging}

{\bf Overview:} 
Get the logging field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_logging (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_logging}

{\bf Overview:} 
Set the logging field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_logging (session_id s, host ref self, (string -> string) Map value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~add\_to\_logging}

{\bf Overview:} 
Add the given key-value pair to the logging field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} void add_to_logging (session_id s, host ref self, string key, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to add \\ \hline 

{\tt string } & value & Value to add \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~remove\_from\_logging}

{\bf Overview:} 
Remove the given key and its corresponding value from the logging field of
the given host.  If the key is not in that Map, then do nothing.

 \noindent {\bf Signature:} 
\begin{verbatim} void remove_from_logging (session_id s, host ref self, string key)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to remove \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PIFs}

{\bf Overview:} 
Get the PIFs field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} ((PIF ref) Set) get_PIFs (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(PIF ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_suspend\_image\_sr}

{\bf Overview:} 
Get the suspend\_image\_sr field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} (SR ref) get_suspend_image_sr (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
SR ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_suspend\_image\_sr}

{\bf Overview:} 
Set the suspend\_image\_sr field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_suspend_image_sr (session_id s, host ref self, SR ref value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

{\tt SR ref } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_crash\_dump\_sr}

{\bf Overview:} 
Get the crash\_dump\_sr field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} (SR ref) get_crash_dump_sr (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
SR ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_crash\_dump\_sr}

{\bf Overview:} 
Set the crash\_dump\_sr field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_crash_dump_sr (session_id s, host ref self, SR ref value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

{\tt SR ref } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PBDs}

{\bf Overview:} 
Get the PBDs field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} ((PBD ref) Set) get_PBDs (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(PBD ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PPCIs}

{\bf Overview:} 
Get the PPCIs field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} ((PPCI ref) Set) get_PPCIs (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(PPCI ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PSCSIs}

{\bf Overview:} 
Get the PSCSIs field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} ((PSCSI ref) Set) get_PSCSIs (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(PSCSI ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PSCSI\_HBAs}

{\bf Overview:} 
Get the PSCSI\_HBAs field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} ((PSCSI_HBA ref) Set) get_PSCSI_HBAs (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(PSCSI\_HBA ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_host\_CPUs}

{\bf Overview:} 
Get the host\_CPUs field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} ((host_cpu ref) Set) get_host_CPUs (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(host\_cpu ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_metrics}

{\bf Overview:} 
Get the metrics field of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} (host_metrics ref) get_metrics (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
host\_metrics ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the host instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (host ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
host ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given host.

 \noindent {\bf Signature:} 
\begin{verbatim} (host record) get_record (session_id s, host ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
host record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_name\_label}

{\bf Overview:} 
Get all the host instances with the given label.

 \noindent {\bf Signature:} 
\begin{verbatim} ((host ref) Set) get_by_name_label (session_id s, string label)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & label & label of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(host ref) Set
}


references to objects with match names
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: host\_metrics}
\subsection{Fields for class: host\_metrics}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf host\_metrics} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em
The metrics associated with a host.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{run}$ &  {\tt memory/total} & int & Host's total memory (bytes) \\
$\mathit{RO}_\mathit{run}$ &  {\tt memory/free} & int & Host's free memory (bytes) \\
$\mathit{RO}_\mathit{run}$ &  {\tt last\_updated} & datetime & Time at which this information was last updated \\
\hline
\end{longtable}
\subsection{RPCs associated with class: host\_metrics}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the host\_metrics instances known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((host_metrics ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(host\_metrics ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given host\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, host_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_memory\_total}

{\bf Overview:} 
Get the memory/total field of the given host\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_memory_total (session_id s, host_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_memory\_free}

{\bf Overview:} 
Get the memory/free field of the given host\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_memory_free (session_id s, host_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_last\_updated}

{\bf Overview:} 
Get the last\_updated field of the given host\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} datetime get_last_updated (session_id s, host_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
datetime
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the host\_metrics instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (host_metrics ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
host\_metrics ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given host\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} (host_metrics record) get_record (session_id s, host_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
host\_metrics record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: host\_cpu}
\subsection{Fields for class: host\_cpu}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf host\_cpu} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A physical CPU}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{run}$ &  {\tt host} & host ref & the host the CPU is in \\
$\mathit{RO}_\mathit{run}$ &  {\tt number} & int & the number of the physical CPU within the host \\
$\mathit{RO}_\mathit{run}$ &  {\tt vendor} & string & the vendor of the physical CPU \\
$\mathit{RO}_\mathit{run}$ &  {\tt speed} & int & the speed of the physical CPU \\
$\mathit{RO}_\mathit{run}$ &  {\tt modelname} & string & the model name of the physical CPU \\
$\mathit{RO}_\mathit{run}$ &  {\tt stepping} & string & the stepping of the physical CPU \\
$\mathit{RO}_\mathit{run}$ &  {\tt flags} & string & the flags of the physical CPU (a decoded version of the features field) \\
$\mathit{RO}_\mathit{run}$ &  {\tt features} & string & the physical CPU feature bitmap \\
$\mathit{RO}_\mathit{run}$ &  {\tt utilisation} & float & the current CPU utilisation \\
\hline
\end{longtable}
\subsection{RPCs associated with class: host\_cpu}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the host\_cpus known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((host_cpu ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(host\_cpu ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given host\_cpu.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, host_cpu ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_cpu ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_host}

{\bf Overview:} 
Get the host field of the given host\_cpu.

 \noindent {\bf Signature:} 
\begin{verbatim} (host ref) get_host (session_id s, host_cpu ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_cpu ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
host ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_number}

{\bf Overview:} 
Get the number field of the given host\_cpu.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_number (session_id s, host_cpu ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_cpu ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_vendor}

{\bf Overview:} 
Get the vendor field of the given host\_cpu.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_vendor (session_id s, host_cpu ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_cpu ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_speed}

{\bf Overview:} 
Get the speed field of the given host\_cpu.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_speed (session_id s, host_cpu ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_cpu ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_modelname}

{\bf Overview:} 
Get the modelname field of the given host\_cpu.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_modelname (session_id s, host_cpu ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_cpu ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_stepping}

{\bf Overview:} 
Get the stepping field of the given host\_cpu.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_stepping (session_id s, host_cpu ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_cpu ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_flags}

{\bf Overview:} 
Get the flags field of the given host\_cpu.  As of this version of the
API, the semantics of the returned string are explicitly unspecified,
and may change in the future.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_flags (session_id s, host_cpu ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_cpu ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_features}

{\bf Overview:} 
Get the features field of the given host\_cpu. As of this version of the
API, the semantics of the returned string are explicitly unspecified,
and may change in the future.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_features (session_id s, host_cpu ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_cpu ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_utilisation}

{\bf Overview:} 
Get the utilisation field of the given host\_cpu.

 \noindent {\bf Signature:} 
\begin{verbatim} float get_utilisation (session_id s, host_cpu ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_cpu ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
float
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the host\_cpu instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (host_cpu ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
host\_cpu ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given host\_cpu.

 \noindent {\bf Signature:} 
\begin{verbatim} (host_cpu record) get_record (session_id s, host_cpu ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt host\_cpu ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
host\_cpu record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: network}
\subsection{Fields for class: network}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf network} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
virtual network.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RW}$ &  {\tt name/label} & string & a human-readable name \\
$\mathit{RW}$ &  {\tt name/description} & string & a notes field containg human-readable description \\
$\mathit{RO}_\mathit{run}$ &  {\tt VIFs} & (VIF ref) Set & list of connected vifs \\
$\mathit{RO}_\mathit{run}$ &  {\tt PIFs} & (PIF ref) Set & list of connected pifs \\
$\mathit{RW}$ &  {\tt default\_gateway} & string & default gateway \\
$\mathit{RW}$ &  {\tt default\_netmask} & string & default netmask \\
$\mathit{RW}$ &  {\tt other\_config} & (string $\rightarrow$ string) Map & additional configuration \\
\hline
\end{longtable}
\subsection{RPCs associated with class: network}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the networks known to the system

 \noindent {\bf Signature:} 
\begin{verbatim} ((network ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(network ref) Set
}


A list of all the IDs of all the networks
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given network.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, network ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_name\_label}

{\bf Overview:} 
Get the name/label field of the given network.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_name_label (session_id s, network ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_name\_label}

{\bf Overview:} 
Set the name/label field of the given network.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_name_label (session_id s, network ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_name\_description}

{\bf Overview:} 
Get the name/description field of the given network.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_name_description (session_id s, network ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_name\_description}

{\bf Overview:} 
Set the name/description field of the given network.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_name_description (session_id s, network ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VIFs}

{\bf Overview:} 
Get the VIFs field of the given network.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VIF ref) Set) get_VIFs (session_id s, network ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VIF ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PIFs}

{\bf Overview:} 
Get the PIFs field of the given network.

 \noindent {\bf Signature:} 
\begin{verbatim} ((PIF ref) Set) get_PIFs (session_id s, network ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(PIF ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_default\_gateway}

{\bf Overview:} 
Get the default\_gateway field of the given network.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_default_gateway (session_id s, network ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_default\_gateway}

{\bf Overview:} 
Set the default\_gateway field of the given network.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_default_gateway (session_id s, network ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_default\_netmask}

{\bf Overview:} 
Get the default\_netmask field of the given network.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_default_netmask (session_id s, network ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_default\_netmask}

{\bf Overview:} 
Set the default\_netmask field of the given network.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_default_netmask (session_id s, network ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_other\_config}

{\bf Overview:} 
Get the other\_config field of the given network.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_other_config (session_id s, network ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_other\_config}

{\bf Overview:} 
Set the other\_config field of the given network.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_other_config (session_id s, network ref self, (string -> string) Map value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~add\_to\_other\_config}

{\bf Overview:} 
Add the given key-value pair to the other\_config field of the given
network.

 \noindent {\bf Signature:} 
\begin{verbatim} void add_to_other_config (session_id s, network ref self, string key, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to add \\ \hline 

{\tt string } & value & Value to add \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~remove\_from\_other\_config}

{\bf Overview:} 
Remove the given key and its corresponding value from the other\_config
field of the given network.  If the key is not in that Map, then do
nothing.

 \noindent {\bf Signature:} 
\begin{verbatim} void remove_from_other_config (session_id s, network ref self, string key)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to remove \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~create}

{\bf Overview:} 
Create a new network instance, and return its handle.

 \noindent {\bf Signature:} 
\begin{verbatim} (network ref) create (session_id s, network record args)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network record } & args & All constructor arguments \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
network ref
}


reference to the newly created object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~destroy}

{\bf Overview:} 
Destroy the specified network instance.

 \noindent {\bf Signature:} 
\begin{verbatim} void destroy (session_id s, network ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the network instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (network ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
network ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given network.

 \noindent {\bf Signature:} 
\begin{verbatim} (network record) get_record (session_id s, network ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt network ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
network record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_name\_label}

{\bf Overview:} 
Get all the network instances with the given label.

 \noindent {\bf Signature:} 
\begin{verbatim} ((network ref) Set) get_by_name_label (session_id s, string label)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & label & label of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(network ref) Set
}


references to objects with match names
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: VIF}
\subsection{Fields for class: VIF}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf VIF} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
virtual network interface.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RW}$ &  {\tt device} & string & name of network device as exposed to guest e.g. eth0 \\
$\mathit{RO}_\mathit{ins}$ &  {\tt network} & network ref & virtual network to which this vif is connected \\
$\mathit{RO}_\mathit{ins}$ &  {\tt VM} & VM ref & virtual machine to which this vif is connected \\
$\mathit{RW}$ &  {\tt MAC} & string & ethernet MAC address of virtual interface, as exposed to guest \\
$\mathit{RW}$ &  {\tt MTU} & int & MTU in octets \\
$\mathit{RO}_\mathit{run}$ &  {\tt currently\_attached} & bool & is the device currently attached (erased on reboot) \\
$\mathit{RO}_\mathit{run}$ &  {\tt status\_code} & int & error/success code associated with last attach-operation (erased on reboot) \\
$\mathit{RO}_\mathit{run}$ &  {\tt status\_detail} & string & error/success information associated with last attach-operation status (erased on reboot) \\
$\mathit{RO}_\mathit{run}$ &  {\tt runtime\_properties} & (string $\rightarrow$ string) Map & Device runtime properties \\
$\mathit{RW}$ &  {\tt qos/algorithm\_type} & string & QoS algorithm to use \\
$\mathit{RW}$ &  {\tt qos/algorithm\_params} & (string $\rightarrow$ string) Map & parameters for chosen QoS algorithm \\
$\mathit{RO}_\mathit{run}$ &  {\tt qos/supported\_algorithms} & string Set & supported QoS algorithms for this VIF \\
$\mathit{RO}_\mathit{run}$ &  {\tt metrics} & VIF\_metrics ref & metrics associated with this VIF \\
\hline
\end{longtable}
\subsection{RPCs associated with class: VIF}
\subsubsection{RPC name:~plug}

{\bf Overview:} 
Hotplug the specified VIF, dynamically attaching it to the running VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void plug (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & The VIF to hotplug \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~unplug}

{\bf Overview:} 
Hot-unplug the specified VIF, dynamically unattaching it from the running
VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void unplug (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & The VIF to hot-unplug \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the VIFs known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VIF ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VIF ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_device}

{\bf Overview:} 
Get the device field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_device (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_device}

{\bf Overview:} 
Set the device field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_device (session_id s, VIF ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_network}

{\bf Overview:} 
Get the network field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} (network ref) get_network (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
network ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VM}

{\bf Overview:} 
Get the VM field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM ref) get_VM (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_MAC}

{\bf Overview:} 
Get the MAC field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_MAC (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_MAC}

{\bf Overview:} 
Set the MAC field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_MAC (session_id s, VIF ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_MTU}

{\bf Overview:} 
Get the MTU field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_MTU (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_MTU}

{\bf Overview:} 
Set the MTU field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_MTU (session_id s, VIF ref self, int value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

{\tt int } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_currently\_attached}

{\bf Overview:} 
Get the currently\_attached field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} bool get_currently_attached (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
bool
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_status\_code}

{\bf Overview:} 
Get the status\_code field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_status_code (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_status\_detail}

{\bf Overview:} 
Get the status\_detail field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_status_detail (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_runtime\_properties}

{\bf Overview:} 
Get the runtime\_properties field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_runtime_properties (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_qos\_algorithm\_type}

{\bf Overview:} 
Get the qos/algorithm\_type field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_qos_algorithm_type (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_qos\_algorithm\_type}

{\bf Overview:} 
Set the qos/algorithm\_type field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_qos_algorithm_type (session_id s, VIF ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_qos\_algorithm\_params}

{\bf Overview:} 
Get the qos/algorithm\_params field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_qos_algorithm_params (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_qos\_algorithm\_params}

{\bf Overview:} 
Set the qos/algorithm\_params field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_qos_algorithm_params (session_id s, VIF ref self, (string -> string) Map value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~add\_to\_qos\_algorithm\_params}

{\bf Overview:} 
Add the given key-value pair to the qos/algorithm\_params field of the
given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} void add_to_qos_algorithm_params (session_id s, VIF ref self, string key, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to add \\ \hline 

{\tt string } & value & Value to add \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~remove\_from\_qos\_algorithm\_params}

{\bf Overview:} 
Remove the given key and its corresponding value from the
qos/algorithm\_params field of the given VIF.  If the key is not in that
Map, then do nothing.

 \noindent {\bf Signature:} 
\begin{verbatim} void remove_from_qos_algorithm_params (session_id s, VIF ref self, string key)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to remove \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_qos\_supported\_algorithms}

{\bf Overview:} 
Get the qos/supported\_algorithms field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} (string Set) get_qos_supported_algorithms (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_metrics}

{\bf Overview:} 
Get the metrics field of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} (VIF_metrics ref) get_metrics (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VIF\_metrics ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_security\_label}

{\bf Overview:}
Set the security label of the given VIF. Refer to the XSPolicy class
for the format of the security label.

 \noindent {\bf Signature:}
\begin{verbatim} void set_security_label (session_id s, VIF ref self, string
security_label, string old_label)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline

{\tt string } & security\_label & New value of the security label \\ \hline
{\tt string } & old\_label & Label value that the security label \\
& & must currently have for the change to succeed.\\ \hline
\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
void
}


\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt SECURITY\_ERROR}

\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_security\_label}

{\bf Overview:}
Get the security label of the given VIF.

 \noindent {\bf Signature:}
\begin{verbatim} string get_security_label (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}



\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
string
}


value of the given field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~create}

{\bf Overview:} 
Create a new VIF instance, and return its handle.

 \noindent {\bf Signature:} 
\begin{verbatim} (VIF ref) create (session_id s, VIF record args)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF record } & args & All constructor arguments \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VIF ref
}


reference to the newly created object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~destroy}

{\bf Overview:} 
Destroy the specified VIF instance.

 \noindent {\bf Signature:} 
\begin{verbatim} void destroy (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the VIF instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (VIF ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VIF ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given VIF.

 \noindent {\bf Signature:} 
\begin{verbatim} (VIF record) get_record (session_id s, VIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VIF record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: VIF\_metrics}
\subsection{Fields for class: VIF\_metrics}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf VIF\_metrics} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em
The metrics associated with a virtual network device.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{run}$ &  {\tt io/read\_kbs} & float & Read bandwidth (KiB/s) \\
$\mathit{RO}_\mathit{run}$ &  {\tt io/write\_kbs} & float & Write bandwidth (KiB/s) \\
$\mathit{RO}_\mathit{run}$ &  {\tt last\_updated} & datetime & Time at which this information was last updated \\
\hline
\end{longtable}
\subsection{RPCs associated with class: VIF\_metrics}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the VIF\_metrics instances known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VIF_metrics ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VIF\_metrics ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given VIF\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, VIF_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_io\_read\_kbs}

{\bf Overview:} 
Get the io/read\_kbs field of the given VIF\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} float get_io_read_kbs (session_id s, VIF_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
float
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_io\_write\_kbs}

{\bf Overview:} 
Get the io/write\_kbs field of the given VIF\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} float get_io_write_kbs (session_id s, VIF_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
float
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_last\_updated}

{\bf Overview:} 
Get the last\_updated field of the given VIF\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} datetime get_last_updated (session_id s, VIF_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
datetime
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the VIF\_metrics instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (VIF_metrics ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VIF\_metrics ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given VIF\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} (VIF_metrics record) get_record (session_id s, VIF_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VIF\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VIF\_metrics record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: PIF}
\subsection{Fields for class: PIF}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf PIF} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
physical network interface (note separate VLANs are represented as several
PIFs).}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RW}$ &  {\tt device} & string & machine-readable name of the interface (e.g. eth0) \\
$\mathit{RO}_\mathit{ins}$ &  {\tt network} & network ref & virtual network to which this pif is connected \\
$\mathit{RO}_\mathit{ins}$ &  {\tt host} & host ref & physical machine to which this pif is connected \\
$\mathit{RW}$ &  {\tt MAC} & string & ethernet MAC address of physical interface \\
$\mathit{RW}$ &  {\tt MTU} & int & MTU in octets \\
$\mathit{RW}$ &  {\tt VLAN} & int & VLAN tag for all traffic passing through this interface \\
$\mathit{RO}_\mathit{run}$ &  {\tt metrics} & PIF\_metrics ref & metrics associated with this PIF \\
\hline
\end{longtable}
\subsection{RPCs associated with class: PIF}
\subsubsection{RPC name:~create\_VLAN}

{\bf Overview:} 
Create a VLAN interface from an existing physical interface.

 \noindent {\bf Signature:} 
\begin{verbatim} (PIF ref) create_VLAN (session_id s, string device, network ref network, host ref host, int VLAN)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & device & physical interface on which to crate the VLAN interface \\ \hline 

{\tt network ref } & network & network to which this interface should be connected \\ \hline 

{\tt host ref } & host & physical machine to which this PIF is connected \\ \hline 

{\tt int } & VLAN & VLAN tag for the new interface \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PIF ref
}


The reference of the created PIF object
\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt VLAN\_TAG\_INVALID}

\vspace{0.6cm}
\subsubsection{RPC name:~destroy}

{\bf Overview:} 
Destroy the interface (provided it is a synthetic interface like a VLAN;
fail if it is a physical interface).

 \noindent {\bf Signature:} 
\begin{verbatim} void destroy (session_id s, PIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF ref } & self & the PIF object to destroy \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt PIF\_IS\_PHYSICAL}

\vspace{0.6cm}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the PIFs known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((PIF ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(PIF ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given PIF.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, PIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_device}

{\bf Overview:} 
Get the device field of the given PIF.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_device (session_id s, PIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_device}

{\bf Overview:} 
Set the device field of the given PIF.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_device (session_id s, PIF ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_network}

{\bf Overview:} 
Get the network field of the given PIF.

 \noindent {\bf Signature:} 
\begin{verbatim} (network ref) get_network (session_id s, PIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
network ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_host}

{\bf Overview:} 
Get the host field of the given PIF.

 \noindent {\bf Signature:} 
\begin{verbatim} (host ref) get_host (session_id s, PIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
host ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_MAC}

{\bf Overview:} 
Get the MAC field of the given PIF.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_MAC (session_id s, PIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_MAC}

{\bf Overview:} 
Set the MAC field of the given PIF.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_MAC (session_id s, PIF ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_MTU}

{\bf Overview:} 
Get the MTU field of the given PIF.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_MTU (session_id s, PIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_MTU}

{\bf Overview:} 
Set the MTU field of the given PIF.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_MTU (session_id s, PIF ref self, int value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF ref } & self & reference to the object \\ \hline 

{\tt int } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VLAN}

{\bf Overview:} 
Get the VLAN field of the given PIF.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_VLAN (session_id s, PIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_VLAN}

{\bf Overview:} 
Set the VLAN field of the given PIF.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_VLAN (session_id s, PIF ref self, int value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF ref } & self & reference to the object \\ \hline 

{\tt int } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_metrics}

{\bf Overview:} 
Get the metrics field of the given PIF.

 \noindent {\bf Signature:} 
\begin{verbatim} (PIF_metrics ref) get_metrics (session_id s, PIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PIF\_metrics ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the PIF instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (PIF ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PIF ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given PIF.

 \noindent {\bf Signature:} 
\begin{verbatim} (PIF record) get_record (session_id s, PIF ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PIF record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: PIF\_metrics}
\subsection{Fields for class: PIF\_metrics}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf PIF\_metrics} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em
The metrics associated with a physical network interface.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{run}$ &  {\tt io/read\_kbs} & float & Read bandwidth (KiB/s) \\
$\mathit{RO}_\mathit{run}$ &  {\tt io/write\_kbs} & float & Write bandwidth (KiB/s) \\
$\mathit{RO}_\mathit{run}$ &  {\tt last\_updated} & datetime & Time at which this information was last updated \\
\hline
\end{longtable}
\subsection{RPCs associated with class: PIF\_metrics}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the PIF\_metrics instances known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((PIF_metrics ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(PIF\_metrics ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given PIF\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, PIF_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_io\_read\_kbs}

{\bf Overview:} 
Get the io/read\_kbs field of the given PIF\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} float get_io_read_kbs (session_id s, PIF_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
float
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_io\_write\_kbs}

{\bf Overview:} 
Get the io/write\_kbs field of the given PIF\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} float get_io_write_kbs (session_id s, PIF_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
float
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_last\_updated}

{\bf Overview:} 
Get the last\_updated field of the given PIF\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} datetime get_last_updated (session_id s, PIF_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
datetime
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the PIF\_metrics instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (PIF_metrics ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PIF\_metrics ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given PIF\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} (PIF_metrics record) get_record (session_id s, PIF_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PIF\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PIF\_metrics record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: SR}
\subsection{Fields for class: SR}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf SR} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
storage repository.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RW}$ &  {\tt name/label} & string & a human-readable name \\
$\mathit{RW}$ &  {\tt name/description} & string & a notes field containg human-readable description \\
$\mathit{RO}_\mathit{run}$ &  {\tt VDIs} & (VDI ref) Set & managed virtual disks \\
$\mathit{RO}_\mathit{run}$ &  {\tt PBDs} & (PBD ref) Set & physical blockdevices \\
$\mathit{RO}_\mathit{run}$ &  {\tt virtual\_allocation} & int & sum of virtual\_sizes of all VDIs in this storage repository (in bytes) \\
$\mathit{RO}_\mathit{run}$ &  {\tt physical\_utilisation} & int & physical space currently utilised on this storage repository (in bytes). Note that for sparse disk formats, physical\_utilisation may be less than virtual\_allocation \\
$\mathit{RO}_\mathit{ins}$ &  {\tt physical\_size} & int & total physical size of the repository (in bytes) \\
$\mathit{RO}_\mathit{ins}$ &  {\tt type} & string & type of the storage repository \\
$\mathit{RO}_\mathit{ins}$ &  {\tt content\_type} & string & the type of the SR's content, if required (e.g. ISOs) \\
\hline
\end{longtable}
\subsection{RPCs associated with class: SR}
\subsubsection{RPC name:~get\_supported\_types}

{\bf Overview:} 
Return a set of all the SR types supported by the system.

 \noindent {\bf Signature:} 
\begin{verbatim} (string Set) get_supported_types (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string Set
}


the supported SR types
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the SRs known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((SR ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(SR ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given SR.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, SR ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt SR ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_name\_label}

{\bf Overview:} 
Get the name/label field of the given SR.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_name_label (session_id s, SR ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt SR ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_name\_label}

{\bf Overview:} 
Set the name/label field of the given SR.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_name_label (session_id s, SR ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt SR ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_name\_description}

{\bf Overview:} 
Get the name/description field of the given SR.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_name_description (session_id s, SR ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt SR ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_name\_description}

{\bf Overview:} 
Set the name/description field of the given SR.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_name_description (session_id s, SR ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt SR ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VDIs}

{\bf Overview:} 
Get the VDIs field of the given SR.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VDI ref) Set) get_VDIs (session_id s, SR ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt SR ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VDI ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PBDs}

{\bf Overview:} 
Get the PBDs field of the given SR.

 \noindent {\bf Signature:} 
\begin{verbatim} ((PBD ref) Set) get_PBDs (session_id s, SR ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt SR ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(PBD ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_virtual\_allocation}

{\bf Overview:} 
Get the virtual\_allocation field of the given SR.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_virtual_allocation (session_id s, SR ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt SR ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_physical\_utilisation}

{\bf Overview:} 
Get the physical\_utilisation field of the given SR.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_physical_utilisation (session_id s, SR ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt SR ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_physical\_size}

{\bf Overview:} 
Get the physical\_size field of the given SR.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_physical_size (session_id s, SR ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt SR ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_type}

{\bf Overview:} 
Get the type field of the given SR.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_type (session_id s, SR ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt SR ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_content\_type}

{\bf Overview:} 
Get the content\_type field of the given SR.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_content_type (session_id s, SR ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt SR ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the SR instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (SR ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
SR ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given SR.

 \noindent {\bf Signature:} 
\begin{verbatim} (SR record) get_record (session_id s, SR ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt SR ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
SR record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_name\_label}

{\bf Overview:} 
Get all the SR instances with the given label.

 \noindent {\bf Signature:} 
\begin{verbatim} ((SR ref) Set) get_by_name_label (session_id s, string label)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & label & label of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(SR ref) Set
}


references to objects with match names
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: VDI}
\subsection{Fields for class: VDI}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf VDI} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
virtual disk image.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RW}$ &  {\tt name/label} & string & a human-readable name \\
$\mathit{RW}$ &  {\tt name/description} & string & a notes field containg human-readable description \\
$\mathit{RO}_\mathit{ins}$ &  {\tt SR} & SR ref & storage repository in which the VDI resides \\
$\mathit{RO}_\mathit{run}$ &  {\tt VBDs} & (VBD ref) Set & list of vbds that refer to this disk \\
$\mathit{RO}_\mathit{run}$ &  {\tt crash\_dumps} & (crashdump ref) Set & list of crash dumps that refer to this disk \\
$\mathit{RW}$ &  {\tt virtual\_size} & int & size of disk as presented to the guest (in bytes). Note that, depending on storage backend type, requested size may not be respected exactly \\
$\mathit{RO}_\mathit{run}$ &  {\tt physical\_utilisation} & int & amount of physical space that the disk image is currently taking up on the storage repository (in bytes) \\
$\mathit{RO}_\mathit{ins}$ &  {\tt type} & vdi\_type & type of the VDI \\
$\mathit{RW}$ &  {\tt sharable} & bool & true if this disk may be shared \\
$\mathit{RW}$ &  {\tt read\_only} & bool & true if this disk may ONLY be mounted read-only \\
$\mathit{RW}$ &  {\tt other\_config} & (string $\rightarrow$ string) Map & additional configuration \\
$\mathit{RO}_\mathit{run}$ &  {\tt security/label} & string & the VM's security label \\
\hline
\end{longtable}
\subsection{RPCs associated with class: VDI}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the VDIs known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VDI ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VDI ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, VDI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_name\_label}

{\bf Overview:} 
Get the name/label field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_name_label (session_id s, VDI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_name\_label}

{\bf Overview:} 
Set the name/label field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_name_label (session_id s, VDI ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_name\_description}

{\bf Overview:} 
Get the name/description field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_name_description (session_id s, VDI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_name\_description}

{\bf Overview:} 
Set the name/description field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_name_description (session_id s, VDI ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_SR}

{\bf Overview:} 
Get the SR field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} (SR ref) get_SR (session_id s, VDI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
SR ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VBDs}

{\bf Overview:} 
Get the VBDs field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VBD ref) Set) get_VBDs (session_id s, VDI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VBD ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_crash\_dumps}

{\bf Overview:} 
Get the crash\_dumps field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} ((crashdump ref) Set) get_crash_dumps (session_id s, VDI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(crashdump ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_virtual\_size}

{\bf Overview:} 
Get the virtual\_size field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_virtual_size (session_id s, VDI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_virtual\_size}

{\bf Overview:} 
Set the virtual\_size field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_virtual_size (session_id s, VDI ref self, int value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

{\tt int } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_physical\_utilisation}

{\bf Overview:} 
Get the physical\_utilisation field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_physical_utilisation (session_id s, VDI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_type}

{\bf Overview:} 
Get the type field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} (vdi_type) get_type (session_id s, VDI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
vdi\_type
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_sharable}

{\bf Overview:} 
Get the sharable field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} bool get_sharable (session_id s, VDI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
bool
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_sharable}

{\bf Overview:} 
Set the sharable field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_sharable (session_id s, VDI ref self, bool value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

{\tt bool } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_read\_only}

{\bf Overview:} 
Get the read\_only field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} bool get_read_only (session_id s, VDI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
bool
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_read\_only}

{\bf Overview:} 
Set the read\_only field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_read_only (session_id s, VDI ref self, bool value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

{\tt bool } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_other\_config}

{\bf Overview:} 
Get the other\_config field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_other_config (session_id s, VDI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_other\_config}

{\bf Overview:} 
Set the other\_config field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_other_config (session_id s, VDI ref self, (string -> string) Map value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~add\_to\_other\_config}

{\bf Overview:} 
Add the given key-value pair to the other\_config field of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} void add_to_other_config (session_id s, VDI ref self, string key, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to add \\ \hline 

{\tt string } & value & Value to add \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~remove\_from\_other\_config}

{\bf Overview:} 
Remove the given key and its corresponding value from the other\_config
field of the given VDI.  If the key is not in that Map, then do nothing.

 \noindent {\bf Signature:} 
\begin{verbatim} void remove_from_other_config (session_id s, VDI ref self, string key)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to remove \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_security\_label}

{\bf Overview:}
Set the security label of the given VDI. Refer to the XSPolicy class
for the format of the security label.

 \noindent {\bf Signature:}
\begin{verbatim} void set_security_label (session_id s, VDI ref self, string
security_label, string old_label)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline

{\tt string } & security\_label & New value of the security label \\ \hline
{\tt string } & old\_label & Label value that the security label \\
& & must currently have for the change to succeed.\\ \hline
\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
void
}


\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt SECURITY\_ERROR}

\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_security\_label}

{\bf Overview:}
Get the security label of the given VDI.

 \noindent {\bf Signature:}
\begin{verbatim} string get_security_label (session_id s, VDI ref self)\end{verbatim}


\noindent{\bf Arguments:}



\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
string
}


value of the given field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~create}

{\bf Overview:} 
Create a new VDI instance, and return its handle.

 \noindent {\bf Signature:} 
\begin{verbatim} (VDI ref) create (session_id s, VDI record args)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI record } & args & All constructor arguments \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VDI ref
}


reference to the newly created object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~destroy}

{\bf Overview:} 
Destroy the specified VDI instance.

 \noindent {\bf Signature:} 
\begin{verbatim} void destroy (session_id s, VDI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the VDI instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (VDI ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VDI ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given VDI.

 \noindent {\bf Signature:} 
\begin{verbatim} (VDI record) get_record (session_id s, VDI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VDI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VDI record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_name\_label}

{\bf Overview:} 
Get all the VDI instances with the given label.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VDI ref) Set) get_by_name_label (session_id s, string label)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & label & label of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VDI ref) Set
}


references to objects with match names
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: VBD}
\subsection{Fields for class: VBD}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf VBD} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
virtual block device.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{ins}$ &  {\tt VM} & VM ref & the virtual machine \\
$\mathit{RO}_\mathit{ins}$ &  {\tt VDI} & VDI ref & the virtual disk \\
$\mathit{RW}$ &  {\tt device} & string & device seen by the guest e.g. hda1 \\
$\mathit{RW}$ &  {\tt bootable} & bool & true if this VBD is bootable \\
$\mathit{RW}$ &  {\tt mode} & vbd\_mode & the mode the VBD should be mounted with \\
$\mathit{RW}$ &  {\tt type} & vbd\_type & how the VBD will appear to the guest (e.g. disk or CD) \\
$\mathit{RO}_\mathit{run}$ &  {\tt currently\_attached} & bool & is the device currently attached (erased on reboot) \\
$\mathit{RO}_\mathit{run}$ &  {\tt status\_code} & int & error/success code associated with last attach-operation (erased on reboot) \\
$\mathit{RO}_\mathit{run}$ &  {\tt status\_detail} & string & error/success information associated with last attach-operation status (erased on reboot) \\
$\mathit{RO}_\mathit{run}$ &  {\tt runtime\_properties} & (string $\rightarrow$ string) Map & Device runtime properties \\
$\mathit{RW}$ &  {\tt qos/algorithm\_type} & string & QoS algorithm to use \\
$\mathit{RW}$ &  {\tt qos/algorithm\_params} & (string $\rightarrow$ string) Map & parameters for chosen QoS algorithm \\
$\mathit{RO}_\mathit{run}$ &  {\tt qos/supported\_algorithms} & string Set & supported QoS algorithms for this VBD \\
$\mathit{RO}_\mathit{run}$ &  {\tt metrics} & VBD\_metrics ref & metrics associated with this VBD \\
\hline
\end{longtable}
\subsection{RPCs associated with class: VBD}
\subsubsection{RPC name:~media\_change}

{\bf Overview:} 
Change the media in the device for CDROM-like devices only. For other
devices, detach the VBD and attach a new one.

 \noindent {\bf Signature:} 
\begin{verbatim} void media_change (session_id s, VBD ref vbd, VDI ref vdi)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & vbd & The vbd representing the CDROM-like device \\ \hline 

{\tt VDI ref } & vdi & The new VDI to 'insert' \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~plug}

{\bf Overview:} 
Hotplug the specified VBD, dynamically attaching it to the running VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void plug (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & The VBD to hotplug \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~unplug}

{\bf Overview:} 
Hot-unplug the specified VBD, dynamically unattaching it from the running
VM.

 \noindent {\bf Signature:} 
\begin{verbatim} void unplug (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & The VBD to hot-unplug \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the VBDs known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VBD ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VBD ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VM}

{\bf Overview:} 
Get the VM field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM ref) get_VM (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VDI}

{\bf Overview:} 
Get the VDI field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} (VDI ref) get_VDI (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VDI ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_device}

{\bf Overview:} 
Get the device field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_device (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_device}

{\bf Overview:} 
Set the device field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_device (session_id s, VBD ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_bootable}

{\bf Overview:} 
Get the bootable field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} bool get_bootable (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
bool
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_bootable}

{\bf Overview:} 
Set the bootable field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_bootable (session_id s, VBD ref self, bool value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

{\tt bool } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_mode}

{\bf Overview:} 
Get the mode field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} (vbd_mode) get_mode (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
vbd\_mode
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_mode}

{\bf Overview:} 
Set the mode field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_mode (session_id s, VBD ref self, vbd_mode value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

{\tt vbd\_mode } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_type}

{\bf Overview:} 
Get the type field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} (vbd_type) get_type (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
vbd\_type
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_type}

{\bf Overview:} 
Set the type field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_type (session_id s, VBD ref self, vbd_type value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

{\tt vbd\_type } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_currently\_attached}

{\bf Overview:} 
Get the currently\_attached field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} bool get_currently_attached (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
bool
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_status\_code}

{\bf Overview:} 
Get the status\_code field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_status_code (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_status\_detail}

{\bf Overview:} 
Get the status\_detail field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_status_detail (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_runtime\_properties}

{\bf Overview:} 
Get the runtime\_properties field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_runtime_properties (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_qos\_algorithm\_type}

{\bf Overview:} 
Get the qos/algorithm\_type field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_qos_algorithm_type (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_qos\_algorithm\_type}

{\bf Overview:} 
Set the qos/algorithm\_type field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_qos_algorithm_type (session_id s, VBD ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_qos\_algorithm\_params}

{\bf Overview:} 
Get the qos/algorithm\_params field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_qos_algorithm_params (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_qos\_algorithm\_params}

{\bf Overview:} 
Set the qos/algorithm\_params field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_qos_algorithm_params (session_id s, VBD ref self, (string -> string) Map value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~add\_to\_qos\_algorithm\_params}

{\bf Overview:} 
Add the given key-value pair to the qos/algorithm\_params field of the
given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} void add_to_qos_algorithm_params (session_id s, VBD ref self, string key, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to add \\ \hline 

{\tt string } & value & Value to add \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~remove\_from\_qos\_algorithm\_params}

{\bf Overview:} 
Remove the given key and its corresponding value from the
qos/algorithm\_params field of the given VBD.  If the key is not in that
Map, then do nothing.

 \noindent {\bf Signature:} 
\begin{verbatim} void remove_from_qos_algorithm_params (session_id s, VBD ref self, string key)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to remove \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_qos\_supported\_algorithms}

{\bf Overview:} 
Get the qos/supported\_algorithms field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} (string Set) get_qos_supported_algorithms (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_metrics}

{\bf Overview:} 
Get the metrics field of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} (VBD_metrics ref) get_metrics (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VBD\_metrics ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~create}

{\bf Overview:} 
Create a new VBD instance, and return its handle.

 \noindent {\bf Signature:} 
\begin{verbatim} (VBD ref) create (session_id s, VBD record args)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD record } & args & All constructor arguments \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VBD ref
}


reference to the newly created object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~destroy}

{\bf Overview:} 
Destroy the specified VBD instance.

 \noindent {\bf Signature:} 
\begin{verbatim} void destroy (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the VBD instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (VBD ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VBD ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given VBD.

 \noindent {\bf Signature:} 
\begin{verbatim} (VBD record) get_record (session_id s, VBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VBD record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: VBD\_metrics}
\subsection{Fields for class: VBD\_metrics}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf VBD\_metrics} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em
The metrics associated with a virtual block device.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{run}$ &  {\tt io/read\_kbs} & float & Read bandwidth (KiB/s) \\
$\mathit{RO}_\mathit{run}$ &  {\tt io/write\_kbs} & float & Write bandwidth (KiB/s) \\
$\mathit{RO}_\mathit{run}$ &  {\tt last\_updated} & datetime & Time at which this information was last updated \\
\hline
\end{longtable}
\subsection{RPCs associated with class: VBD\_metrics}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the VBD\_metrics instances known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((VBD_metrics ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(VBD\_metrics ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given VBD\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, VBD_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_io\_read\_kbs}

{\bf Overview:} 
Get the io/read\_kbs field of the given VBD\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} float get_io_read_kbs (session_id s, VBD_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
float
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_io\_write\_kbs}

{\bf Overview:} 
Get the io/write\_kbs field of the given VBD\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} float get_io_write_kbs (session_id s, VBD_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
float
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_last\_updated}

{\bf Overview:} 
Get the last\_updated field of the given VBD\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} datetime get_last_updated (session_id s, VBD_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
datetime
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the VBD\_metrics instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (VBD_metrics ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VBD\_metrics ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given VBD\_metrics.

 \noindent {\bf Signature:} 
\begin{verbatim} (VBD_metrics record) get_record (session_id s, VBD_metrics ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VBD\_metrics ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VBD\_metrics record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: PBD}
\subsection{Fields for class: PBD}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf PBD} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em
The physical block devices through which hosts access SRs.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{ins}$ &  {\tt host} & host ref & physical machine on which the pbd is available \\
$\mathit{RO}_\mathit{ins}$ &  {\tt SR} & SR ref & the storage repository that the pbd realises \\
$\mathit{RO}_\mathit{ins}$ &  {\tt device\_config} & (string $\rightarrow$ string) Map & a config string to string map that is provided to the host's SR-backend-driver \\
$\mathit{RO}_\mathit{run}$ &  {\tt currently\_attached} & bool & is the SR currently attached on this host? \\
\hline
\end{longtable}
\subsection{RPCs associated with class: PBD}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the PBDs known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((PBD ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(PBD ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given PBD.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, PBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_host}

{\bf Overview:} 
Get the host field of the given PBD.

 \noindent {\bf Signature:} 
\begin{verbatim} (host ref) get_host (session_id s, PBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
host ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_SR}

{\bf Overview:} 
Get the SR field of the given PBD.

 \noindent {\bf Signature:} 
\begin{verbatim} (SR ref) get_SR (session_id s, PBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
SR ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_device\_config}

{\bf Overview:} 
Get the device\_config field of the given PBD.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_device_config (session_id s, PBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_currently\_attached}

{\bf Overview:} 
Get the currently\_attached field of the given PBD.

 \noindent {\bf Signature:} 
\begin{verbatim} bool get_currently_attached (session_id s, PBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
bool
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~create}

{\bf Overview:} 
Create a new PBD instance, and return its handle.

 \noindent {\bf Signature:} 
\begin{verbatim} (PBD ref) create (session_id s, PBD record args)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PBD record } & args & All constructor arguments \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PBD ref
}


reference to the newly created object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~destroy}

{\bf Overview:} 
Destroy the specified PBD instance.

 \noindent {\bf Signature:} 
\begin{verbatim} void destroy (session_id s, PBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the PBD instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (PBD ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PBD ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given PBD.

 \noindent {\bf Signature:} 
\begin{verbatim} (PBD record) get_record (session_id s, PBD ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PBD ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PBD record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: crashdump}
\subsection{Fields for class: crashdump}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf crashdump} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
VM crashdump.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{ins}$ &  {\tt VM} & VM ref & the virtual machine \\
$\mathit{RO}_\mathit{ins}$ &  {\tt VDI} & VDI ref & the virtual disk \\
\hline
\end{longtable}
\subsection{RPCs associated with class: crashdump}
\subsubsection{RPC name:~destroy}

{\bf Overview:} 
Destroy the specified crashdump.

 \noindent {\bf Signature:} 
\begin{verbatim} void destroy (session_id s, crashdump ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt crashdump ref } & self & The crashdump to destroy \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the crashdumps known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((crashdump ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(crashdump ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given crashdump.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, crashdump ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt crashdump ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VM}

{\bf Overview:} 
Get the VM field of the given crashdump.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM ref) get_VM (session_id s, crashdump ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt crashdump ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VDI}

{\bf Overview:} 
Get the VDI field of the given crashdump.

 \noindent {\bf Signature:} 
\begin{verbatim} (VDI ref) get_VDI (session_id s, crashdump ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt crashdump ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VDI ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the crashdump instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (crashdump ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
crashdump ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given crashdump.

 \noindent {\bf Signature:} 
\begin{verbatim} (crashdump record) get_record (session_id s, crashdump ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt crashdump ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
crashdump record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: VTPM}
\subsection{Fields for class: VTPM}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf VTPM} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
virtual TPM device.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{ins}$ &  {\tt VM} & VM ref & the virtual machine \\
$\mathit{RO}_\mathit{ins}$ &  {\tt backend} & VM ref & the domain where the backend is located \\
$\mathit{RW}$ &  {\tt other\_config} & (string $\rightarrow$ string) Map & additional configuration \\
\hline
\end{longtable}
\subsection{RPCs associated with class: VTPM}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given VTPM.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, VTPM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VTPM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VM}

{\bf Overview:} 
Get the VM field of the given VTPM.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM ref) get_VM (session_id s, VTPM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VTPM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_backend}

{\bf Overview:} 
Get the backend field of the given VTPM.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM ref) get_backend (session_id s, VTPM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VTPM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_other\_config}

{\bf Overview:}
Get the other\_config field of the given VTPM.

 \noindent {\bf Signature:}
\begin{verbatim} ((string -> string) Map) get_other_config (session_id s, VTPM ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VTPM ref } & self & reference to the object \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_other\_config}

{\bf Overview:}
Set the other\_config field of the given VTPM.

 \noindent {\bf Signature:}
\begin{verbatim} void set_other_config (session_id s, VTPM ref self, (string -> string) Map value)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VTPM ref } & self & reference to the object \\ \hline

{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_runtime\_properties}

{\bf Overview:}
Get the runtime\_properties field of the given VTPM.

\noindent {\bf Signature:}
\begin{verbatim} ((string -> string) Map) get_runtime_properties (session_id s, VTPM ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VTPM ref } & self & reference to the object \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~create}

{\bf Overview:} 
Create a new VTPM instance, and return its handle.

 \noindent {\bf Signature:} 
\begin{verbatim} (VTPM ref) create (session_id s, VTPM record args)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VTPM record } & args & All constructor arguments \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VTPM ref
}


reference to the newly created object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~destroy}

{\bf Overview:} 
Destroy the specified VTPM instance.

 \noindent {\bf Signature:} 
\begin{verbatim} void destroy (session_id s, VTPM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VTPM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the VTPM instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (VTPM ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VTPM ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given VTPM.

 \noindent {\bf Signature:} 
\begin{verbatim} (VTPM record) get_record (session_id s, VTPM ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt VTPM ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VTPM record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: console}
\subsection{Fields for class: console}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf console} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
console.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{run}$ &  {\tt protocol} & console\_protocol & the protocol used by this console \\
$\mathit{RO}_\mathit{run}$ &  {\tt location} & string & URI for the console service \\
$\mathit{RO}_\mathit{run}$ &  {\tt VM} & VM ref & VM to which this console is attached \\
$\mathit{RW}$ &  {\tt other\_config} & (string $\rightarrow$ string) Map & additional configuration \\
\hline
\end{longtable}
\subsection{RPCs associated with class: console}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the consoles known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((console ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(console ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given console.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, console ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt console ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_protocol}

{\bf Overview:} 
Get the protocol field of the given console.

 \noindent {\bf Signature:} 
\begin{verbatim} (console_protocol) get_protocol (session_id s, console ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt console ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
console\_protocol
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_location}

{\bf Overview:} 
Get the location field of the given console.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_location (session_id s, console ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt console ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VM}

{\bf Overview:} 
Get the VM field of the given console.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM ref) get_VM (session_id s, console ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt console ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_other\_config}

{\bf Overview:} 
Get the other\_config field of the given console.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_other_config (session_id s, console ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt console ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_other\_config}

{\bf Overview:} 
Set the other\_config field of the given console.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_other_config (session_id s, console ref self, (string -> string) Map value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt console ref } & self & reference to the object \\ \hline 

{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~add\_to\_other\_config}

{\bf Overview:} 
Add the given key-value pair to the other\_config field of the given
console.

 \noindent {\bf Signature:} 
\begin{verbatim} void add_to_other_config (session_id s, console ref self, string key, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt console ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to add \\ \hline 

{\tt string } & value & Value to add \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~remove\_from\_other\_config}

{\bf Overview:} 
Remove the given key and its corresponding value from the other\_config
field of the given console.  If the key is not in that Map, then do
nothing.

 \noindent {\bf Signature:} 
\begin{verbatim} void remove_from_other_config (session_id s, console ref self, string key)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt console ref } & self & reference to the object \\ \hline 

{\tt string } & key & Key to remove \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~create}

{\bf Overview:} 
Create a new console instance, and return its handle.

 \noindent {\bf Signature:} 
\begin{verbatim} (console ref) create (session_id s, console record args)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt console record } & args & All constructor arguments \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
console ref
}


reference to the newly created object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~destroy}

{\bf Overview:} 
Destroy the specified console instance.

 \noindent {\bf Signature:} 
\begin{verbatim} void destroy (session_id s, console ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt console ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the console instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (console ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
console ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given console.

 \noindent {\bf Signature:} 
\begin{verbatim} (console record) get_record (session_id s, console ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt console ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
console record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: DPCI}
\subsection{Fields for class: DPCI}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf DPCI} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
pass-through PCI device.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{inst}$ &  {\tt VM} & VM ref & the virtual machine \\
$\mathit{RO}_\mathit{inst}$ &  {\tt PPCI} & PPCI ref & the physical PCI device \\
$\mathit{RO}_\mathit{inst}$ &  {\tt hotplug\_slot} & int & the slot number to which this PCI device is inserted \\
$\mathit{RO}_\mathit{run}$ &  {\tt virtual\_domain} & int & the virtual domain number \\
$\mathit{RO}_\mathit{run}$ &  {\tt virtual\_bus} & int & the virtual bus number \\
$\mathit{RO}_\mathit{run}$ &  {\tt virtual\_slot} & int & the virtual slot number \\
$\mathit{RO}_\mathit{run}$ &  {\tt virtual\_func} & int & the virtual func number \\
$\mathit{RO}_\mathit{run}$ &  {\tt virtual\_name} & string & the virtual PCI name \\
\hline
\end{longtable}
\subsection{RPCs associated with class: DPCI}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the DPCIs known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((DPCI ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(DPCI ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given DPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, DPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VM}

{\bf Overview:} 
Get the VM field of the given DPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM ref) get_VM (session_id s, DPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PPCI}

{\bf Overview:} 
Get the PPCI field of the given DPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} (PPCI ref) get_PPCI (session_id s, DPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PPCI ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_hotplug\_slot}

{\bf Overview:} 
Get the hotplug\_slot field of the given DPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_hotplug_slot (session_id s, DPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_virtual\_domain}

{\bf Overview:} 
Get the virtual\_domain field of the given DPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_virtual_domain (session_id s, DPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_virtual\_bus}

{\bf Overview:} 
Get the virtual\_bus field of the given DPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_virtual_bus (session_id s, DPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_virtual\_slot}

{\bf Overview:} 
Get the virtual\_slot field of the given DPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_virtual_slot (session_id s, DPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_virtual\_func}

{\bf Overview:} 
Get the virtual\_func field of the given DPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_virtual_func (session_id s, DPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_virtual\_name}

{\bf Overview:} 
Get the virtual\_name field of the given DPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_virtual_name (session_id s, DPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~create}

{\bf Overview:} 
Create a new DPCI instance, and return its handle.

 \noindent {\bf Signature:} 
\begin{verbatim} (DPCI ref) create (session_id s, DPCI record args)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DPCI record } & args & All constructor arguments \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
DPCI ref
}


reference to the newly created object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~destroy}

{\bf Overview:} 
Destroy the specified DPCI instance.

 \noindent {\bf Signature:} 
\begin{verbatim} void destroy (session_id s, DPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}


\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the DPCI instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (DPCI ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
DPCI ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given DPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} (DPCI record) get_record (session_id s, DPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
DPCI record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: PPCI}
\subsection{Fields for class: PPCI}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf PPCI} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
physical PCI device.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{run}$ &  {\tt host} & host ref &  the physical machine to which this PPCI is connected \\
$\mathit{RO}_\mathit{run}$ &  {\tt domain} & int & the domain number \\
$\mathit{RO}_\mathit{run}$ &  {\tt bus} & int & the bus number \\
$\mathit{RO}_\mathit{run}$ &  {\tt slot} & int & the slot number \\
$\mathit{RO}_\mathit{run}$ &  {\tt func} & int & the func number \\
$\mathit{RO}_\mathit{run}$ &  {\tt name} & string & the PCI name \\
$\mathit{RO}_\mathit{run}$ &  {\tt vendor\_id} & int & the vendor ID \\
$\mathit{RO}_\mathit{run}$ &  {\tt vendor\_name} & string & the vendor name \\
$\mathit{RO}_\mathit{run}$ &  {\tt device\_id} & int & the device ID \\
$\mathit{RO}_\mathit{run}$ &  {\tt device\_name} & string & the device name \\
$\mathit{RO}_\mathit{run}$ &  {\tt revision\_id} & int & the revision ID \\
$\mathit{RO}_\mathit{run}$ &  {\tt class\_code} & int & the class code \\
$\mathit{RO}_\mathit{run}$ &  {\tt class\_name} & string & the class name \\
$\mathit{RO}_\mathit{run}$ &  {\tt subsystem\_vendor\_id} & int & the subsystem vendor ID \\
$\mathit{RO}_\mathit{run}$ &  {\tt subsystem\_vendor\_name} & string & the subsystem vendor name \\
$\mathit{RO}_\mathit{run}$ &  {\tt subsystem\_id} & int & the subsystem ID \\
$\mathit{RO}_\mathit{run}$ &  {\tt subsystem\_name} & string & the subsystem name \\
$\mathit{RO}_\mathit{run}$ &  {\tt driver} & string & the driver name \\
\hline
\end{longtable}
\subsection{RPCs associated with class: PPCI}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the PPCIs known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((PPCI ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(PPCI ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_host}

{\bf Overview:} 
Get the host field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} (host ref) get_host (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
host ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_domain}

{\bf Overview:} 
Get the domain field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_domain (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_bus}

{\bf Overview:} 
Get the bus field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_bus (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_slot}

{\bf Overview:} 
Get the slot field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_slot (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_func}

{\bf Overview:} 
Get the func field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_func (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_name}

{\bf Overview:} 
Get the name field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_name (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_vendor\_id}

{\bf Overview:} 
Get the vendor\_id field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_vendor_id (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_vendor\_name}

{\bf Overview:} 
Get the vendor\_name field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_vendor_name (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_device\_id}

{\bf Overview:} 
Get the device\_id field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_device_id (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_device\_name}

{\bf Overview:} 
Get the device\_name field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_device_name (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_revision\_id}

{\bf Overview:} 
Get the revision\_id field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_revision_id (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_class\_code}

{\bf Overview:} 
Get the class\_code field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_class_code (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_class\_name}

{\bf Overview:} 
Get the class\_name field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_class_name (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_subsystem\_vendor\_id}

{\bf Overview:} 
Get the subsystem\_vendor\_id field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_subsystem_vendor_id (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_subsystem\_vendor\_name}

{\bf Overview:} 
Get the subsystem\_vendor\_name field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_subsystem_vendor_name (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_subsystem\_id}

{\bf Overview:} 
Get the subsystem\_id field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_subsystem_id (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_subsystem\_name}

{\bf Overview:} 
Get the subsystem\_name field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_subsystem_name (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_driver}

{\bf Overview:} 
Get the driver field of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_driver (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the PPCI instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (PPCI ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PPCI ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given PPCI.

 \noindent {\bf Signature:} 
\begin{verbatim} (PPCI record) get_record (session_id s, PPCI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PPCI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PPCI record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: DSCSI}
\subsection{Fields for class: DSCSI}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf DSCSI} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
half-virtualized SCSI device.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{inst}$ &  {\tt VM} & VM ref & the virtual machine \\
$\mathit{RO}_\mathit{inst}$ &  {\tt PSCSI} & PSCSI ref & the physical SCSI device \\
$\mathit{RO}_\mathit{run}$ &  {\tt HBA} & DSCSI\_HBA ref & the half-virtualized SCSI host bus adapter \\
$\mathit{RO}_\mathit{run}$ &  {\tt virtual\_host} & int & the virtual host number \\
$\mathit{RO}_\mathit{run}$ &  {\tt virtual\_channel} & int & the virtual channel number \\
$\mathit{RO}_\mathit{run}$ &  {\tt virtual\_target} & int & the virtual target number \\
$\mathit{RO}_\mathit{run}$ &  {\tt virtual\_lun} & int & the virtual logical unit number \\
$\mathit{RO}_\mathit{inst}$ &  {\tt virtual\_HCTL} & string & the virtual HCTL \\
$\mathit{RO}_\mathit{run}$ &  {\tt runtime\_properties} & (string $\rightarrow$ string) Map & Device runtime properties \\
\hline
\end{longtable}
\subsection{RPCs associated with class: DSCSI}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the DSCSIs known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((DSCSI ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(DSCSI ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given DSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, DSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VM}

{\bf Overview:} 
Get the VM field of the given DSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM ref) get_VM (session_id s, DSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PSCSI}

{\bf Overview:} 
Get the PSCSI field of the given DSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} (PSCSI ref) get_PSCSI (session_id s, DSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PSCSI ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_HBA}

{\bf Overview:} 
Get the HBA field of the given DSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} (DSCSI_HBA ref) get_HBA (session_id s, DSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
DSCSI\_HBA ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_virtual\_host}

{\bf Overview:} 
Get the virtual\_host field of the given DSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_virtual_host (session_id s, DSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_virtual\_channel}

{\bf Overview:} 
Get the virtual\_channel field of the given DSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_virtual_channel (session_id s, DSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_virtual\_target}

{\bf Overview:} 
Get the virtual\_target field of the given DSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_virtual_target (session_id s, DSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_virtual\_lun}

{\bf Overview:} 
Get the virtual\_lun field of the given DSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_virtual_lun (session_id s, DSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_virtual\_HCTL}

{\bf Overview:} 
Get the virtual\_HCTL field of the given DSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_virtual_HCTL (session_id s, DSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_runtime\_properties}

{\bf Overview:} 
Get the runtime\_properties field of the given DSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} ((string -> string) Map) get_runtime_properties (session_id s, DSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(string $\rightarrow$ string) Map
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~create}

{\bf Overview:} 
Create a new DSCSI instance, and create a new DSCSI\_HBA instance as needed
that the new DSCSI instance connects to, and return the handle of the new
DSCSI instance.

 \noindent {\bf Signature:} 
\begin{verbatim} (DSCSI ref) create (session_id s, DSCSI record args)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI record } & args & All constructor arguments \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
DSCSI ref
}


reference to the newly created object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~destroy}

{\bf Overview:} 
Destroy the specified DSCSI instance, and destroy a DSCSI\_HBA instance as
needed that the specified DSCSI instance connects to.

 \noindent {\bf Signature:} 
\begin{verbatim} void destroy (session_id s, DSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}


\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the DSCSI instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (DSCSI ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
DSCSI ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given DSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} (DSCSI record) get_record (session_id s, DSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
DSCSI record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: DSCSI\_HBA}
\subsection{Fields for class: DSCSI\_HBA}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf DSCSI\_HBA} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
half-virtualized SCSI host bus adapter.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{inst}$ &  {\tt VM} & VM ref & the virtual machine \\
$\mathit{RO}_\mathit{run}$ &  {\tt PSCSI\_HBAs} & (PSCSI\_HBA ref) Set & the physical SCSI HBAs \\
$\mathit{RO}_\mathit{run}$ &  {\tt DSCSIs} & (DSCSI ref) Set & the half-virtualized SCSI devices which are connected to this DSCSI HBA \\
$\mathit{RO}_\mathit{inst}$ &  {\tt virtual\_host} & int & the virtual host number \\
$\mathit{RO}_\mathit{inst}$ &  {\tt assignment\_mode} & string & the assignment mode of the half-virtualized SCSI devices which are connected to this DSCSI HBA \\
\hline
\end{longtable}
\subsection{RPCs associated with class: DSCSI\_HBA}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the DSCSI HBAs known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((DSCSI_HBA ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(DSCSI\_HBA ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given DSCSI HBA.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, DSCSI_HBA ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VM}

{\bf Overview:} 
Get the VM field of the given DSCSI HBA.

 \noindent {\bf Signature:} 
\begin{verbatim} (VM ref) get_VM (session_id s, DSCSI_HBA ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI\_HBA ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
VM ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PSCSI\_HBAs}

{\bf Overview:} 
Get the PSCSI\_HBAs field of the given DSCSI HBA.

 \noindent {\bf Signature:} 
\begin{verbatim} ((PSCSI_HBA ref) Set) get_PSCSI_HBAs (session_id s, DSCSI_HBA ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI\_HBA ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(PSCSI\_HBA ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_DSCSIs}

{\bf Overview:} 
Get the DSCSIs field of the given DSCSI HBA.

 \noindent {\bf Signature:} 
\begin{verbatim} ((DSCSI ref) Set) get_DSCSIs (session_id s, DSCSI_HBA ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI\_HBA ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(DSCSI ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_virtual\_host}

{\bf Overview:} 
Get the virtual\_host field of the given DSCSI HBA.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_virtual_host (session_id s, DSCSI_HBA ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI\_HBA ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_assignment\_mode}

{\bf Overview:} 
Get the assignment\_mode field of the given DSCSI HBA.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_assignment_mode (session_id s, DSCSI_HBA ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI\_HBA ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~create}

{\bf Overview:} 
Create a new DSCSI\_HBA instance, and create new DSCSI instances of
half-virtualized SCSI devices which are connected to the half-virtualized
SCSI host bus adapter, and return the handle of the new DSCSI\_HBA instance.

 \noindent {\bf Signature:} 
\begin{verbatim} (DSCSI_HBA ref) create (session_id s, DSCSI_HBA record args)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI\_HBA record } & args & All constructor arguments \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
DSCSI\_HBA ref
}


reference to the newly created object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~destroy}

{\bf Overview:} 
Destroy the specified DSCSI\_HBA instance, and destroy DSCSI instances of
half-virtualized SCSI devices which are connected to the half-virtualized SCSI
host bus adapter.

 \noindent {\bf Signature:} 
\begin{verbatim} void destroy (session_id s, DSCSI_HBA ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI\_HBA ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}


\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the DSCSI\_HBA instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (DSCSI_HBA ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
DSCSI\_HBA ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given DSCSI HBA.

 \noindent {\bf Signature:} 
\begin{verbatim} (DSCSI_HBA record) get_record (session_id s, DSCSI_HBA ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt DSCSI\_HBA ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
DSCSI\_HBA record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: PSCSI}
\subsection{Fields for class: PSCSI}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf PSCSI} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
physical SCSI device.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{run}$ &  {\tt host} & host ref &  the physical machine to which this PSCSI is connected \\
$\mathit{RO}_\mathit{run}$ &  {\tt HBA} & PSCSI\_HBA ref &  the physical SCSI host bus adapter \\
$\mathit{RO}_\mathit{run}$ &  {\tt physical\_host} & int & the physical host number \\
$\mathit{RO}_\mathit{run}$ &  {\tt physical\_channel} & int & the physical channel number \\
$\mathit{RO}_\mathit{run}$ &  {\tt physical\_target} & int & the physical target number \\
$\mathit{RO}_\mathit{run}$ &  {\tt physical\_lun} & int & the physical logical unit number \\
$\mathit{RO}_\mathit{run}$ &  {\tt physical\_HCTL} & string & the physical HCTL \\
$\mathit{RO}_\mathit{run}$ &  {\tt vendor\_name} & string & the vendor name \\
$\mathit{RO}_\mathit{run}$ &  {\tt model} & string & the model \\
$\mathit{RO}_\mathit{run}$ &  {\tt type\_id} & int & the SCSI type ID \\
$\mathit{RO}_\mathit{run}$ &  {\tt type} & string &  the SCSI type \\
$\mathit{RO}_\mathit{run}$ &  {\tt dev\_name} & string & the SCSI device name (e.g. sda or st0) \\
$\mathit{RO}_\mathit{run}$ &  {\tt sg\_name} & string & the SCSI generic device name (e.g. sg0) \\
$\mathit{RO}_\mathit{run}$ &  {\tt revision} & string & the revision \\
$\mathit{RO}_\mathit{run}$ &  {\tt scsi\_id} & string & the SCSI ID \\
$\mathit{RO}_\mathit{run}$ &  {\tt scsi\_level} & int & the SCSI level \\
\hline
\end{longtable}
\subsection{RPCs associated with class: PSCSI}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the PSCSIs known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((PSCSI ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(PSCSI ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_host}

{\bf Overview:} 
Get the host field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} (host ref) get_host (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
host ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_HBA}

{\bf Overview:} 
Get the HBA field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} (PSCSI_HBA ref) get_HBA (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PSCSI\_HBA ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_physical\_host}

{\bf Overview:} 
Get the physical\_host field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_physical_host (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_physical\_channel}

{\bf Overview:} 
Get the physical\_channel field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_physical_channel (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_physical\_target}

{\bf Overview:} 
Get the physical\_target field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_physical_target (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_physical\_lun}

{\bf Overview:} 
Get the physical\_lun field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_physical_lun (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_physical\_HCTL}

{\bf Overview:} 
Get the physical\_HCTL field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_physical_HCTL (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_vendor\_name}

{\bf Overview:} 
Get the vendor\_name field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_vendor_name (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_model}

{\bf Overview:} 
Get the model field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_model (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_type\_id}

{\bf Overview:} 
Get the type\_id field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_type_id (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_type}

{\bf Overview:} 
Get the type field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_type (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_dev\_name}

{\bf Overview:} 
Get the dev\_name field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_dev_name (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_sg\_name}

{\bf Overview:} 
Get the sg\_name field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_sg_name (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_revision}

{\bf Overview:} 
Get the revision field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_revision (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_scsi\_id}

{\bf Overview:} 
Get the scsi\_id field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_scsi_id (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_scsi\_level}

{\bf Overview:} 
Get the scsi\_level field of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_scsi_level (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the PSCSI instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (PSCSI ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PSCSI ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given PSCSI.

 \noindent {\bf Signature:} 
\begin{verbatim} (PSCSI record) get_record (session_id s, PSCSI ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PSCSI record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: PSCSI\_HBA}
\subsection{Fields for class: PSCSI\_HBA}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf PSCSI\_HBA} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
physical SCSI host bus adapter.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{run}$ &  {\tt host} & host ref &  the physical machine to which this PSCSI HBA is connected \\
$\mathit{RO}_\mathit{run}$ &  {\tt physical\_host} & int & the physical host number \\
$\mathit{RO}_\mathit{run}$ &  {\tt PSCSIs} & (PSCSI ref) Set & the physical SCSI devices which are connected to this PSCSI HBA \\
\hline
\end{longtable}
\subsection{RPCs associated with class: PSCSI\_HBA}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the PSCSI HBAs known to the system.

 \noindent {\bf Signature:} 
\begin{verbatim} ((PSCSI_HBA ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(PSCSI\_HBA ref) Set
}


references to all objects
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given PSCSI HBA.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, PSCSI_HBA ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI\_HBA ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_host}

{\bf Overview:} 
Get the host field of the given PSCSI HBA.

 \noindent {\bf Signature:} 
\begin{verbatim} (host ref) get_host (session_id s, PSCSI_HBA ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI\_HBA ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
host ref
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_physical\_host}

{\bf Overview:} 
Get the physical\_host field of the given PSCSI HBA.

 \noindent {\bf Signature:} 
\begin{verbatim} int get_physical_host (session_id s, PSCSI_HBA ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI\_HBA ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
int
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_PSCSIs}

{\bf Overview:} 
Get the PSCSIs field of the given PSCSI HBA.

 \noindent {\bf Signature:} 
\begin{verbatim} ((PSCSI ref) Set) get_PSCSIs (session_id s, PSCSI_HBA ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI\_HBA ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(PSCSI ref) Set
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the PSCSI HBA instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (PSCSI_HBA ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PSCSI\_HBA ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given PSCSI HBA.

 \noindent {\bf Signature:} 
\begin{verbatim} (PSCSI_HBA record) get_record (session_id s, PSCSI_HBA ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt PSCSI\_HBA ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
PSCSI\_HBA record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: user}
\subsection{Fields for class: user}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf user} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A
user of the system.}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier/object reference \\
$\mathit{RO}_\mathit{ins}$ &  {\tt short\_name} & string & short name (e.g. userid) \\
$\mathit{RW}$ &  {\tt fullname} & string & full name \\
\hline
\end{longtable}
\subsection{RPCs associated with class: user}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:} 
Get the uuid field of the given user.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_uuid (session_id s, user ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt user ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_short\_name}

{\bf Overview:} 
Get the short\_name field of the given user.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_short_name (session_id s, user ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt user ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_fullname}

{\bf Overview:} 
Get the fullname field of the given user.

 \noindent {\bf Signature:} 
\begin{verbatim} string get_fullname (session_id s, user ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt user ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_fullname}

{\bf Overview:} 
Set the fullname field of the given user.

 \noindent {\bf Signature:} 
\begin{verbatim} void set_fullname (session_id s, user ref self, string value)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt user ref } & self & reference to the object \\ \hline 

{\tt string } & value & New value to set \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~create}

{\bf Overview:} 
Create a new user instance, and return its handle.

 \noindent {\bf Signature:} 
\begin{verbatim} (user ref) create (session_id s, user record args)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt user record } & args & All constructor arguments \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
user ref
}


reference to the newly created object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~destroy}

{\bf Overview:} 
Destroy the specified user instance.

 \noindent {\bf Signature:} 
\begin{verbatim} void destroy (session_id s, user ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt user ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the user instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (user ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
user ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given user.

 \noindent {\bf Signature:} 
\begin{verbatim} (user record) get_record (session_id s, user ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt user ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
user record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

\vspace{1cm}
\newpage
\section{Class: XSPolicy}
\subsection{Fields for class: XSPolicy}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf XSPolicy} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em A Xen Security Policy}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string  & unique identifier / object reference \\
$\mathit{RW}$              &  {\tt repr} & string  & representation of policy, i.e., XML \\
$\mathit{RO}_\mathit{run}$ &  {\tt type} & xs\_type & type of the policy \\
$\mathit{RO}_\mathit{run}$ & {\tt flags} & xs\_instantiationflags & policy
status flags \\
\hline
\end{longtable}
\subsection{Semantics of the class: XSPolicy}

The XSPolicy class is used for administering Xen Security policies. Through
this class a new policy can be uploaded to the system, loaded into the
Xen hypervisor for enforcement and be set as the policy that the
system is automatically loading when the machine is started.

This class returns information about the currently administered policy,
including a reference to the policy. This reference can then be used with
policy-specific classes, i.e., the ACMPolicy class, to allow retrieval of
information or changes to be made to a particular policy.

\subsection{Structure and datatypes of class: XSPolicy}

Format of the security label:

A security label consist of the three different parts {\it policy type},
{\it policy name} and {\it label} separated with colons. To specify
the virtual machine label for an ACM-type policy {\it xm-test}, the
security label string would be {\it ACM:xm-test:blue}, where blue
denotes the virtual machine's label. The format of resource labels is
the same.\\[0.5cm]
The following flags are used by this class:

\begin{longtable}{|l|l|l|}
\hline
{\tt xs\_type} & value & meaning \\
\hline
\hspace{0.5cm}{\tt XS\_POLICY\_ACM} & (1 $<<$ 0) & ACM-type policy \\
\hline
\end{longtable}

\begin{longtable}{|l|l|l|}
\hline
{\tt xs\_instantiationflags} & value & meaning \\
\hline
\hspace{0.5cm}{\tt XS\_INST\_NONE} & 0 & do nothing \\
\hspace{0.5cm}{\tt XS\_INST\_BOOT} & (1 $<<$ 0) & make system boot with this policy \\
\hspace{0.5cm}{\tt XS\_INST\_LOAD} & (1 $<<$ 1) & load policy immediately \\
\hline
\end{longtable}

\begin{longtable}{|l|l|l|}
\hline
{\tt xs\_policystate} & type & meaning \\
\hline
\hspace{0.5cm}{\tt xserr} & int & Error code from operation (if applicable) \\
\hspace{0.5cm}{\tt xs\_ref}  & XSPolicy ref & reference to the XS policy as returned by the API \\
\hspace{0.5cm}{\tt repr} & string & representation of the policy, i.e., XML \\
\hspace{0.5cm}{\tt type} & xs\_type & the type of the policy \\
\hspace{0.5cm}{\tt flags } & xs\_instantiationflags  & instantiation flags of the policy \\
\hspace{0.5cm}{\tt version} & string & version of the policy \\
\hspace{0.5cm}{\tt errors} & string & Base64-encoded sequence of integer tuples consisting \\
& & of (error code, detail); will be returned as part  \\
& & of the xs\_setpolicy function. \\
\hline
\end{longtable}

\subsection{Additional RPCs associated with class: XSPolicy}
\subsubsection{RPC name:~get\_xstype}

{\bf Overview:}
Return the Xen Security Policy types supported by this system

 \noindent {\bf Signature:}
\begin{verbatim} xs_type get_xstype (session_id s)\end{verbatim}

 \noindent {\bf Return Type:}
{\tt
xs\_type
}

flags representing the supported Xen security policy types
 \vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_xspolicy}

{\bf Overview:}
Set the current XSPolicy. This function can also be be used for updating of
an existing policy whose name must be equivalent to the one of the
currently running policy.

\noindent {\bf Signature:}
\begin{verbatim} xs_policystate set_xspolicy (session_id s, xs_type type, string repr,
xs_instantiationflags flags, bool overwrite)\end{verbatim}

\noindent{\bf Arguments:}

\vspace{0.3cm}

\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt xs\_type } & type & the type of policy \\ \hline
{\tt string} & repr & representation of the policy, i.e., XML \\ \hline
{\tt xs\_instantiationflags}    & flags & flags for the setting of the policy \\ \hline
{\tt bool}   & overwrite & whether to overwrite an existing policy \\ \hline

\end{tabular}

\vspace{0.3cm}


 \noindent {\bf Return Type:}
{\tt
xs\_policystate
}


State information about the policy. In case an error occurred, the 'xs\_err'
field contains the error code. The 'errors' may contain further information
about the error.
 \vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~reset\_xspolicy}

{\bf Overview:}
Attempt to reset the system's policy by installing the default policy.
Since this function is implemented as an update to the current policy, it
underlies the same restrictions. This function may fail if for example
other domains than Domain-0 are running and use a different label than
Domain-0

\noindent {\bf Signature:}
\begin{verbatim} xs_policystate reset_xspolicy (session_id s, xs_type type)
\end{verbatim}

\noindent{\bf Arguments:}

\vspace{0.3cm}

\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt xs\_type } & type & the type of policy \\ \hline

\end{tabular}

\vspace{0.3cm}


 \noindent {\bf Return Type:}
{\tt
xs\_policystate
}


State information about the policy. In case an error occurred, the 'xs\_err'
field contains the error code. The 'errors' may contain further information
about the error.
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_xspolicy}

{\bf Overview:}
Get information regarding the currently set Xen Security Policy

 \noindent {\bf Signature:}
\begin{verbatim} xs_policystate get_xspolicy (session_id s)\end{verbatim}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
xs\_policystate
}


Policy state information.
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~rm\_xsbootpolicy}

{\bf Overview:}
Remove any policy from the default boot configuration.

 \noindent {\bf Signature:}
\begin{verbatim} void rm_xsbootpolicy (session_id s)\end{verbatim}

\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt SECURITY\_ERROR}

\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_labeled\_resources}

{\bf Overview:}
Get a list of resources that have been labeled.

 \noindent {\bf Signature:}
\begin{verbatim} ((string -> string) Map) get_labeled_resources (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
(string $\rightarrow$ string) Map
}


A map of resources with their labels.
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~set\_resource\_label}

{\bf Overview:}
Label the given resource with the given label. An empty label removes any label
from the resource.

 \noindent {\bf Signature:}
\begin{verbatim} void set_resource_label (session_id s, string resource, string
label, string old_label)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & resource & resource to label \\ \hline
{\tt string } & label & label for the resource \\ \hline
{\tt string } & old\_label & Optional label value that the security label \\
& & must currently have for the change to succeed. \\ \hline

\end{tabular}

\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt SECURITY\_ERROR}

\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_resource\_label}

{\bf Overview:}
Get the label of the given resource.

 \noindent {\bf Signature:}
\begin{verbatim} string get_resource_label (session_id s, string resource)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & resource & resource to label \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
string
}


The label of the given resource.
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~can\_run}

{\bf Overview:}
Check whether a VM with the given security label could run on the system.

 \noindent {\bf Signature:}
\begin{verbatim} int can_run (session_id s, string security_label)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & security\_label & reference to the object \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
int
}


Error code indicating whether a VM with the given security label could run.
If zero, it can run.

\vspace{0.3cm}

\noindent{\bf Possible Error Codes:} {\tt SECURITY\_ERROR}

\subsubsection{RPC name:~get\_all}

{\bf Overview:}
Return a list of all the XSPolicies known to the system.

 \noindent {\bf Signature:}
\begin{verbatim} ((XSPolicy ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
(XSPolicy ref) Set
}


A list of all the IDs of all the XSPolicies
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:}
Get the uuid field of the given XSPolicy.

 \noindent {\bf Signature:}
\begin{verbatim} string get_uuid (session_id s, XSPolicy ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt XSPolicy ref } & self & reference to the object \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:}
Get a record of the referenced XSPolicy.

 \noindent {\bf Signature:}
\begin{verbatim} (XSPolicy record) get_record (session_id s, xs_ref xspolicy)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt xs ref } & self & reference to the object \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
XSPolicy record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\newpage
\section{Class: ACMPolicy}
\subsection{Fields for class: ACMPolicy}
\begin{longtable}{|lllp{0.38\textwidth}|}
\hline
\multicolumn{1}{|l}{Name} & \multicolumn{3}{l|}{\bf ACMPolicy} \\
\multicolumn{1}{|l}{Description} & \multicolumn{3}{l|}{\parbox{11cm}{\em An ACM Security Policy}} \\
\hline
Quals & Field & Type & Description \\
\hline
$\mathit{RO}_\mathit{run}$ &  {\tt uuid} & string & unique identifier / object reference \\
$\mathit{RW}$              &  {\tt repr} & string & representation of policy, in XML \\
$\mathit{RO}_\mathit{run}$ &  {\tt type} & xs\_type & type of the policy \\
$\mathit{RO}_\mathit{run}$ & {\tt flags} & xs\_instantiationflags & policy
status flags \\
\hline
\end{longtable}

\subsection{Structure and datatypes of class: ACMPolicy}

\vspace{0.5cm}
The following data structures are used:

\begin{longtable}{|l|l|l|}
\hline
{\tt RIP acm\_policyheader} & type & meaning \\
\hline
\hspace{0.5cm}{\tt policyname}   & string & name of the policy \\
\hspace{0.5cm}{\tt policyurl }   & string & URL of the policy \\
\hspace{0.5cm}{\tt date}         & string & data of the policy \\
\hspace{0.5cm}{\tt reference}    & string & reference of the policy \\
\hspace{0.5cm}{\tt namespaceurl} & string & namespaceurl of the policy \\
\hspace{0.5cm}{\tt version}      & string & version of the policy \\
\hline
\end{longtable}

\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_header}

{\bf Overview:}
Get the referenced policy's header information.

 \noindent {\bf Signature:}
\begin{verbatim} acm_policyheader get_header (session_id s, xs ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt xs ref } & self & reference to the object \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
acm\_policyheader
}


The policy's header information.
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_xml}

{\bf Overview:}
Get the XML representation of the given policy.

 \noindent {\bf Signature:}
\begin{verbatim} string get_XML (session_id s, xs ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt xs ref } & self & reference to the object \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
string
}


XML representation of the referenced policy
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_map}

{\bf Overview:}
Get the mapping information of the given policy.

 \noindent {\bf Signature:}
\begin{verbatim} string get_map (session_id s, xs ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt xs ref } & self & reference to the object \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
string
}


Mapping information of the referenced policy.
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_binary}

{\bf Overview:}
Get the binary policy representation of the referenced policy.

 \noindent {\bf Signature:}
\begin{verbatim} string get_binary (session_id s, xs ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt xs ref } & self & reference to the object \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
string
}


Base64-encoded representation of the binary policy.
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_enforced\_binary}

{\bf Overview:}
Get the binary policy representation of the currently enforced ACM policy.
In case the default policy is loaded in the hypervisor, a policy may be
managed by xend that is not yet loaded into the hypervisor.

 \noindent {\bf Signature:}
\begin{verbatim} string get_enforced_binary (session_id s, xs ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt xs ref } & self & reference to the object \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
string
}


Base64-encoded representation of the binary policy.
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_VM\_ssidref}

{\bf Overview:}
Get the ACM ssidref of the given virtual machine.

 \noindent {\bf Signature:}
\begin{verbatim} string get_VM_ssidref (session_id s, vm ref vm)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt vm ref } & vm & reference to a valid VM \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
int
}


The ssidref of the given virtual machine.

\vspace{0.3cm}

\noindent{\bf Possible Error Codes:}
  {\tt HANDLE\_INVALID, VM\_BAD\_POWER\_STATE, SECURITY\_ERROR}

\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_all}

{\bf Overview:}
Return a list of all the ACMPolicies known to the system.

 \noindent {\bf Signature:}
\begin{verbatim} ((ACMPolicy ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
(ACMPolicy ref) Set
}


A list of all the IDs of all the ACMPolicies
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_uuid}

{\bf Overview:}
Get the uuid field of the given ACMPolicy.

 \noindent {\bf Signature:}
\begin{verbatim} string get_uuid (session_id s, ACMPolicy ref self)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt ACMPolicy ref } & self & reference to the object \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
string
}


value of the field
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:}
Get a record of the referenced ACMPolicy.

 \noindent {\bf Signature:}
\begin{verbatim} (XSPolicy record) get_record (session_id s, xs_ref xspolicy)\end{verbatim}


\noindent{\bf Arguments:}


\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt xs ref } & self & reference to the object \\ \hline

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:}
{\tt
XSPolicy record
}


all fields from the object

\newpage
\section{Class: debug}
\subsection{Fields for class: debug}
{\bf Class debug has no fields.}
\subsection{RPCs associated with class: debug}
\subsubsection{RPC name:~get\_all}

{\bf Overview:} 
Return a list of all the debug records known to the system

 \noindent {\bf Signature:} 
\begin{verbatim} ((debug ref) Set) get_all (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
(debug ref) Set
}


A list of all the IDs of all the debug records
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~return\_failure}

{\bf Overview:} 
Return an API 'successful' failure.

 \noindent {\bf Signature:} 
\begin{verbatim} void return_failure (session_id s)\end{verbatim}


\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~create}

{\bf Overview:} 
Create a new debug instance, and return its handle.

 \noindent {\bf Signature:} 
\begin{verbatim} (debug ref) create (session_id s, debug record args)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt debug record } & args & All constructor arguments \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
debug ref
}


reference to the newly created object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~destroy}

{\bf Overview:} 
Destroy the specified debug instance.

 \noindent {\bf Signature:} 
\begin{verbatim} void destroy (session_id s, debug ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt debug ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
void
}



\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_by\_uuid}

{\bf Overview:} 
Get a reference to the debug instance with the specified UUID.

 \noindent {\bf Signature:} 
\begin{verbatim} (debug ref) get_by_uuid (session_id s, string uuid)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt string } & uuid & UUID of object to return \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
debug ref
}


reference to the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
\subsubsection{RPC name:~get\_record}

{\bf Overview:} 
Get a record containing the current state of the given debug.

 \noindent {\bf Signature:} 
\begin{verbatim} (debug record) get_record (session_id s, debug ref self)\end{verbatim}


\noindent{\bf Arguments:}

 
\vspace{0.3cm}
\begin{tabular}{|c|c|p{7cm}|}
 \hline
{\bf type} & {\bf name} & {\bf description} \\ \hline
{\tt debug ref } & self & reference to the object \\ \hline 

\end{tabular}

\vspace{0.3cm}

 \noindent {\bf Return Type:} 
{\tt 
debug record
}


all fields from the object
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}

