Subsections of XenAPI

XenAPI Basics

This document contains a description of the Xen Management API - an interface for remotely configuring and controlling virtualised guests running on a Xen-enabled host.

The API is presented here as a set of Remote Procedure Calls (RPCs). There are two supported wire formats, one based upon XML-RPC and one based upon JSON-RPC (v1.0 and v2.0 are both recognized). No specific language bindings are prescribed, although examples are given in the Python programming language.

Although we adopt some terminology from object-oriented programming, future client language bindings may or may not be object-oriented. The API reference uses the terminology classes and objects. For our purposes a class is simply a hierarchical namespace; an object is an instance of a class with its fields set to specific values. Objects are persistent and exist on the server-side. Clients may obtain opaque references to these server-side objects and then access their fields via get/set RPCs.

For each class we specify a list of fields along with their types and qualifiers. A qualifier is one of:

  • RO/runtime: the field is Read Only. Furthermore, its value is automatically computed at runtime. For example, current CPU load and disk IO throughput.

  • RO/constructor: the field must be manually set when a new object is created, but is then Read Only for the duration of the object’s life. For example, the maximum memory addressable by a guest is set before the guest boots.

  • RW: the field is Read/Write. For example, the name of a VM.

Types

The following types are used to specify methods and fields in the API Reference:

  • string: Text strings.
  • int: 64-bit integers.
  • float: IEEE double-precision floating-point numbers.
  • bool: Boolean.
  • datetime: Date and timestamp.
  • c ref: Reference to an object of class c.
  • t set: Arbitrary-length set of values of type t.
  • (k -> v) map: Mapping from values of type k to values of type v.
  • e enum: Enumeration type with name e. Enums are defined in the API reference together with classes that use them.

Note that there are a number of cases where refs are doubly linked. For example, a VM has a field called VIFs of type VIF ref set; this field lists the network interfaces attached to a particular VM. Similarly, the VIF class has a field called VM of type VM ref which references the VM to which the interface is connected. These two fields are bound together, in the sense that creating a new VIF causes the VIFs field of the corresponding VM object to be updated automatically.

The API reference lists explicitly the fields that are bound together in this way. It also contains a diagram that shows relationships between classes. In this diagram an edge signifies the existence of a pair of fields that are bound together, using standard crows-foot notation to signify the type of relationship (e.g. one-many, many-many).

RPCs associated with fields

Each field, f, has an RPC accessor associated with it that returns f’s value:

  • get_f (r): takes a ref, r that refers to an object and returns the value of f.

Each field, f, with qualifier RW and whose outermost type is set has the following additional RPCs associated with it:

  • add_f(r, v): adds a new element v to the set. Note that sets cannot contain duplicate values, hence this operation has no action in the case that v is already in the set.

  • remove_f(r, v): removes element v from the set.

Each field, f, with qualifier RW and whose outermost type is map has the following additional RPCs associated with it:

  • add_to_f(r, k, v): adds new pair k -> v to the mapping stored in f in object r. Attempting to add a new pair for duplicate key, k, fails with a MAP_DUPLICATE_KEY error.

  • remove_from_f(r, k): removes the pair with key k from the mapping stored in f in object r.

Each field whose outermost type is neither set nor map, but whose qualifier is RW has an RPC accessor associated with it that sets its value:

  • set_f(r, v): sets the field f on object r to value v.

RPCs associated with classes

  • Most classes have a constructor RPC named create that takes as parameters all fields marked RW and RO/constructor. The result of this RPC is that a new persistent object is created on the server-side with the specified field values.

  • Each class has a get_by_uuid(uuid) RPC that returns the object of that class that has the specified uuid.

  • Each class that has a name_label field has a get_by_name_label(name_label) RPC that returns a set of objects of that class that have the specified name_label.

  • Most classes have a destroy(r) RPC that explicitly deletes the persistent object specified by r from the system. This is a non-cascading delete - if the object being removed is referenced by another object then the destroy call will fail.

Apart from the RPCs enumerated above, most classes have additional RPCs associated with them. For example, the VM class has RPCs for cloning, suspending, starting etc. Such additional RPCs are described explicitly in the API reference.

Wire Protocol

API calls are sent over a network to a Xen-enabled host using an RPC protocol. Here we describe how the higher-level types used in our API Reference are mapped to primitive RPC types, covering the two supported wire formats XML-RPC and JSON-RPC.

XML-RPC Protocol

We specify the signatures of API functions in the following style:

(VM ref set)  VM.get_all()

This specifies that the function with name VM.get_all takes no parameters and returns a set of VM ref. These types are mapped onto XML-RPC types in a straight-forward manner:

  • the types float, bool, datetime, and string map directly to the XML-RPC <double>, <boolean>, <dateTime.iso8601>, and <string> elements.

  • all ref types are opaque references, encoded as the XML-RPC’s <string> type. Users of the API should not make assumptions about the concrete form of these strings and should not expect them to remain valid after the client’s session with the server has terminated.

  • fields named uuid of type string are mapped to the XML-RPC <string> type. The string itself is the OSF DCE UUID presentation format (as output by uuidgen).

  • int is assumed to be 64-bit in our API and is encoded as a string of decimal digits (rather than using XML-RPC’s built-in 32-bit <i4> type).

  • values of enum types are encoded as strings. For example, the value destroy of enum on_normal_exit, would be conveyed as:

    <value><string>destroy</string></value>
  • for all our types, t, our type t set simply maps to XML-RPC’s <array> type, so, for example, a value of type string set would be transmitted like this:
    <array>
      <data>
        <value><string>CX8</string></value>
        <value><string>PSE36</string></value>
        <value><string>FPU</string></value>
      </data>
    </array>
  • for types k and v, our type (k -> v) map maps onto an XML-RPC <struct>, with the key as the name of the struct. Note that the (k -> v) map type is only valid when k is a string, ref, or int, and in each case the keys of the maps are stringified as above. For example, the (string -> float) map containing the mappings Mike -> 2.3 and John -> 1.2 would be represented as:
    <value>
      <struct>
        <member>
          <name>Mike</name>
          <value><double>2.3</double></value>
        </member>
        <member>
          <name>John</name>
          <value><double>1.2</double></value>
        </member>
      </struct>
    </value>
  • our void type is transmitted as an empty string.

XML-RPC Return Values and Status Codes

The return value of an RPC call is an XML-RPC <struct>.

  • The first element of the struct is named Status; it contains a string value indicating whether the result of the call was a Success or a Failure.

If the Status is Success then the struct contains a second element named Value:

  • The element of the struct named Value contains the function’s return value.

If the Status is Failure then the struct contains a second element named ErrorDescription:

  • The element of the struct named ErrorDescription contains an array of string values. The first element of the array is an error code; the rest of the elements are strings representing error parameters relating to that code.

For example, an XML-RPC return value from the host.get_resident_VMs function may look like this:

    <struct>
       <member>
         <name>Status</name>
         <value>Success</value>
       </member>
       <member>
          <name>Value</name>
          <value>
            <array>
               <data>
                 <value>81547a35-205c-a551-c577-00b982c5fe00</value>
                 <value>61c85a22-05da-b8a2-2e55-06b0847da503</value>
                 <value>1d401ec4-3c17-35a6-fc79-cee6bd9811fe</value>
               </data>
            </array>
         </value>
       </member>
    </struct>

JSON-RPC Protocol

We specify the signatures of API functions in the following style:

(VM ref set)  VM.get_all()

This specifies that the function with name VM.get_all takes no parameters and returns a set of VM ref. These types are mapped onto JSON-RPC types in the following manner:

  • the types float and bool map directly to the JSON types number and boolean, while datetime and string are represented as the JSON string type.

  • all ref types are opaque references, encoded as the JSON string type. Users of the API should not make assumptions about the concrete form of these strings and should not expect them to remain valid after the client’s session with the server has terminated.

  • fields named uuid of type string are mapped to the JSON string type. The string itself is the OSF DCE UUID presentation format (as output by uuidgen).

  • int is assumed to be 64-bit in our API and is encoded as a JSON number without decimal point or exponent, preserved as a string.

  • values of enum types are encoded as the JSON string type. For example, the value destroy of enum on_normal_exit, would be conveyed as:

  "destroy"
  • for all our types, t, our type t set simply maps to the JSON array type, so, for example, a value of type string set would be transmitted like this:
  [ "CX8", "PSE36", "FPU" ]
  • for types k and v, our type (k -> v) map maps onto a JSON object which contains members with name k and value v. Note that the (k -> v) map type is only valid when k is a string, ref, or int, and in each case the keys of the maps are stringified as above. For example, the (string -> float) map containing the mappings Mike -> 2.3 and John -> 1.2 would be represented as:
  {
    "Mike": 2.3,
    "John": 1.2
  }
  • our void type is transmitted as an empty string.

Both versions 1.0 and 2.0 of the JSON-RPC wire format are recognised and, depending on your client library, you can use either of them.

JSON-RPC v1.0

JSON-RPC v1.0 Requests

An API call is represented by sending a single JSON object to the server, which contains the members method, params, and id.

  • method: A JSON string containing the name of the function to be invoked.

  • params: A JSON array of values, which represents the parameters of the function to be invoked.

  • id: A JSON string or integer representing the call id. Note that, diverging from the JSON-RPC v1.0 specification the API does not accept notification requests (requests without responses), i.e. the id cannot be null.

For example, the body of a JSON-RPC v1.0 request to retrieve the resident VMs of a host may look like this:

  {
    "method": "host.get_resident_VMs",
    "params": [
      "OpaqueRef:74f1a19cd-b660-41e3-a163-10f03e0eae67",
      "OpaqueRef:08c34fc9-f418-4f09-8274-b9cb25cd8550"
    ],
    "id": "xyz"
  }

In the above example, the first element of the params array is the reference of the open session to the host, while the second is the host reference.

JSON-RPC v1.0 Return Values

The return value of a JSON-RPC v1.0 call is a single JSON object containing the members result, error, and id.

  • result: If the call is successful, it is a JSON value (string, array etc.) representing the return value of the invoked function. If an error has occurred, it is null.

  • error: If the call is successful, it is null. If the call has failed, it a JSON 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.

  • id: The call id. It is a JSON string or integer and it is the same id as the request it is responding to.

For example, a JSON-RPC v1.0 return value from the host.get_resident_VMs function may look like this:

  {
    "result": [
        "OpaqueRef:604f51e7-630f-4412-83fa-b11c6cf008ab",
        "OpaqueRef:670d08f5-cbeb-4336-8420-ccd56390a65f"
    ],
    "error": null,
    "id": "xyz"
  }

while the return value of the same call made on a logged out session may look like this:

  {
    "result": null,
    "error": [
        "SESSION_INVALID",
        "OpaqueRef:93f1a23cd-a640-41e3-b163-10f86e0eae67"
    ],
    "id": "xyz"
  }

JSON-RPC v2.0

JSON-RPC v2.0 Requests

An API call is represented by sending a single JSON object to the server, which contains the members jsonrpc, method, params, and id.

  • jsonrpc: A JSON string specifying the version of the JSON-RPC protocol. It is exactly “2.0”.

  • method: A JSON string containing the name of the function to be invoked.

  • params: A JSON array of values, which represents the parameters of the function to be invoked. Although the JSON-RPC v2.0 specification allows this member to be omitted, in practice all API calls accept at least one parameter.

  • id: A JSON string or integer representing the call id. Note that, diverging from the JSON-RPC v2.0 specification it cannot be null. Neither can it be omitted because the API does not accept notification requests (requests without responses).

For example, the body of a JSON-RPC v2.0 request to retrieve the VMs resident on a host may look like this:

  {
    "jsonrpc": "2.0",
    "method": "host.get_resident_VMs",
    "params": [
      "OpaqueRef:c90cd28f-37ec-4dbf-88e6-f697ccb28b39",
      "OpaqueRef:08c34fc9-f418-4f09-8274-b9cb25cd8550"
    ],
    "id": 3
 }

As before, the first element of the parameter array is the reference of the open session to the host, while the second is the host reference.

JSON-RPC v2.0 Return Values

The return value of a JSON-RPC v2.0 call is a single JSON object containing the members jsonrpc, either result or error depending on the outcome of the call, and id.

  • jsonrpc: A JSON string specifying the version of the JSON-RPC protocol. It is exactly “2.0”.

  • result: If the call is successful, it is a JSON value (string, array etc.) representing the return value of the invoked function. If an error has occurred, it does not exist.

  • error: If the call is successful, it does not exist. If the call has failed, it is a single structured JSON object (see below).

  • id: The call id. It is a JSON string or integer and it is the same id as the request it is responding to.

The error object contains the members code, message, and data.

  • code: The API does not make use of this member and only retains it for compliance with the JSON-RPC v2.0 specification. It is a JSON integer which has a non-zero value.

  • message: A JSON string representing an API error code.

  • data: A JSON array of string values representing error parameters relating to the aforementioned API error code.

For example, a JSON-RPC v2.0 return value from the host.get_resident_VMs function may look like this:

  {
    "jsonrpc": "2.0",
    "result": [
        "OpaqueRef:604f51e7-630f-4412-83fa-b11c6cf008ab",
        "OpaqueRef:670d08f5-cbeb-4336-8420-ccd56390a65f"
    ],
    "id": 3
  }

while the return value of the same call made on a logged out session may look like this:

  {
    "jsonrpc": "2.0",
    "error": {
        "code": 1,
        "message": "SESSION_INVALID",
        "data": [
            "OpaqueRef:c90cd28f-37ec-4dbf-88e6-f697ccb28b39"
        ]
    },
    "id": 3
  }

Errors

When a low-level transport error occurs, or a request is malformed at the HTTP or RPC level, the server may send an HTTP 500 error response, or the client may simulate the same. The client must be prepared to handle these errors, though they may be treated as fatal.

For example, the following malformed request when using the XML-RPC protocol:

$curl -D - -X POST https://server -H 'Content-Type: application/xml' \
  -d '<?xml version="1.0"?>
  <methodCall>
    <methodName>session.logout</methodName>
  </methodCall>'

results to the following response:

HTTP/1.1 500 Internal Error
content-length: 297
content-type:text/html
connection:close
cache-control:no-cache, no-store

<html><body><h1>HTTP 500 internal server error</h1>An unexpected error occurred;
 please wait a while and try again. If the problem persists, please contact your
 support representative.<h1> Additional information </h1>Xmlrpc.Parse_error(&quo
t;close_tag&quot;, &quot;open_tag&quot;, _)</body></html>

When using the JSON-RPC protocol:

$curl -D - -X POST https://server/jsonrpc -H 'Content-Type: application/json' \
  -d '{
      "jsonrpc": "2.0",
      "method": "session.login_with_password",
      "id": 0
  }'

the response is:

HTTP/1.1 500 Internal Error
content-length: 308
content-type:text/html
connection:close
cache-control:no-cache, no-store

<html><body><h1>HTTP 500 internal server error</h1>An unexpected error occurred;
 please wait a while and try again. If the problem persists, please contact your
 support representative.<h1> Additional information </h1>Jsonrpc.Malformed_metho
d_request(&quot;{jsonrpc=...,method=...,id=...}&quot;)</body></html>

All other failures are reported with a more structured error response, to allow better automatic response to failures, proper internationalization of any error message, and easier debugging.

On the wire, these are transmitted like this when using the XML-RPC protocol:

<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>eSpiel Inc.</value>
                    <value>eSpiel Incorporated</value>
                </data>
            </array>
        </value>
    </member>
</struct>

Note that 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 Customer -> eSpiel Incorporated to a Map, but it already contains the mapping Customer -> eSpiel Inc., hence the request has failed.

When using the JSON-RPC protocol v2.0, the above error is transmitted as:

{
    "jsonrpc": "2.0",
    "error": {
        "code": 1,
        "message": "MAP_DUPLICATE_KEY",
        "data": [
            "Customer",
            "eSpiel Inc.",
            "eSpiel Incorporated"
        ]
    },
    "id": 3
}

Finally, when using the JSON-RPC protocol v1.0:

{
    "result": null,
    "error": [
        "MAP_DUPLICATE_KEY",
        "Customer",
        "eSpiel Inc.",
        "eSpiel Incorporated"
    ],
    "id": "xyz"
}

Each possible error code is documented in the last section of the API reference.

Note on References vs UUIDs

References are opaque types - encoded as XML-RPC and JSON-RPC strings on the wire - understood only by the particular server which generated them. Servers are free to choose any concrete representation they find convenient; clients should not make any assumptions or attempt to parse the string contents. References are not guaranteed to be permanent identifiers for objects; clients should not assume that references generated during one session are valid for any future session. References do not allow objects to be compared for equality. Two references to the same object are not guaranteed to be textually identical.

UUIDs are intended to be permanent identifiers for objects. They are guaranteed to be in the OSF DCE UUID presentation format (as output by uuidgen). Clients may store UUIDs on disk and use them to look up objects in subsequent sessions with the server. Clients may also test equality on objects by comparing UUID strings.

The API provides mechanisms for translating between UUIDs and opaque references. Each class that contains a UUID field provides:

  • A get_by_uuid method that takes a UUID and returns an opaque reference to the server-side object that has that UUID;

  • A get_uuid function (a regular “field getter” RPC) that takes an opaque reference and returns the UUID of the server-side object that is referenced by it.

Making RPC Calls

Transport Layer

The following transport layers are currently supported:

  • HTTP/HTTPS for remote administration
  • HTTP over Unix domain sockets for local administration

Session Layer

The RPC interface is session-based; before you can make arbitrary RPC calls you must login and initiate a session. For example:

   (session ref) session.login_with_password(string uname, string pwd,
                   string version, string originator)

where uname and password refer to your username and password, as defined by the Xen administrator, while version and originator are optional. The session ref returned by session.login_with_password is passed to subsequent RPC calls as an authentication token. Note that a session reference obtained by a login request to the XML-RPC backend can be used in subsequent requests to the JSON-RPC backend, and vice versa.

A session can be terminated with the session.logout function:

   void  session.logout(session ref session_id)

Synchronous and Asynchronous Invocation

Each method call (apart from methods on the Session and Task objects and “getters” and “setters” derived from fields) can be made either synchronously or asynchronously. A synchronous RPC call blocks until the return value is received; the return value of a synchronous RPC call is exactly as specified above.

Only synchronous API calls are listed explicitly in this document. All their asynchronous counterparts are in the special Async namespace. For example, the synchronous call VM.clone(...) has an asynchronous counterpart, Async.VM.clone(...), that is non-blocking.

Instead of returning its result directly, an asynchronous RPC call returns an identifier of type task ref which is subsequently used to track the status of a running asynchronous RPC.

Note that an asynchronous call may fail immediately, before a task has even been created. When using the XML-RPC wire protocol, this eventuality is represented by wrapping the returned task ref in an XML-RPC struct with a Status, ErrorDescription, and Value fields, exactly as specified above; the task ref is provided in the Value field if Status is set to Success. When using the JSON-RPC protocol, the task ref is wrapped in a response JSON object as specified above and it is provided by the value of the result member of a successful call.

The RPC call

    (task ref set)  Task.get_all(session ref session_id)

returns a set of all task identifiers known to the system. The status (including any returned result and error codes) of these can then be queried by accessing the fields of the Task object in the usual way. Note that, in order to get a consistent snapshot of a task’s state, it is advisable to call the get_record function.

Example interactive session

This section describes how an interactive session might look, using python XML-RPC and JSON-RPC client libraries.

First, initialise python:

$ python3
>>>

Using the XML-RPC Protocol

Import the library xmlrpc.client and create a python object referencing the remote server as shown below:

>>> import xmlrpc.client
>>> xen = xmlrpc.client.ServerProxy("https://localhost:443")

Note that you may need to disable SSL certificate validation to establish the connection, this can be done as follows:

>>> import ssl
>>> ctx = ssl._create_unverified_context()
>>> xen = xmlrpc.client.ServerProxy("https://localhost:443", context=ctx)

Acquire a session reference by logging in with a username and password; the session reference is returned under the key Value in the resulting dictionary (error-handling omitted for brevity):

>>> session = xen.session.login_with_password("user", "passwd",
...                                           "version", "originator")['Value']

This is what the call looks like when serialized

<?xml version='1.0'?>
<methodCall>
    <methodName>session.login_with_password</methodName>
    <params>
        <param><value><string>user</string></value></param>
        <param><value><string>passwd</string></value></param>
        <param><value><string>version</string></value></param>
        <param><value><string>originator</string></value></param>
    </params>
</methodCall>

Next, the user may acquire a list of all the VMs known to the system (note the call takes the session reference as the only parameter):

>>> all_vms = xen.VM.get_all(session)['Value']
>>> all_vms
['OpaqueRef:1', 'OpaqueRef:2', 'OpaqueRef:3', 'OpaqueRef:4' ]

The VM references here have the form OpaqueRef:X (though they may not be that simple in reality) and you should treat them as opaque strings. Templates are VMs with the is_a_template field set to true. We can find the subset of template VMs using a command like the following:

>>> all_templates = filter(lambda x: xen.VM.get_is_a_template(session, x)['Value'],
                              all_vms)

Once a reference to a VM has been acquired, a lifecycle operation may be invoked:

>>> xen.VM.start(session, all_templates[0], False, False)
{'Status': 'Failure', 'ErrorDescription': ['VM_IS_TEMPLATE', 'OpaqueRef:X']}

In this case the start message has been rejected, because the VM is a template, and so an error response has been returned. These high-level errors are returned as structured data (rather than as XML-RPC faults), allowing them to be internationalized.

Rather than querying fields individually, whole records may be returned at once. To retrieve the record of a single object as a python dictionary:

>>> record = xen.VM.get_record(session, all_templates[0])['Value']
>>> record['power_state']
'Halted'
>>> record['name_label']
'Windows 10 (64-bit)'

To retrieve all the VM records in a single call:

>>> records = xen.VM.get_all_records(session)['Value']
>>> list(records.keys())
['OpaqueRef:1', 'OpaqueRef:2', 'OpaqueRef:3', 'OpaqueRef:4' ]
>>> records['OpaqueRef:1']['name_label']
'Red Hat Enterprise Linux 7'

Using the JSON-RPC Protocol

For this example we are making use of the package jsonrpcclient and the requests library due to their simplicity, although other packages can also be used.

First, import the requests and jsonrpcclient libraries:

>>> import requests
>>> import jsonrpcclient

Now we construct a utility method to make using these libraries easier:

>>> def jsonrpccall(method, params):
...     r = requests.post("https://localhost:443/jsonrpc",
...                       json=jsonrpcclient.request(method, params=params),
...                       verify=False)
...     p = jsonrpcclient.parse(r.json())
...     if isinstance(p, jsonrpcclient.Ok):
...         return p.result
...     raise Exception(p.message, p.data)

Acquire a session reference by logging in with a username and password:

>>> session = jsonrpccall("session.login_with_password",
...                       ("user", "password", "version", "originator"))

jsonrpcclient uses the JSON-RPC protocol v2.0, so this is what the serialized request looks like:

  {
    "jsonrpc": "2.0",
    "method": "session.login_with_password",
    "params": ["user", "passwd", "version", "originator"],
    "id": 0
  }

Next, the user may acquire a list of all the VMs known to the system (note the call takes the session reference as the only parameter):

>>> all_vms = jsonrpccall("VM.get_all", (session,))
>>> all_vms
['OpaqueRef:1', 'OpaqueRef:2', 'OpaqueRef:3', 'OpaqueRef:4' ]

The VM references here have the form OpaqueRef:X (though they may not be that simple in reality) and you should treat them as opaque strings. Templates are VMs with the is_a_template field set to true. We can find the subset of template VMs using a command like the following:

>>> all_templates = filter(
...     lambda x: jsonrpccall("VM.get_is_a_template", (session, x)),
...     all_vms)

Once a reference to a VM has been acquired, a lifecycle operation may be invoked:

>>> try:
...     jsonrpccall("VM.start", (session, next(all_templates), False, False))
... except Exception as e:
...     e
...
Exception('VM_IS_TEMPLATE', ['OpaqueRef:1', 'start'])

In this case the start message has been rejected because the VM is a template, hence an error response has been returned. These high-level errors are returned as structured data, allowing them to be internationalized.

Rather than querying fields individually, whole records may be returned at once. To retrieve the record of a single object as a python dictionary:

>>> record = jsonrpccall("VM.get_record", (session, next(all_templates)))
>>> record['power_state']
'Halted'
>>> record['name_label']
'Windows 10 (64-bit)'

To retrieve all the VM records in a single call:

>>> records = jsonrpccall("VM.get_all_records", (session,))
>>> records.keys()
['OpaqueRef:1', 'OpaqueRef:2', 'OpaqueRef:3', 'OpaqueRef:4' ]
>>> records['OpaqueRef:1']['name_label']
'Red Hat Enterprise Linux 7'

Overview of the XenAPI

This chapter introduces the XenAPI and its associated object model. The API has the following key features:

  • Management of all aspects of the XenServer Host. The API allows you to manage VMs, storage, networking, host configuration and pools. Performance and status metrics can also be queried from the API.

  • Persistent Object Model. The results of all side-effecting operations (e.g. object creation, deletion and parameter modifications) are persisted in a server-side database that is managed by the XenServer installation.

  • An event mechanism. Through the API, clients can register to be notified when persistent (server-side) objects are modified. This enables applications to keep track of datamodel modifications performed by concurrently executing clients.

  • Synchronous and asynchronous invocation. All API calls can be invoked synchronously (that is, block until completion); any API call that may be long-running can also be invoked asynchronously. Asynchronous calls return immediately with a reference to a task object. This task object can be queried (through the API) for progress and status information. When an asynchronously invoked operation completes, the result (or error code) is available from the task object.

  • Remotable and Cross-Platform. The client issuing the API calls does not have to be resident on the host being managed; nor does it have to be connected to the host over ssh in order to execute the API. API calls make use of the XML-RPC protocol to transmit requests and responses over the network.

  • Secure and Authenticated Access. The XML-RPC API server executing on the host accepts secure socket connections. This allows a client to execute the APIs over the https protocol. Further, all the API calls execute in the context of a login session generated through username and password validation at the server. This provides secure and authenticated access to the XenServer installation.

Getting Started with the API

We will start our tour of the API by describing the calls required to create a new VM on a XenServer installation, and take it through a start/suspend/resume/stop cycle. This is done without reference to code in any specific language; at this stage we just describe the informal sequence of RPC invocations that accomplish our “install and start” task.

Authentication: acquiring a session reference

The first step is to call Session.login_with_password(, , , ). The API is session based, so before you can make other calls you will need to authenticate with the server. Assuming the username and password are authenticated correctly, the result of this call is a session reference. Subsequent API calls take the session reference as a parameter. In this way we ensure that only API users who are suitably authorized can perform operations on a XenServer installation. You can continue to use the same session for any number of API calls. When you have finished the session, Citrix recommends that you call Session.logout(session) to clean up: see later.

Acquiring a list of templates to base a new VM installation on

The next step is to query the list of “templates” on the host. Templates are specially-marked VM objects that specify suitable default parameters for a variety of supported guest types. (If you want to see a quick enumeration of the templates on a XenServer installation for yourself then you can execute the xe template-list CLI command.) To get a list of templates from the API, we need to find the VM objects on the server that have their is_a_template field set to true. One way to do this by calling VM.get_all_records(session) where the session parameter is the reference we acquired from our Session.login_with_password call earlier. This call queries the server, returning a snapshot (taken at the time of the call) containing all the VM object references and their field values.

(Remember that at this stage we are not concerned about the particular mechanisms by which the returned object references and field values can be manipulated in any particular client language: that detail is dealt with by our language-specific API bindings and described concretely in the following chapter. For now it suffices just to assume the existence of an abstract mechanism for reading and manipulating objects and field values returned by API calls.)

Now that we have a snapshot of all the VM objects’ field values in the memory of our client application we can simply iterate through them and find the ones that have their “is_a_template” set to true. At this stage let’s assume that our example application further iterates through the template objects and remembers the reference corresponding to the one that has its “name_label” set to “Debian Etch 4.0” (one of the default Linux templates supplied with XenServer).

Installing the VM based on a template

Continuing through our example, we must now install a new VM based on the template we selected. The installation process requires 4 API calls:

  • First we must now invoke the API call VM.clone(session, t_ref, "my first VM"). This tells the server to clone the VM object referenced by t_ref in order to make a new VM object. The return value of this call is the VM reference corresponding to the newly-created VM. Let’s call this new_vm_ref.

  • Next, we need to specify the UUID of the Storage Repository where the VM’s disks will be instantiated. We have to put this in the sr attribute in the disk provisioning XML stored under the “disks” key in the other_config map of the newly-created VM. This field can be updated by calling its getter (other_config <- VM.get_other_config(session, new_vm_ref)) and then its setter (VM.set_other_config(session, new_vm_ref, other_config)) with the modified other_config map.

  • At this stage the object referred to by new_vm_ref is still a template (just like the VM object referred to by t_ref, from which it was cloned). To make new_vm_ref into a VM object we need to call VM.provision(session, new_vm_ref). When this call returns the new_vm_ref object will have had its is_a_template field set to false, indicating that new_vm_ref now refers to a regular VM ready for starting.

Note

The provision operation may take a few minutes, as it is as during this call that the template’s disk images are created. In the case of the Debian template, the newly created disks are also at this stage populated with a Debian root filesystem.

Taking the VM through a start/suspend/resume/stop cycle

Now we have an object reference representing our newly-installed VM, it is trivial to take it through a few lifecycle operations:

  • To start our VM we can just call VM.start(session, new_vm_ref)

  • After it’s running, we can suspend it by calling VM.suspend(session, new_vm_ref),

  • and then resume it by calling VM.resume(session, new_vm_ref).

  • We can call VM.shutdown(session, new_vm_ref) to shutdown the VM cleanly.

Logging out

Once an application is finished interacting with a XenServer Host it is good practice to call Session.logout(session). This invalidates the session reference (so it cannot be used in subsequent API calls) and simultaneously deallocates server-side memory used to store the session object.

Although inactive sessions will eventually timeout, the server has a hardcoded limit of 500 concurrent sessions for each username or originator. Once this limit has been reached fresh logins will evict the session objects that have been used least recently, causing their associated session references to become invalid. For successful interoperability with other applications, concurrently accessing the server, the best policy is:

  • Choose a string that identifies your application and its version.

  • Create a single session at start-of-day, using that identifying string for the originator parameter to Session.login_with_password.

  • Use this session throughout the application (note that sessions can be used across multiple separate client-server network connections) and then explicitly logout when possible.

If a poorly written client leaks sessions or otherwise exceeds the limit, then as long as the client uses an appropriate originator argument, it will be easily identifiable from the XenServer logs and XenServer will destroy the longest-idle sessions of the rogue client only; this may cause problems for that client but not for other clients. If the misbehaving client did not specify an originator, it would be harder to identify and would cause the premature destruction of sessions of any clients that also did not specify an originator

Install and start example: summary

We have seen how the API can be used to install a VM from a XenServer template and perform a number of lifecycle operations on it. You will note that the number of calls we had to make in order to affect these operations was small:

  • One call to acquire a session: Session.login_with_password()

  • One call to query the VM (and template) objects present on the XenServer installation: VM.get_all_records(). Recall that we used the information returned from this call to select a suitable template to install from.

  • Four calls to install a VM from our chosen template: VM.clone(), followed by the getter and setter of the other_config field to specify where to create the disk images of the template, and then VM.provision().

  • One call to start the resultant VM: VM.start() (and similarly other single calls to suspend, resume and shutdown accordingly)

  • And then one call to logout Session.logout()

The take-home message here is that, although the API as a whole is complex and fully featured, common tasks (such as creating and performing lifecycle operations on VMs) are very straightforward to perform, requiring only a small number of simple API calls. Keep this in mind while you study the next section which may, on first reading, appear a little daunting!

Object Model Overview

This section gives a high-level overview of the object model of the API. A more detailed description of the parameters and methods of each class outlined here can be found in the XenServer API Reference document.

We start by giving a brief outline of some of the core classes that make up the API. (Don’t worry if these definitions seem somewhat abstract in their initial presentation; the textual description in subsequent sections, and the code-sample walk through in the next Chapter will help make these concepts concrete.)

ClassDescription
VMA VM object represents a particular virtual machine instance on a XenServer Host or Resource Pool. Example methods include startsuspendpool_migrate; example parameters include power_statememory_static_max, and name_label. (In the previous section we saw how the VM class is used to represent both templates and regular VMs)
HostA host object represents a physical host in a XenServer pool. Example methods include reboot and shutdown. Example parameters include software_versionhostname, and [IP] address.
VDIA VDI object represents a Virtual Disk Image. Virtual Disk Images can be attached to VMs, in which case a block device appears inside the VM through which the bits encapsulated by the Virtual Disk Image can be read and written. Example methods of the VDI class include “resize” and “clone”. Example fields include “virtual_size” and “sharable”. (When we called VM.provision on the VM template in our previous example, some VDI objects were automatically created to represent the newly created disks, and attached to the VM object.)
SRAn SR (Storage Repository) aggregates a collection of VDIs and encapsulates the properties of physical storage on which the VDIs’ bits reside. Example parameters include type (which determines the storage-specific driver a XenServer installation uses to read/write the SR’s VDIs) and physical_utilisation; example methods include scan (which invokes the storage-specific driver to acquire a list of the VDIs contained with the SR and the properties of these VDIs) and create (which initializes a block of physical storage so it is ready to store VDIs).
NetworkA network object represents a layer-2 network that exists in the environment in which the XenServer Host instance lives. Since XenServer does not manage networks directly this is a lightweight class that serves merely to model physical and virtual network topology. VM and Host objects that are attached to a particular Network object (by virtue of VIF and PIF instances – see below) can send network packets to each other.

At this point, readers who are finding this enumeration of classes rather terse may wish to skip to the code walk-throughs of the next chapter: there are plenty of useful applications that can be written using only a subset of the classes already described! For those who wish to continue this description of classes in the abstract, read on.

On top of the classes listed above, there are 4 more that act as connectors, specifying relationships between VMs and Hosts, and Storage and Networks. The first 2 of these classes that we will consider, VBD and VIF, determine how VMs are attached to virtual disks and network objects respectively:

ClassDescription
VBDA VBD (Virtual Block Device) object represents an attachment between a VM and a VDI. When a VM is booted its VBD objects are queried to determine which disk images (VDIs) should be attached. Example methods of the VBD class include “plug” (which hot plugs a disk device into a running VM, making the specified VDI accessible therein) and “unplug” (which hot unplugs a disk device from a running guest); example fields include “device” (which determines the device name inside the guest under which the specified VDI will be made accessible).
VIFA VIF (Virtual network InterFace) object represents an attachment between a VM and a Network object. When a VM is booted its VIF objects are queried to determine which network devices should be created. Example methods of the VIF class include “plug” (which hot plugs a network device into a running VM) and “unplug” (which hot unplugs a network device from a running guest).

The second set of “connector classes” that we will consider determine how Hosts are attached to Networks and Storage.

ClassDescription
PIFA PIF (Physical InterFace) object represents an attachment between a Host and a Network object. If a host is connected to a Network (over a PIF) then packets from the specified host can be transmitted/received by the corresponding host. Example fields of the PIF class include “device” (which specifies the device name to which the PIF corresponds – e.g. eth0) and “MAC” (which specifies the MAC address of the underlying NIC that a PIF represents). Note that PIFs abstract both physical interfaces and VLANs (the latter distinguished by the existence of a positive integer in the “VLAN” field).
PBDA PBD (Physical Block Device) object represents an attachment between a Host and a SR (Storage Repository) object. Fields include “currently-attached” (which specifies whether the chunk of storage represented by the specified SR object) is currently available to the host; and “device_config” (which specifies storage-driver specific parameters that determines how the low-level storage devices are configured on the specified host – e.g. in the case of an SR rendered on an NFS filer, device_config may specify the host-name of the filer and the path on the filer in which the SR files live.).

Graphical overview of API classes for managing VMs, Hosts, Storage and Networking

The figure above presents a graphical overview of the API classes involved in managing VMs, Hosts, Storage and Networking. From this diagram, the symmetry between storage and network configuration, and also the symmetry between virtual machine and host configuration is plain to see.

Working with VIFs and VBDs

In this section we walk through a few more complex scenarios, describing informally how various tasks involving virtual storage and network devices can be accomplished using the API.

Creating disks and attaching them to VMs

Let’s start by considering how to make a new blank disk image and attach it to a running VM. We will assume that we already have ourselves a running VM, and we know its corresponding API object reference (e.g. we may have created this VM using the procedure described in the previous section, and had the server return its reference to us.) We will also assume that we have authenticated with the XenServer installation and have a corresponding session reference. Indeed in the rest of this chapter, for the sake of brevity, we will stop mentioning sessions altogether.

Creating a new blank disk image

The first step is to instantiate the disk image on physical storage. We do this by calling VDI.create(). The VDI.create call takes a number of parameters, including:

  • name_label and name_description: a human-readable name/description for the disk (e.g. for convenient display in the UI etc.). These fields can be left blank if desired.

  • SR: the object reference of the Storage Repository representing the physical storage in which the VDI’s bits will be placed.

  • read_only: setting this field to true indicates that the VDI can only be attached to VMs in a read-only fashion. (Attempting to attach a VDI with its read_only field set to true in a read/write fashion results in error.)

Invoking the VDI.create call causes the XenServer installation to create a blank disk image on physical storage, create an associated VDI object (the datamodel instance that refers to the disk image on physical storage) and return a reference to this newly created VDI object.

The way in which the disk image is represented on physical storage depends on the type of the SR in which the created VDI resides. For example, if the SR is of type “lvm” then the new disk image will be rendered as an LVM volume; if the SR is of type “nfs” then the new disk image will be a sparse VHD file created on an NFS filer. (You can query the SR type through the API using the SR.get_type() call.)

Note

Some SR types might round up the virtual-size value to make it divisible by a configured block size.

Attaching the disk image to a VM

So far we have a running VM (that we assumed the existence of at the start of this example) and a fresh VDI that we just created. Right now, these are both independent objects that exist on the XenServer Host, but there is nothing linking them together. So our next step is to create such a link, associating the VDI with our VM.

The attachment is formed by creating a new “connector” object called a VBD (Virtual Block Device). To create our VBD we invoke the VBD.create() call. The VBD.create() call takes a number of parameters including:

  • VM - the object reference of the VM to which the VDI is to be attached

  • VDI - the object reference of the VDI that is to be attached

  • mode - specifies whether the VDI is to be attached in a read-only or a read-write fashion

  • userdevice - specifies the block device inside the guest through which applications running inside the VM will be able to read/write the VDI’s bits.

  • type - specifies whether the VDI should be presented inside the VM as a regular disk or as a CD. (Note that this particular field has more meaning for Windows VMs than it does for Linux VMs, but we will not explore this level of detail in this chapter.)

Invoking VBD.create makes a VBD object on the XenServer installation and returns its object reference. However, this call in itself does not have any side-effects on the running VM (that is, if you go and look inside the running VM you will see that the block device has not been created). The fact that the VBD object exists but that the block device in the guest is not active, is reflected by the fact that the VBD object’s currently_attached field is set to false.

A VM object with 2 associated VDIs

For expository purposes, the figure above presents a graphical example that shows the relationship between VMs, VBDs, VDIs and SRs. In this instance a VM object has 2 attached VDIs: there are 2 VBD objects that form the connections between the VM object and its VDIs; and the VDIs reside within the same SR.

Hotplugging the VBD

If we rebooted the VM at this stage then, after rebooting, the block device corresponding to the VBD would appear: on boot, XenServer queries all VBDs of a VM and actively attaches each of the corresponding VDIs.

Rebooting the VM is all very well, but recall that we wanted to attach a newly created blank disk to a running VM. This can be achieved by invoking the plug method on the newly created VBD object. When the plug call returns successfully, the block device to which the VBD relates will have appeared inside the running VM – i.e. from the perspective of the running VM, the guest operating system is led to believe that a new disk device has just been hot plugged. Mirroring this fact in the managed world of the API, the currently_attached field of the VBD is set to true.

Unsurprisingly, the VBD plug method has a dual called “unplug”. Invoking the unplug method on a VBD object causes the associated block device to be hot unplugged from a running VM, setting the currently_attached field of the VBD object to false accordingly.

Creating and attaching Network Devices to VMs

The API calls involved in configuring virtual network interfaces in VMs are similar in many respects to the calls involved in configuring virtual disk devices. For this reason we will not run through a full example of how one can create network interfaces using the API object-model; instead we will use this section just to outline briefly the symmetry between virtual networking device and virtual storage device configuration.

The networking analogue of the VBD class is the VIF class. Just as a VBD is the API representation of a block device inside a VM, a VIF (Virtual network InterFace) is the API representation of a network device inside a VM. Whereas VBDs associate VM objects with VDI objects, VIFs associate VM objects with Network objects. Just like VBDs, VIFs have a currently_attached field that determines whether or not the network device (inside the guest) associated with the VIF is currently active or not. And as we saw with VBDs, at VM boot-time the VIFs of the VM are queried and a corresponding network device for each created inside the booting VM. Similarly, VIFs also have plug and unplug methods for hot plugging/unplugging network devices in/out of running VMs.

Host configuration for networking and storage

We have seen that the VBD and VIF classes are used to manage configuration of block devices and network devices (respectively) inside VMs. To manage host configuration of storage and networking there are two analogous classes: PBD (Physical Block Device) and PIF (Physical [network] InterFace).

Host storage configuration: PBDs

Let us start by considering the PBD class. A PBD_create() call takes a number of parameters including:

ParameterDescription
hostphysical machine on which the PBD is available
SRthe Storage Repository that the PBD connects to
device_configa string-to-string map that is provided to the host’s SR-backend-driver, containing the low-level parameters required to configure the physical storage device(s) on which the SR is to be realized. The specific contents of the device_config field depend on the type of the SR to which the PBD is connected. (Executing xe sm-list will show a list of possible SR types; the configuration field in this enumeration specifies the device_config parameters that each SR type expects.)

For example, imagine we have an SR object s of type “nfs” (representing a directory on an NFS filer within which VDIs are stored as VHD files); and let’s say that we want a host, h, to be able to access s. In this case we invoke PBD.create() specifying host h, SR s, and a value for the device_config parameter that is the following map:

("server", "my_nfs_server.example.com"), ("serverpath", "/scratch/mysrs/sr1")

This tells the XenServer Host that SR s is accessible on host h, and further that to access SR s, the host needs to mount the directory /scratch/mysrs/sr1 on the NFS server named my_nfs_server.example.com.

Like VBD objects, PBD objects also have a field called currently_attached. Storage repositories can be attached and detached from a given host by invoking PBD.plug and PBD.unplug methods respectively.

Host networking configuration: PIFs

Host network configuration is specified by virtue of PIF objects. If a PIF object connects a network object, n, to a host object h, then the network corresponding to n is bridged onto a physical interface (or a physical interface plus a VLAN tag) specified by the fields of the PIF object.

For example, imagine a PIF object exists connecting host h to a network n, and that device field of the PIF object is set to eth0. This means that all packets on network n are bridged to the NIC in the host corresponding to host network device eth0.

XML-RPC notes

Datetimes

The API deviates from the XML-RPC specification in handling of datetimes. The API appends a “Z” to the end of datetime strings, which is meant to indicate that the time is expressed in UTC.

API evolution

All APIs evolve as bugs are fixed, new features added and features are removed

  • the XenAPI is no exception. This document lists policies describing how the XenAPI evolves over time.

The goals of XenAPI evolution are:

  • to allow bugs to be fixed efficiently;
  • to allow new, innovative features to be added easily;
  • to keep old, unmodified clients working as much as possible; and
  • where backwards-incompatible changes are to be made, publish this information early to enable affected parties to give timely feedback.

Background

In this document, the term XenAPI refers to the XMLRPC-derived wire protocol used by xapi. The XenAPI has objects which each have fields and messages. The XenAPI is described in detail elsewhere.

XenAPI Lifecycle

graph LR
    Prototype -->|1| Published -->|4| Deprecated -->|5| Removed
    Published -->|2,3| Published

Each element of the XenAPI (objects, messages and fields) follows the lifecycle diagram above. When an element is newly created and being still in development, it is in the Prototype state. Elements in this state may be stubs: the interface is there and can be used by clients for prototyping their new features, but the actual implementation is not yet ready.

When the element subsequently becomes ready for use (the stub is replaced by a real implementation), it transitions to the Published state. This is the only state in which the object, message or field should be used. From this point onwards, the element needs to have clearly defined semantics that are available for reference in the XenAPI documentation.

If the XenAPI element becomes Deprecated, it will still function as it did before, but its use is discouraged. The final stage of the lifecycle is the Removed state, in which the element is not available anymore.

The numbered state changes in the diagram have the following meaning:

  1. Publish: declare that the XenAPI element is ready for people to use.
  2. Extend: a backwards-compatible extension of the XenAPI, for example an additional parameter in a message with an appropriate default value. If the API is used as before, it still has the same effect.
  3. Change: a backwards-incompatible change. That is, the message now behaves differently, or the field has different semantics. Such changes are discouraged and should only be considered in special cases (always consider whether deprecation is a better solution). The use of a message can for example be restricted for security or efficiency reasons, or the behaviour can be changed simply to fix a bug.
  4. Deprecate: declare that the use of this XenAPI element should be avoided from now on. Reasons for doing this include: the element is redundant (it duplicates functionality elsewhere), it is inconsistent with other parts of the XenAPI, it is insecure or inefficient. For examples of deprecation policies of other projects, see the policies of the eclipse and oval projects.
  5. Remove: the element is taken out of the public API and can no longer be used.

Each lifecycle transition must be accompanied by an explanation describing the change and the reason for the change. This message should be enough to understand the semantics of the XenAPI element after the change, and in the case of backwards-incompatible changes or deprecation, it should give directions about how to modify a client to deal with the change (for example, how to avoid using the deprecated field or message).

Releases

Every release must be accompanied by release notes listing all objects, fields and messages that are newly prototyped, published, extended, changed, deprecated or removed in the release. Each item should have an explanation as implied above, documenting the new or changed XenAPI element. The release notes for every release shall be prominently displayed in the XenAPI HTML documentation.

Documentation

The XenAPI documentation will contain its complete lifecycle history for each XenAPI element. Only the elements described in the documentation are “official” and supported.

Each object, message and field in datamodel.ml will have lifecycle metadata attached to it, which is a list of transitions (transition type * release * explanation string) as described above. Release notes are automatically generated from this data.

Using the API

This chapter describes how to use the XenServer Management API from real programs to manage XenServer Hosts and VMs. The chapter begins with a walk-through of a typical client application and demonstrates how the API can be used to perform common tasks. Example code fragments are given in python syntax but equivalent code in the other programming languages would look very similar. The language bindings themselves are discussed afterwards and the chapter finishes with walk-throughs of two complete examples.

Anatomy of a typical application

This section describes the structure of a typical application using the XenServer Management API. Most client applications begin by connecting to a XenServer Host and authenticating (e.g. with a username and password). Assuming the authentication succeeds, the server will create a “session” object and return a reference to the client. This reference will be passed as an argument to all future API calls. Once authenticated, the client may search for references to other useful objects (e.g. XenServer Hosts, VMs, etc.) and invoke operations on them. Operations may be invoked either synchronously or asynchronously; special task objects represent the state and progress of asynchronous operations. These application elements are all described in detail in the following sections.

Choosing a low-level transport

API calls can be issued over two transports:

  • SSL-encrypted TCP on port 443 (https) over an IP network

  • plaintext over a local Unix domain socket: /var/xapi/xapi

The SSL-encrypted TCP transport is used for all off-host traffic while the Unix domain socket can be used from services running directly on the XenServer Host itself. In the SSL-encrypted TCP transport, all API calls should be directed at the Resource Pool master; failure to do so will result in the error HOST_IS_SLAVE, which includes the IP address of the master as an error parameter.

Because the master host of a pool can change, especially if HA is enabled on a pool, clients must implement the following steps to detect a master host change and connect to the new master as required:

Subscribe to updates in the list of hosts servers, and maintain a current list of hosts in the pool

If the connection to the pool master fails to respond, attempt to connect to all hosts in the list until one responds

The first host to respond will return the HOST_IS_SLAVE error message, which contains the identity of the new pool master (unless of course the host is the new master)

Connect to the new master

Note

As a special-case, all messages sent through the Unix domain socket are transparently forwarded to the correct node.

Authentication and session handling

The vast majority of API calls take a session reference as their first parameter; failure to supply a valid reference will result in a SESSION_INVALID error being returned. Acquire a session reference by supplying a username and password to the login_with_password function.

Note

As a special-case, if this call is executed over the local Unix domain socket then the username and password are ignored and the call always succeeds.

Every session has an associated “last active” timestamp which is updated on every API call. The server software currently has a built-in limit of 500 active sessions and will remove those with the oldest “last active” field if this limit is exceeded for a given username or originator. In addition all sessions whose “last active” field is older than 24 hours are also removed. Therefore it is important to:

  • Specify an appropriate originator when logging in; and

  • Remember to log out of active sessions to avoid leaking them; and

  • Be prepared to log in again to the server if a SESSION_INVALID error is caught.

In the following Python fragment a connection is established over the Unix domain socket and a session is created:

import XenAPI

    session = XenAPI.xapi_local()
    try:
        session.xenapi.login_with_password("root", "", "2.3", "My Widget v0.1")
        ...
    finally:
        session.xenapi.session.logout()

Finding references to useful objects

Once an application has authenticated the next step is to acquire references to objects in order to query their state or invoke operations on them. All objects have a set of “implicit” messages which include the following:

  • get_by_name_label : return a list of all objects of a particular class with a particular label;

  • get_by_uuid : return a single object named by its UUID;

  • get_all : return a set of references to all objects of a particular class; and

  • get_all_records : return a map of reference to records for each object of a particular class.

For example, to list all hosts:

hosts = session.xenapi.host.get_all()

To find all VMs with the name “my first VM”:

vms = session.xenapi.VM.get_by_name_label('my first VM')

Note

Object name_label fields are not guaranteed to be unique and so the get_by_name_label API call returns a set of references rather than a single reference.

In addition to the methods of finding objects described above, most objects also contain references to other objects within fields. For example it is possible to find the set of VMs running on a particular host by calling:

vms = session.xenapi.host.get_resident_VMs(host)

Invoking synchronous operations on objects

Once object references have been acquired, operations may be invoked on them. For example to start a VM:

session.xenapi.VM.start(vm, False, False)

All API calls are by default synchronous and will not return until the operation has completed or failed. For example in the case of VM.start the call does not return until the VM has started booting.

Note

When the VM.start call returns the VM will be booting. To determine when the booting has finished, wait for the in-guest agent to report internal statistics through the VM_guest_metrics object.

Using Tasks to manage asynchronous operations

To simplify managing operations which take quite a long time (e.g. VM.clone and VM.copy) functions are available in two forms: synchronous (the default) and asynchronous. Each asynchronous function returns a reference to a task object which contains information about the in-progress operation including:

  • whether it is pending

  • whether it is has succeeded or failed

  • progress (in the range 0-1)

  • the result or error code returned by the operation

An application which wanted to track the progress of a VM.clone operation and display a progress bar would have code like the following:

vm = session.xenapi.VM.get_by_name_label('my vm')
task = session.xenapi.Async.VM.clone(vm)
while session.xenapi.task.get_status(task) == "pending":
        progress = session.xenapi.task.get_progress(task)
        update_progress_bar(progress)
        time.sleep(1)
session.xenapi.task.destroy(task)

Note

Note that a well-behaved client should remember to delete tasks created by asynchronous operations when it has finished reading the result or error. If the number of tasks exceeds a built-in threshold then the server will delete the oldest of the completed tasks.

Subscribing to and listening for events

With the exception of the task and metrics classes, whenever an object is modified the server generates an event. Clients can subscribe to this event stream on a per-class basis and receive updates rather than resorting to frequent polling. Events come in three types:

  • add - generated when an object has been created;

  • del - generated immediately before an object is destroyed; and

  • mod - generated when an object’s field has changed.

Events also contain a monotonically increasing ID, the name of the class of object and a snapshot of the object state equivalent to the result of a get_record().

Clients register for events by calling event.register() with a list of class names or the special string “*”. Clients receive events by executing event.next() which blocks until events are available and returns the new events.

Note

Since the queue of generated events on the server is of finite length a very slow client might fail to read the events fast enough; if this happens an EVENTS_LOST error is returned. Clients should be prepared to handle this by re-registering for events and checking that the condition they are waiting for hasn’t become true while they were unregistered.

The following python code fragment demonstrates how to print a summary of every event generated by a system: (similar code exists in Xenserver-SDK/XenServerPython/samples/watch-all-events.py)

fmt = "%8s  %20s  %5s  %s"
session.xenapi.event.register(["*"])
while True:
    try:
        for event in session.xenapi.event.next():
            name = "(unknown)"
            if "snapshot" in event.keys():
                snapshot = event["snapshot"]
                if "name_label" in snapshot.keys():
                    name = snapshot["name_label"]
            print fmt % (event['id'], event['class'], event['operation'], name)           
    except XenAPI.Failure, e:
        if e.details == [ "EVENTS_LOST" ]:
            print "Caught EVENTS_LOST; should reregister"

Language bindings

C

The SDK includes the source to the C language binding in the directory XenServer-SDK/libxenserver/src together with a Makefile which compiles the binding into a library. Every API object is associated with a header file which contains declarations for all that object’s API functions; for example the type definitions and functions required to invoke VM operations are all contained in xen_vm.h.

C binding dependencies

Platform supported:

Linux

Library:

The language binding is generated as a libxenserver.so that is linked by C programs.

Dependencies:

  • XML library (libxml2.so on GNU Linux)

  • Curl library (libcurl2.so)

The following simple examples are included with the C bindings:

  • test_vm_async_migrate: demonstrates how to use asynchronous API calls to migrate running VMs from a slave host to the pool master.

  • test_vm_ops: demonstrates how to query the capabilities of a host, create a VM, attach a fresh blank disk image to the VM and then perform various powercycle operations;

  • test_failures: demonstrates how to translate error strings into enum_xen_api_failure, and vice versa;

  • test_event_handling: demonstrates how to listen for events on a connection.

  • test_enumerate: demonstrates how to enumerate the various API objects.

C#

The C# bindings are contained within the directory XenServer-SDK/XenServer.NET and include project files suitable for building under Microsoft Visual Studio. Every API object is associated with one C# file; for example the functions implementing the VM operations are contained within the file VM.cs.

C# binding dependencies

Platform supported:Windows with .NET version 4.5
Library:The language binding is generated as a Dynamic Link Library XenServer.dll that is linked by C# programs.
Dependencies:CookComputing.XMLRpcV2.dll is needed for the XenServer.dll to be able to communicate with the xml-rpc server. We test with version 2.1.0.6 and recommend that you use this version, though others may work.

Three examples are included with the C# bindings in the directory XenServer-SDK/XenServer.NET/samples as separate projects of the XenSdkSample.sln solution:

  • GetVariousRecords: logs into a XenServer Host and displays information about hosts, storage and virtual machines;

  • GetVmRecords: logs into a XenServer Host and lists all the VM records;

  • VmPowerStates: logs into a XenServer Host, finds a VM and takes it through the various power states. Requires a shut-down VM to be already installed.

Java

The Java bindings are contained within the directory XenServer-SDK/XenServerJava and include project files suitable for building under Microsoft Visual Studio. Every API object is associated with one Java file; for example the functions implementing the VM operations are contained within the file VM.java.

Java binding dependencies

Platform supported:

Linux and Windows

Library:

The language binding is generated as a Java Archive file xenserver-PRODUCT_VERSION.jar that is linked by Java programs.

Dependencies:

  • xmlrpc-client-3.1.jar is needed for the xenserver.jar to be able to communicate with the xml-rpc server.
  • ws-commons-util-1.0.2.jar is needed to run the examples.

Running the main file XenServer-SDK/XenServerJava/samples/RunTests.java will run a series of examples included in the same directory:

  • AddNetwork: Adds a new internal network not attached to any NICs;

  • SessionReuse: Demonstrates how a Session object can be shared between multiple Connections;

  • AsyncVMCreate: Makes asynchronously a new VM from a built-in template, starts and stops it;

  • VdiAndSrOps: Performs various SR and VDI tests, including creating a dummy SR;

  • CreateVM: Creates a VM on the default SR with a network and DVD drive;

  • DeprecatedMethod: Tests a warning is displayed wehn a deprecated API method is called;

  • GetAllRecordsOfAllTypes: Retrieves all the records for all types of objects;

  • SharedStorage: Creates a shared NFS SR;

  • StartAllVMs: Connects to a host and tries to start each VM on it.

PowerShell

The PowerShell bindings are contained within the directory XenServer-SDK/XenServerPowerShell. We provide the PowerShell module XenServerPSModule and source code exposing the XenServer API as Windows PowerShell cmdlets.

PowerShell binding dependencies

Platform supported:Windows with .NET Framework 4.5 and PowerShell v4.0
Library:XenServerPSModule
Dependencies:CookComputing.XMLRpcV2.dll is needed to be able to communicate with the xml-rpc server. We test with version 2.1.0.6 and recommend that you use this version, though others may work.

These example scripts are included with the PowerShell bindings in the directory XenServer-SDK/XenServerPowerShell/samples:

  • AutomatedTestCore.ps1: demonstrates how to log into a XenServer host, create a storage repository and a VM, and then perform various powercycle operations;

  • HttpTest.ps1: demonstrates how to log into a XenServer host, create a VM, and then perform operations such as VM importing and exporting, patch upload, and retrieval of performance statistics.

Python

The python bindings are contained within a single file: XenServer-SDK/XenServerPython/XenAPI.py.

Python binding dependencies

|:–|:–| |Platform supported:|Linux| |Library:|XenAPI.py| |Dependencies:|None|

The SDK includes 7 python examples:

  • fixpbds.py - reconfigures the settings used to access shared storage;

  • install.py - installs a Debian VM, connects it to a network, starts it up and waits for it to report its IP address;

  • license.py - uploads a fresh license to a XenServer Host;

  • permute.py - selects a set of VMs and uses XenMotion to move them simultaneously between hosts;

  • powercycle.py - selects a set of VMs and powercycles them;

  • shell.py - a simple interactive shell for testing;

  • vm_start_async.py - demonstrates how to invoke operations asynchronously;

  • watch-all-events.py - registers for all events and prints details when they occur.

Command Line Interface (CLI)

Besides using raw XML-RPC or one of the supplied language bindings, third-party software developers may integrate with XenServer Hosts by using the XE command line interface xe. The xe CLI is installed by default on XenServer hosts; a stand-alone remote CLI is also available for Linux. On Windows, the xe.exe CLI executable is installed along with XenCenter.

CLI dependencies

|:–|:–| |Platform supported:|Linux and Windows| |Library:|None| |Binary:|xe (xe.exe on Windows)| |Dependencies:|None|

The CLI allows almost every API call to be directly invoked from a script or other program, silently taking care of the required session management. The XE CLI syntax and capabilities are described in detail in the XenServer Administrator’s Guide. For additional resources and examples, visit the Citrix Knowledge Center.

Note

When running the CLI from a XenServer Host console, tab-completion of both command names and arguments is available.

Complete application examples

This section describes two complete examples of real programs using the API.

Simultaneously migrating VMs using XenMotion

This python example (contained in XenServer-SDK/XenServerPython/samples/permute.py) demonstrates how to use XenMotion to move VMs simultaneously between hosts in a Resource Pool. The example makes use of asynchronous API calls and shows how to wait for a set of tasks to complete.

The program begins with some standard boilerplate and imports the API bindings module

import sys, time
import XenAPI

Next the commandline arguments containing a server URL, username, password and a number of iterations are parsed. The username and password are used to establish a session which is passed to the function main, which is called multiple times in a loop. Note the use of try: finally: to make sure the program logs out of its session at the end.

if __name__ == "__main__":
    if len(sys.argv) <> 5:
        print "Usage:"
        print sys.argv[0], " <url> <username> <password> <iterations>"
        sys.exit(1)
    url = sys.argv[1]
    username = sys.argv[2]
    password = sys.argv[3]
    iterations = int(sys.argv[4])
    # First acquire a valid session by logging in:
    session = XenAPI.Session(url)
    session.xenapi.login_with_password(username, password, "2.3",
                                       "Example migration-demo v0.1")
    try:
        for i in range(iterations):
            main(session, i)
    finally:
        session.xenapi.session.logout()

The main function examines each running VM in the system, taking care to filter out control domains (which are part of the system and not controllable by the user). A list of running VMs and their current hosts is constructed.

def main(session, iteration):
    # Find a non-template VM object
    all = session.xenapi.VM.get_all()
    vms = []
    hosts = []
    for vm in all:
        record = session.xenapi.VM.get_record(vm)
        if not(record["is_a_template"]) and \
           not(record["is_control_domain"]) and \
           record["power_state"] == "Running":
            vms.append(vm)
            hosts.append(record["resident_on"])
    print "%d: Found %d suitable running VMs" % (iteration, len(vms))

Next the list of hosts is rotated:

# use a rotation as a permutation
    hosts = [hosts[-1]] + hosts[:(len(hosts)-1)]

Each VM is then moved using XenMotion to the new host under this rotation (i.e. a VM running on host at position 2 in the list will be moved to the host at position 1 in the list etc.) In order to execute each of the movements in parallel, the asynchronous version of the VM.pool_migrate is used and a list of task references constructed. Note the live flag passed to the VM.pool_migrate; this causes the VMs to be moved while they are still running.

tasks = []
    for i in range(0, len(vms)):
        vm = vms[i]
        host = hosts[i]
        task = session.xenapi.Async.VM.pool_migrate(vm, host, { "live": "true" })
        tasks.append(task)

The list of tasks is then polled for completion:

finished = False
    records = {}
    while not(finished):
        finished = True
        for task in tasks:
            record = session.xenapi.task.get_record(task)
            records[task] = record
            if record["status"] == "pending":
                finished = False
        time.sleep(1)

Once all tasks have left the pending state (i.e. they have successfully completed, failed or been cancelled) the tasks are polled once more to see if they all succeeded:

allok = True
    for task in tasks:
        record = records[task]
        if record["status"] <> "success":
            allok = False

If any one of the tasks failed then details are printed, an exception is raised and the task objects left around for further inspection. If all tasks succeeded then the task objects are destroyed and the function returns.

if not(allok):
        print "One of the tasks didn't succeed at", \
            time.strftime("%F:%HT%M:%SZ", time.gmtime())
        idx = 0
        for task in tasks:
            record = records[task]
            vm_name = session.xenapi.VM.get_name_label(vms[idx])
            host_name = session.xenapi.host.get_name_label(hosts[idx])
            print "%s : %12s %s -> %s [ status: %s; result = %s; error = %s ]" % \
                  (record["uuid"], record["name_label"], vm_name, host_name,      \
                   record["status"], record["result"], repr(record["error_info"]))
            idx = idx + 1
        raise "Task failed"
    else:
        for task in tasks:
            session.xenapi.task.destroy(task)

Cloning a VM using the XE CLI

This example is a bash script which uses the XE CLI to clone a VM taking care to shut it down first if it is powered on.

The example begins with some boilerplate which first checks if the environment variable XE has been set: if it has it assumes that it points to the full path of the CLI, else it is assumed that the XE CLI is on the current path. Next the script prompts the user for a server name, username and password:

# Allow the path to the 'xe' binary to be overridden by the XE environment variable
if [ -z "${XE}" ]; then
  XE=xe
fi

if [ ! -e "${HOME}/.xe" ]; then
  read -p "Server name: " SERVER
  read -p "Username: " USERNAME
  read -p "Password: " PASSWORD
  XE="${XE} -s ${SERVER} -u ${USERNAME} -pw ${PASSWORD}"
fi

Next the script checks its commandline arguments. It requires exactly one: the UUID of the VM which is to be cloned:

# Check if there's a VM by the uuid specified
${XE} vm-list params=uuid | grep -q " ${vmuuid}$"
if [ $? -ne 0 ]; then
        echo "error: no vm uuid \"${vmuuid}\" found"
        exit 2
fi

The script then checks the power state of the VM and if it is running, it attempts a clean shutdown. The event system is used to wait for the VM to enter state “Halted”.

Note

The XE CLI supports a command-line argument --minimal which causes it to print its output without excess whitespace or formatting, ideal for use from scripts. If multiple values are returned they are comma-separated.

# Check the power state of the vm
name=$(${XE} vm-list uuid=${vmuuid} params=name-label --minimal)
state=$(${XE} vm-list uuid=${vmuuid} params=power-state --minimal)
wasrunning=0

# If the VM state is running, we shutdown the vm first
if [ "${state}" = "running" ]; then
        ${XE} vm-shutdown uuid=${vmuuid}
        ${XE} event-wait class=vm power-state=halted uuid=${vmuuid}
        wasrunning=1
fi

The VM is then cloned and the new VM has its name_label set to cloned_vm.

# Clone the VM
newuuid=$(${XE} vm-clone uuid=${vmuuid} new-name-label=cloned_vm)

Finally, if the original VM had been running and was shutdown, both it and the new VM are started.

# If the VM state was running before cloning, we start it again
# along with the new VM.
if [ "$wasrunning" -eq 1 ]; then
        ${XE} vm-start uuid=${vmuuid}
        ${XE} vm-start uuid=${newuuid}
fi

XenAPI Reference

XenAPI Classes

Click on a class to view the associated fields and messages.

Xen-api class diagram

Classes, Fields and Messages

Classes have both fields and messages. Messages are either implicit or explicit where an implicit message is one of:

  • a constructor (usually called "create");
  • a destructor (usually called "destroy");
  • "get_by_name_label";
  • "get_by_uuid";
  • "get_record";
  • "get_all"; and
  • "get_all_records".

Explicit messages include all the rest, more class-specific messages (e.g. "VM.start", "VM.clone")

Every field has at least one accessor depending both on its type and whether it is read-only or read-write. Accessors for a field named "X" would be a proper subset of:

  • set_X: change the value of field X (only if it is read-write);
  • get_X: retrieve the value of field X;
  • add_X: add a key/value pair (for fields of type set);
  • remove_X: remove a key (for fields of type set);
  • add_to_X: add a key/value pair (for fields of type map); and
  • remove_from_X: remove a key (for fields of type map).

Subsections of XenAPI Reference

auth

Class: auth

Management of remote authentication services

Fields

Messages

string set get_group_membership (session ref, string)
string get_subject_identifier (session ref, string)
(string → string) map get_subject_information_from_identifier (session ref, string)

blob

Class: blob

A placeholder for a binary blob

Fields

datetime last_updated [RO/constructor]
string mime_type [RO/constructor]
string name_description [RW]
string name_label [RW]
bool public [RW]
int size [RO/runtime]
string uuid [RO/runtime]

Messages

blob ref create (session ref, string, bool)
void destroy (session ref, blob ref)
blob ref set get_all (session ref)
(blob ref → blob record) map get_all_records (session ref)
blob ref set get_by_name_label (session ref, string)
blob ref get_by_uuid (session ref, string)
datetime get_last_updated (session ref, blob ref)
string get_mime_type (session ref, blob ref)
string get_name_description (session ref, blob ref)
string get_name_label (session ref, blob ref)
bool get_public (session ref, blob ref)
blob record get_record (session ref, blob ref)
int get_size (session ref, blob ref)
string get_uuid (session ref, blob ref)
void set_name_description (session ref, blob ref, string)
void set_name_label (session ref, blob ref, string)
void set_public (session ref, blob ref, bool)

Bond

Class: Bond

A Network bond that combines physical network interfaces, also known as link aggregation

Enums

bond_mode

Fields

bool auto_update_mac [RO/runtime]
int links_up [RO/runtime]
PIF ref master [RO/constructor]
enum bond_mode mode [RO/runtime]
(string → string) map other_config [RW]
PIF ref primary_slave [RO/runtime]
(string → string) map properties [RO/runtime]
PIF ref set slaves [RO/runtime]
string uuid [RO/runtime]

Messages

void add_to_other_config (session ref, Bond ref, string, string)
Bond ref create (session ref, network ref, PIF ref set, string, enum bond_mode, (string → string) map)
void destroy (session ref, Bond ref)
Bond ref set get_all (session ref)
(Bond ref → Bond record) map get_all_records (session ref)
bool get_auto_update_mac (session ref, Bond ref)
Bond ref get_by_uuid (session ref, string)
int get_links_up (session ref, Bond ref)
PIF ref get_master (session ref, Bond ref)
enum bond_mode get_mode (session ref, Bond ref)
(string → string) map get_other_config (session ref, Bond ref)
PIF ref get_primary_slave (session ref, Bond ref)
(string → string) map get_properties (session ref, Bond ref)
Bond record get_record (session ref, Bond ref)
PIF ref set get_slaves (session ref, Bond ref)
string get_uuid (session ref, Bond ref)
void remove_from_other_config (session ref, Bond ref, string)
void set_mode (session ref, Bond ref, enum bond_mode)
void set_other_config (session ref, Bond ref, (string → string) map)
void set_property (session ref, Bond ref, string, string)

Certificate

Class: Certificate

An X509 certificate used for TLS connections

Enums

certificate_type

Fields

string fingerprint [RO/constructor]
host ref host [RO/constructor]
string name [RO/runtime]
datetime not_after [RO/constructor]
datetime not_before [RO/constructor]
enum certificate_type type [RO/runtime]
string uuid [RO/runtime]

Messages

Certificate ref set get_all (session ref)
(Certificate ref → Certificate record) map get_all_records (session ref)
Certificate ref get_by_uuid (session ref, string)
string get_fingerprint (session ref, Certificate ref)
host ref get_host (session ref, Certificate ref)
string get_name (session ref, Certificate ref)
datetime get_not_after (session ref, Certificate ref)
datetime get_not_before (session ref, Certificate ref)
Certificate record get_record (session ref, Certificate ref)
enum certificate_type get_type (session ref, Certificate ref)
string get_uuid (session ref, Certificate ref)

Cluster

Class: Cluster

Cluster-wide Cluster metadata

Enums

cluster_operation

Fields

enum cluster_operation set allowed_operations [RO/runtime]
(string → string) map cluster_config [RO/constructor]
Cluster_host ref set cluster_hosts [RO/runtime]
string cluster_stack [RO/constructor]
string cluster_token [RO/constructor]
(string → enum cluster_operation) map current_operations [RO/runtime]
Prototype
bool is_quorate [RO/runtime]
Prototype
int live_hosts [RO/runtime]
(string → string) map other_config [RW]
string set pending_forget [RO/runtime]
bool pool_auto_join [RO/constructor]
Prototype
int quorum [RO/runtime]
float token_timeout [RO/constructor]
float token_timeout_coefficient [RO/constructor]
string uuid [RO/runtime]

Messages

void add_to_other_config (session ref, Cluster ref, string, string)
Cluster ref create (session ref, PIF ref, string, bool, float, float)
void destroy (session ref, Cluster ref)
Cluster ref set get_all (session ref)
(Cluster ref → Cluster record) map get_all_records (session ref)
enum cluster_operation set get_allowed_operations (session ref, Cluster ref)
Cluster ref get_by_uuid (session ref, string)
(string → string) map get_cluster_config (session ref, Cluster ref)
Cluster_host ref set get_cluster_hosts (session ref, Cluster ref)
string get_cluster_stack (session ref, Cluster ref)
string get_cluster_token (session ref, Cluster ref)
(string → enum cluster_operation) map get_current_operations (session ref, Cluster ref)
Prototype
bool get_is_quorate (session ref, Cluster ref)
Prototype
int get_live_hosts (session ref, Cluster ref)
network ref get_network (session ref, Cluster ref)
(string → string) map get_other_config (session ref, Cluster ref)
string set get_pending_forget (session ref, Cluster ref)
bool get_pool_auto_join (session ref, Cluster ref)
Prototype
int get_quorum (session ref, Cluster ref)
Cluster record get_record (session ref, Cluster ref)
float get_token_timeout (session ref, Cluster ref)
float get_token_timeout_coefficient (session ref, Cluster ref)
string get_uuid (session ref, Cluster ref)
Cluster ref pool_create (session ref, network ref, string, float, float)
void pool_destroy (session ref, Cluster ref)
void pool_force_destroy (session ref, Cluster ref)
void pool_resync (session ref, Cluster ref)
void remove_from_other_config (session ref, Cluster ref, string)
void set_other_config (session ref, Cluster ref, (string → string) map)

Cluster_host

Class: Cluster_host

Cluster member metadata

Enums

cluster_host_operation

Fields

enum cluster_host_operation set allowed_operations [RO/runtime]
Cluster ref cluster [RO/constructor]
(string → enum cluster_host_operation) map current_operations [RO/runtime]
bool enabled [RO/runtime]
host ref host [RO/constructor]
bool joined [RO/runtime]
Prototype
datetime last_update_live [RO/runtime]
Prototype
bool live [RO/runtime]
(string → string) map other_config [RO/constructor]
PIF ref PIF [RO/constructor]
string uuid [RO/runtime]

Messages

Cluster_host ref create (session ref, Cluster ref, host ref, PIF ref)
void destroy (session ref, Cluster_host ref)
void disable (session ref, Cluster_host ref)
void enable (session ref, Cluster_host ref)
void force_destroy (session ref, Cluster_host ref)
Cluster_host ref set get_all (session ref)
(Cluster_host ref → Cluster_host record) map get_all_records (session ref)
enum cluster_host_operation set get_allowed_operations (session ref, Cluster_host ref)
Cluster_host ref get_by_uuid (session ref, string)
Cluster ref get_cluster (session ref, Cluster_host ref)
(string → enum cluster_host_operation) map get_current_operations (session ref, Cluster_host ref)
bool get_enabled (session ref, Cluster_host ref)
host ref get_host (session ref, Cluster_host ref)
bool get_joined (session ref, Cluster_host ref)
Prototype
datetime get_last_update_live (session ref, Cluster_host ref)
Prototype
bool get_live (session ref, Cluster_host ref)
(string → string) map get_other_config (session ref, Cluster_host ref)
PIF ref get_PIF (session ref, Cluster_host ref)
Cluster_host record get_record (session ref, Cluster_host ref)
string get_uuid (session ref, Cluster_host ref)

console

Class: console

A console

Enums

console_protocol

Fields

string location [RO/runtime]
(string → string) map other_config [RW]
enum console_protocol protocol [RO/runtime]
string uuid [RO/runtime]
VM ref VM [RO/runtime]

Messages

void add_to_other_config (session ref, console ref, string, string)
console ref create (session ref, console record)
void destroy (session ref, console ref)
console ref set get_all (session ref)
(console ref → console record) map get_all_records (session ref)
console ref get_by_uuid (session ref, string)
string get_location (session ref, console ref)
(string → string) map get_other_config (session ref, console ref)
enum console_protocol get_protocol (session ref, console ref)
console record get_record (session ref, console ref)
string get_uuid (session ref, console ref)
VM ref get_VM (session ref, console ref)
void remove_from_other_config (session ref, console ref, string)
void set_other_config (session ref, console ref, (string → string) map)

crashdump

Deprecated

Class: crashdump

A VM crashdump

Fields

(string → string) map other_config [RW]
string uuid [RO/runtime]
VDI ref VDI [RO/constructor]
VM ref VM [RO/constructor]

Messages

void add_to_other_config (session ref, crashdump ref, string, string)
void destroy (session ref, crashdump ref)
Deprecated
crashdump ref set get_all (session ref)
Deprecated
(crashdump ref → crashdump record) map get_all_records (session ref)
Deprecated
crashdump ref get_by_uuid (session ref, string)
(string → string) map get_other_config (session ref, crashdump ref)
Deprecated
crashdump record get_record (session ref, crashdump ref)
string get_uuid (session ref, crashdump ref)
VDI ref get_VDI (session ref, crashdump ref)
VM ref get_VM (session ref, crashdump ref)
void remove_from_other_config (session ref, crashdump ref, string)
void set_other_config (session ref, crashdump ref, (string → string) map)

data_source

Class: data_source

Data sources for logging in RRDs

Fields

bool enabled [RO/runtime]
float max [RO/runtime]
float min [RO/runtime]
string name_description [RO/runtime]
string name_label [RO/runtime]
bool standard [RO/runtime]
string units [RO/runtime]
float value [RO/runtime]

Messages

DR_task

Class: DR_task

DR task

Fields

SR ref set introduced_SRs [RO/runtime]
string uuid [RO/runtime]

Messages

DR_task ref create (session ref, string, (string → string) map, string set)
void destroy (session ref, DR_task ref)
DR_task ref set get_all (session ref)
(DR_task ref → DR_task record) map get_all_records (session ref)
DR_task ref get_by_uuid (session ref, string)
SR ref set get_introduced_SRs (session ref, DR_task ref)
DR_task record get_record (session ref, DR_task ref)
string get_uuid (session ref, DR_task ref)

event

Class: event

Asynchronous event registration and handling

Enums

event_operation

Fields

string class [RO/constructor]
int id [RO/constructor]
Deprecated
string obj_uuid [RO/constructor]
enum event_operation operation [RO/constructor]
string ref [RO/constructor]
<class> record snapshot [RO/runtime]
Deprecated
datetime timestamp [RO/constructor]

Messages

an event batch from (session ref, string set, string, float)
int get_current_id (session ref)
string inject (session ref, string, string)
Deprecated
event record set next (session ref)
Deprecated
void register (session ref, string set)
Deprecated
void unregister (session ref, string set)

Feature

Class: Feature

A new piece of functionality

Fields

bool enabled [RO/runtime]
bool experimental [RO/constructor]
host ref host [RO/runtime]
string name_description [RO/constructor]
string name_label [RO/constructor]
string uuid [RO/runtime]
string version [RO/constructor]

Messages

Feature ref set get_all (session ref)
(Feature ref → Feature record) map get_all_records (session ref)
Feature ref set get_by_name_label (session ref, string)
Feature ref get_by_uuid (session ref, string)
bool get_enabled (session ref, Feature ref)
bool get_experimental (session ref, Feature ref)
host ref get_host (session ref, Feature ref)
string get_name_description (session ref, Feature ref)
string get_name_label (session ref, Feature ref)
Feature record get_record (session ref, Feature ref)
string get_uuid (session ref, Feature ref)
string get_version (session ref, Feature ref)

GPU_group

Class: GPU_group

A group of compatible GPUs across the resource pool

Enums

allocation_algorithm

Fields

enum allocation_algorithm allocation_algorithm [RW]
VGPU_type ref set enabled_VGPU_types [RO/runtime]
string set GPU_types [RO/runtime]
string name_description [RW]
string name_label [RW]
(string → string) map other_config [RW]
PGPU ref set PGPUs [RO/runtime]
VGPU_type ref set supported_VGPU_types [RO/runtime]
string uuid [RO/runtime]
VGPU ref set VGPUs [RO/runtime]

Messages

void add_to_other_config (session ref, GPU_group ref, string, string)
GPU_group ref create (session ref, string, string, (string → string) map)
void destroy (session ref, GPU_group ref)
GPU_group ref set get_all (session ref)
(GPU_group ref → GPU_group record) map get_all_records (session ref)
enum allocation_algorithm get_allocation_algorithm (session ref, GPU_group ref)
GPU_group ref set get_by_name_label (session ref, string)
GPU_group ref get_by_uuid (session ref, string)
VGPU_type ref set get_enabled_VGPU_types (session ref, GPU_group ref)
string set get_GPU_types (session ref, GPU_group ref)
string get_name_description (session ref, GPU_group ref)
string get_name_label (session ref, GPU_group ref)
(string → string) map get_other_config (session ref, GPU_group ref)
PGPU ref set get_PGPUs (session ref, GPU_group ref)
GPU_group record get_record (session ref, GPU_group ref)
int get_remaining_capacity (session ref, GPU_group ref, VGPU_type ref)
VGPU_type ref set get_supported_VGPU_types (session ref, GPU_group ref)
string get_uuid (session ref, GPU_group ref)
VGPU ref set get_VGPUs (session ref, GPU_group ref)
void remove_from_other_config (session ref, GPU_group ref, string)
void set_allocation_algorithm (session ref, GPU_group ref, enum allocation_algorithm)
void set_name_description (session ref, GPU_group ref, string)
void set_name_label (session ref, GPU_group ref, string)
void set_other_config (session ref, GPU_group ref, (string → string) map)

host

Class: host

A physical host

Enums

host_allowed_operations
latest_synced_updates_applied_state
update_guidances
host_display
host_sched_gran
host_numa_affinity_policy

Fields

string address [RW]
enum host_allowed_operations set allowed_operations [RO/runtime]
int API_version_major [RO/runtime]
int API_version_minor [RO/runtime]
string API_version_vendor [RO/runtime]
(string → string) map API_version_vendor_implementation [RO/runtime]
(string → string) map bios_strings [RO/runtime]
(string → blob ref) map blobs [RO/runtime]
string set capabilities [RO/constructor]
Certificate ref set certificates [RO/runtime]
(string → string) map chipset_info [RO/runtime]
VM ref control_domain [RO/runtime]
(string → string) map cpu_configuration [RO/runtime]
(string → string) map cpu_info [RO/runtime]
SR ref crash_dump_sr [RW]
host_crashdump ref set crashdumps [RO/runtime]
(string → enum host_allowed_operations) map current_operations [RO/runtime]
enum host_display display [RW]
string edition [RO/runtime]
string set editions [RO/runtime]
bool enabled [RO/runtime]
(string → string) map external_auth_configuration [RO/runtime]
string external_auth_service_name [RO/runtime]
string external_auth_type [RO/runtime]
Feature ref set features [RO/runtime]
(string → string) map guest_VCPUs_params [RW]
string set ha_network_peers [RO/runtime]
string set ha_statefiles [RO/runtime]
host_cpu ref set host_CPUs [RO/runtime]
string hostname [RW]
Prototype
bool https_only [RO/runtime]
string iscsi_iqn [RO/constructor]
Prototype
datetime last_software_update [RO/runtime]
Prototype
string last_update_hash [RO/runtime]
Prototype
enum latest_synced_updates_applied_state latest_synced_updates_applied [RO/runtime]
(string → string) map license_params [RO/runtime]
(string → string) map license_server [RW]
SR ref local_cache_sr [RO/constructor]
(string → string) map logging [RW]
int memory_overhead [RO/runtime]
host_metrics ref metrics [RO/runtime]
bool multipathing [RO/constructor]
string name_description [RW]
string name_label [RW]
Prototype
enum host_numa_affinity_policy numa_affinity_policy [RO/runtime]
(string → string) map other_config [RW]
Deprecated
host_patch ref set patches [RO/runtime]
PBD ref set PBDs [RO/runtime]
PCI ref set PCIs [RO/runtime]
enum update_guidances set pending_guidances [RO/runtime]
Prototype
enum update_guidances set pending_guidances_full [RO/runtime]
Prototype
enum update_guidances set pending_guidances_recommended [RO/runtime]
PGPU ref set PGPUs [RO/runtime]
PIF ref set PIFs [RO/runtime]
(string → string) map power_on_config [RO/runtime]
string power_on_mode [RO/runtime]
PUSB ref set PUSBs [RO/runtime]
VM ref set resident_VMs [RO/runtime]
string sched_policy [RO/runtime]
(string → string) map software_version [RO/constructor]
Deprecated
bool ssl_legacy [RO/constructor]
string set supported_bootloaders [RO/runtime]
SR ref suspend_image_sr [RW]
string set tags [RW]
bool tls_verification_enabled [RO/runtime]
Deprecated
string uefi_certificates [RO/constructor]
pool_update ref set updates [RO/runtime]
pool_update ref set updates_requiring_reboot [RO/runtime]
string uuid [RO/runtime]
int set virtual_hardware_platform_versions [RO/runtime]

Messages

void add_tags (session ref, host ref, string)
void add_to_guest_VCPUs_params (session ref, host ref, string, string)
void add_to_license_server (session ref, host ref, string, string)
void add_to_logging (session ref, host ref, string, string)
void add_to_other_config (session ref, host ref, string, string)
void apply_edition (session ref, host ref, string, bool)
Removed
void apply_recommended_guidances (session ref, host ref)
string set set apply_updates (session ref, host ref, string)
void assert_can_evacuate (session ref, host ref)
void backup_rrds (session ref, host ref, float)
void bugreport_upload (session ref, host ref, string, (string → string) map)
string call_extension (session ref, host ref, string)
string call_plugin (session ref, host ref, string, string, (string → string) map)
int compute_free_memory (session ref, host ref)
int compute_memory_overhead (session ref, host ref)
blob ref create_new_blob (session ref, host ref, string, string, bool)
void declare_dead (session ref, host ref)
void destroy (session ref, host ref)
void disable (session ref, host ref)
enum host_display disable_display (session ref, host ref)
void disable_external_auth (session ref, host ref, (string → string) map)
void disable_local_storage_caching (session ref, host ref)
string dmesg (session ref, host ref)
string dmesg_clear (session ref, host ref)
Prototype
void emergency_clear_mandatory_guidance (session ref)
void emergency_disable_tls_verification (session ref)
void emergency_ha_disable (session ref, bool)
void emergency_reenable_tls_verification (session ref)
void emergency_reset_server_certificate (session ref)
void enable (session ref, host ref)
enum host_display enable_display (session ref, host ref)
void enable_external_auth (session ref, host ref, (string → string) map, string, string)
void enable_local_storage_caching (session ref, host ref, SR ref)
void evacuate (session ref, host ref, network ref, int)
void forget_data_source_archives (session ref, host ref, string)
string get_address (session ref, host ref)
host ref set get_all (session ref)
(host ref → host record) map get_all_records (session ref)
enum host_allowed_operations set get_allowed_operations (session ref, host ref)
int get_API_version_major (session ref, host ref)
int get_API_version_minor (session ref, host ref)
string get_API_version_vendor (session ref, host ref)
(string → string) map get_API_version_vendor_implementation (session ref, host ref)
(string → string) map get_bios_strings (session ref, host ref)
(string → blob ref) map get_blobs (session ref, host ref)
host ref set get_by_name_label (session ref, string)
host ref get_by_uuid (session ref, string)
string set get_capabilities (session ref, host ref)
Certificate ref set get_certificates (session ref, host ref)
(string → string) map get_chipset_info (session ref, host ref)
VM ref get_control_domain (session ref, host ref)
(string → string) map get_cpu_configuration (session ref, host ref)
(string → string) map get_cpu_info (session ref, host ref)
SR ref get_crash_dump_sr (session ref, host ref)
host_crashdump ref set get_crashdumps (session ref, host ref)
(string → enum host_allowed_operations) map get_current_operations (session ref, host ref)
data_source record set get_data_sources (session ref, host ref)
enum host_display get_display (session ref, host ref)
string get_edition (session ref, host ref)
string set get_editions (session ref, host ref)
bool get_enabled (session ref, host ref)
(string → string) map get_external_auth_configuration (session ref, host ref)
string get_external_auth_service_name (session ref, host ref)
string get_external_auth_type (session ref, host ref)
Feature ref set get_features (session ref, host ref)
(string → string) map get_guest_VCPUs_params (session ref, host ref)
string set get_ha_network_peers (session ref, host ref)
string set get_ha_statefiles (session ref, host ref)
host_cpu ref set get_host_CPUs (session ref, host ref)
string get_hostname (session ref, host ref)
Prototype
bool get_https_only (session ref, host ref)
string get_iscsi_iqn (session ref, host ref)
Prototype
datetime get_last_software_update (session ref, host ref)
Prototype
string get_last_update_hash (session ref, host ref)
Prototype
enum latest_synced_updates_applied_state get_latest_synced_updates_applied (session ref, host ref)
(string → string) map get_license_params (session ref, host ref)
(string → string) map get_license_server (session ref, host ref)
SR ref get_local_cache_sr (session ref, host ref)
string get_log (session ref, host ref)
(string → string) map get_logging (session ref, host ref)
PIF ref get_management_interface (session ref, host ref)
int get_memory_overhead (session ref, host ref)
host_metrics ref get_metrics (session ref, host ref)
bool get_multipathing (session ref, host ref)
string get_name_description (session ref, host ref)
string get_name_label (session ref, host ref)
Prototype
enum host_numa_affinity_policy get_numa_affinity_policy (session ref, host ref)
(string → string) map get_other_config (session ref, host ref)
Deprecated
host_patch ref set get_patches (session ref, host ref)
PBD ref set get_PBDs (session ref, host ref)
PCI ref set get_PCIs (session ref, host ref)
enum update_guidances set get_pending_guidances (session ref, host ref)
Prototype
enum update_guidances set get_pending_guidances_full (session ref, host ref)
Prototype
enum update_guidances set get_pending_guidances_recommended (session ref, host ref)
PGPU ref set get_PGPUs (session ref, host ref)
PIF ref set get_PIFs (session ref, host ref)
(string → string) map get_power_on_config (session ref, host ref)
string get_power_on_mode (session ref, host ref)
PUSB ref set get_PUSBs (session ref, host ref)
host record get_record (session ref, host ref)
VM ref set get_resident_VMs (session ref, host ref)
enum host_sched_gran get_sched_gran (session ref, host ref)
string get_sched_policy (session ref, host ref)
string get_server_certificate (session ref, host ref)
datetime get_server_localtime (session ref, host ref)
datetime get_servertime (session ref, host ref)
(string → string) map get_software_version (session ref, host ref)
Deprecated
bool get_ssl_legacy (session ref, host ref)
string set get_supported_bootloaders (session ref, host ref)
SR ref get_suspend_image_sr (session ref, host ref)
string get_system_status_capabilities (session ref, host ref)
string set get_tags (session ref, host ref)
bool get_tls_verification_enabled (session ref, host ref)
Deprecated
string get_uefi_certificates (session ref, host ref)
Deprecated
VM ref set get_uncooperative_resident_VMs (session ref, host ref)
pool_update ref set get_updates (session ref, host ref)
pool_update ref set get_updates_requiring_reboot (session ref, host ref)
string get_uuid (session ref, host ref)
int set get_virtual_hardware_platform_versions (session ref, host ref)
(VM ref → string set) map get_vms_which_prevent_evacuation (session ref, host ref)
bool has_extension (session ref, host ref, string)
void install_server_certificate (session ref, host ref, string, string, string)
void license_add (session ref, host ref, string)
Removed
void license_apply (session ref, host ref, string)
void license_remove (session ref, host ref)
string set list_methods (session ref)
void local_management_reconfigure (session ref, string)
void management_disable (session ref)
void management_reconfigure (session ref, PIF ref)
(string → string) map migrate_receive (session ref, host ref, network ref, (string → string) map)
void power_on (session ref, host ref)
float query_data_source (session ref, host ref, string)
void reboot (session ref, host ref)
void record_data_source (session ref, host ref, string)
Deprecated
void refresh_pack_info (session ref, host ref)
void refresh_server_certificate (session ref, host ref)
void remove_from_guest_VCPUs_params (session ref, host ref, string)
void remove_from_license_server (session ref, host ref, string)
void remove_from_logging (session ref, host ref, string)
void remove_from_other_config (session ref, host ref, string)
void remove_tags (session ref, host ref, string)
Removed
void reset_cpu_features (session ref, host ref)
void reset_server_certificate (session ref, host ref)
void restart_agent (session ref, host ref)
(VM ref → string set) map retrieve_wlb_evacuate_recommendations (session ref, host ref)
void send_debug_keys (session ref, host ref, string)
void set_address (session ref, host ref, string)
Removed
void set_cpu_features (session ref, host ref, string)
void set_crash_dump_sr (session ref, host ref, SR ref)
void set_display (session ref, host ref, enum host_display)
void set_guest_VCPUs_params (session ref, host ref, (string → string) map)
void set_hostname (session ref, host ref, string)
void set_hostname_live (session ref, host ref, string)
Prototype
void set_https_only (session ref, host ref, bool)
void set_iscsi_iqn (session ref, host ref, string)
void set_license_server (session ref, host ref, (string → string) map)
void set_logging (session ref, host ref, (string → string) map)
void set_multipathing (session ref, host ref, bool)
void set_name_description (session ref, host ref, string)
void set_name_label (session ref, host ref, string)
Prototype
void set_numa_affinity_policy (session ref, host ref, enum host_numa_affinity_policy)
void set_other_config (session ref, host ref, (string → string) map)
void set_power_on_mode (session ref, host ref, string, (string → string) map)
void set_sched_gran (session ref, host ref, enum host_sched_gran)
void set_ssl_legacy (session ref, host ref, bool)
void set_suspend_image_sr (session ref, host ref, SR ref)
void set_tags (session ref, host ref, string set)
Deprecated
void set_uefi_certificates (session ref, host ref, string)
void shutdown (session ref, host ref)
void shutdown_agent (session ref)
void sync_data (session ref, host ref)
void syslog_reconfigure (session ref, host ref)

host_cpu

Deprecated

Class: host_cpu

A physical CPU

Fields

int family [RO/runtime]
string features [RO/runtime]
string flags [RO/runtime]
host ref host [RO/runtime]
int model [RO/runtime]
string modelname [RO/runtime]
int number [RO/runtime]
(string → string) map other_config [RW]
int speed [RO/runtime]
string stepping [RO/runtime]
float utilisation [RO/runtime]
string uuid [RO/runtime]
string vendor [RO/runtime]

Messages

void add_to_other_config (session ref, host_cpu ref, string, string)
Deprecated
host_cpu ref set get_all (session ref)
Deprecated
(host_cpu ref → host_cpu record) map get_all_records (session ref)
Deprecated
host_cpu ref get_by_uuid (session ref, string)
int get_family (session ref, host_cpu ref)
string get_features (session ref, host_cpu ref)
string get_flags (session ref, host_cpu ref)
host ref get_host (session ref, host_cpu ref)
int get_model (session ref, host_cpu ref)
string get_modelname (session ref, host_cpu ref)
int get_number (session ref, host_cpu ref)
(string → string) map get_other_config (session ref, host_cpu ref)
Deprecated
host_cpu record get_record (session ref, host_cpu ref)
int get_speed (session ref, host_cpu ref)
string get_stepping (session ref, host_cpu ref)
float get_utilisation (session ref, host_cpu ref)
string get_uuid (session ref, host_cpu ref)
string get_vendor (session ref, host_cpu ref)
void remove_from_other_config (session ref, host_cpu ref, string)
void set_other_config (session ref, host_cpu ref, (string → string) map)

host_crashdump

Class: host_crashdump

Represents a host crash dump

Fields

host ref host [RO/constructor]
(string → string) map other_config [RW]
int size [RO/runtime]
datetime timestamp [RO/runtime]
string uuid [RO/runtime]

Messages

void add_to_other_config (session ref, host_crashdump ref, string, string)
void destroy (session ref, host_crashdump ref)
host_crashdump ref set get_all (session ref)
(host_crashdump ref → host_crashdump record) map get_all_records (session ref)
host_crashdump ref get_by_uuid (session ref, string)
host ref get_host (session ref, host_crashdump ref)
(string → string) map get_other_config (session ref, host_crashdump ref)
host_crashdump record get_record (session ref, host_crashdump ref)
int get_size (session ref, host_crashdump ref)
datetime get_timestamp (session ref, host_crashdump ref)
string get_uuid (session ref, host_crashdump ref)
void remove_from_other_config (session ref, host_crashdump ref, string)
void set_other_config (session ref, host_crashdump ref, (string → string) map)
void upload (session ref, host_crashdump ref, string, (string → string) map)

host_metrics

Class: host_metrics

The metrics associated with a host

Fields

datetime last_updated [RO/runtime]
bool live [RO/runtime]
Removed
int memory_free [RO/runtime]
int memory_total [RO/runtime]
(string → string) map other_config [RW]
string uuid [RO/runtime]

Messages

void add_to_other_config (session ref, host_metrics ref, string, string)
host_metrics ref set get_all (session ref)
(host_metrics ref → host_metrics record) map get_all_records (session ref)
host_metrics ref get_by_uuid (session ref, string)
datetime get_last_updated (session ref, host_metrics ref)
bool get_live (session ref, host_metrics ref)
Removed
int get_memory_free (session ref, host_metrics ref)
int get_memory_total (session ref, host_metrics ref)
(string → string) map get_other_config (session ref, host_metrics ref)
host_metrics record get_record (session ref, host_metrics ref)
string get_uuid (session ref, host_metrics ref)
void remove_from_other_config (session ref, host_metrics ref, string)
void set_other_config (session ref, host_metrics ref, (string → string) map)

host_patch

Deprecated

Class: host_patch

Represents a patch stored on a server

Fields

bool applied [RO/runtime]
host ref host [RO/constructor]
string name_description [RO/constructor]
string name_label [RO/constructor]
(string → string) map other_config [RW]
pool_patch ref pool_patch [RO/constructor]
int size [RO/runtime]
datetime timestamp_applied [RO/runtime]
string uuid [RO/runtime]
string version [RO/constructor]

Messages

void add_to_other_config (session ref, host_patch ref, string, string)
Deprecated
string apply (session ref, host_patch ref)
Deprecated
void destroy (session ref, host_patch ref)
Deprecated
host_patch ref set get_all (session ref)
Deprecated
(host_patch ref → host_patch record) map get_all_records (session ref)
bool get_applied (session ref, host_patch ref)
Deprecated
host_patch ref set get_by_name_label (session ref, string)
Deprecated
host_patch ref get_by_uuid (session ref, string)
host ref get_host (session ref, host_patch ref)
string get_name_description (session ref, host_patch ref)
string get_name_label (session ref, host_patch ref)
(string → string) map get_other_config (session ref, host_patch ref)
pool_patch ref get_pool_patch (session ref, host_patch ref)
Deprecated
host_patch record get_record (session ref, host_patch ref)
int get_size (session ref, host_patch ref)
datetime get_timestamp_applied (session ref, host_patch ref)
string get_uuid (session ref, host_patch ref)
string get_version (session ref, host_patch ref)
void remove_from_other_config (session ref, host_patch ref, string)
void set_other_config (session ref, host_patch ref, (string → string) map)

LVHD

Class: LVHD

LVHD SR specific operations

Fields

string uuid [RO/runtime]

Messages

string enable_thin_provisioning (session ref, host ref, SR ref, int, int)
LVHD ref get_by_uuid (session ref, string)
LVHD record get_record (session ref, LVHD ref)
string get_uuid (session ref, LVHD ref)

message

Class: message

An message for the attention of the administrator

Enums

cls

Fields

string body [RO/runtime]
enum cls cls [RO/runtime]
string name [RO/runtime]
string obj_uuid [RO/runtime]
int priority [RO/runtime]
datetime timestamp [RO/runtime]
string uuid [RO/runtime]

Messages

message ref create (session ref, string, int, enum cls, string, string)
void destroy (session ref, message ref)
Prototype
void destroy_many (session ref, message ref set)
(message ref → message record) map get (session ref, enum cls, string, datetime)
message ref set get_all (session ref)
(message ref → message record) map get_all_records (session ref)
(message ref → message record) map get_all_records_where (session ref, string)
message ref get_by_uuid (session ref, string)
message record get_record (session ref, message ref)
(message ref → message record) map get_since (session ref, datetime)

network

Class: network

A virtual network

Enums

network_operations
network_default_locking_mode
network_purpose

Fields

enum network_operations set allowed_operations [RO/runtime]
(VIF ref → string) map assigned_ips [RO/runtime]
(string → blob ref) map blobs [RO/runtime]
string bridge [RO/constructor]
(string → enum network_operations) map current_operations [RO/runtime]
enum network_default_locking_mode default_locking_mode [RO/runtime]
bool managed [RO/constructor]
int MTU [RW]
string name_description [RW]
string name_label [RW]
(string → string) map other_config [RW]
PIF ref set PIFs [RO/runtime]
enum network_purpose set purpose [RO/runtime]
string set tags [RW]
string uuid [RO/runtime]
VIF ref set VIFs [RO/runtime]

Messages

void add_purpose (session ref, network ref, enum network_purpose)
void add_tags (session ref, network ref, string)
void add_to_other_config (session ref, network ref, string, string)
network ref create (session ref, network record)
blob ref create_new_blob (session ref, network ref, string, string, bool)
void destroy (session ref, network ref)
network ref set get_all (session ref)
(network ref → network record) map get_all_records (session ref)
enum network_operations set get_allowed_operations (session ref, network ref)
(VIF ref → string) map get_assigned_ips (session ref, network ref)
(string → blob ref) map get_blobs (session ref, network ref)
string get_bridge (session ref, network ref)
network ref set get_by_name_label (session ref, string)
network ref get_by_uuid (session ref, string)
(string → enum network_operations) map get_current_operations (session ref, network ref)
enum network_default_locking_mode get_default_locking_mode (session ref, network ref)
bool get_managed (session ref, network ref)
int get_MTU (session ref, network ref)
string get_name_description (session ref, network ref)
string get_name_label (session ref, network ref)
(string → string) map get_other_config (session ref, network ref)
PIF ref set get_PIFs (session ref, network ref)
enum network_purpose set get_purpose (session ref, network ref)
network record get_record (session ref, network ref)
string set get_tags (session ref, network ref)
string get_uuid (session ref, network ref)
VIF ref set get_VIFs (session ref, network ref)
void remove_from_other_config (session ref, network ref, string)
void remove_purpose (session ref, network ref, enum network_purpose)
void remove_tags (session ref, network ref, string)
void set_default_locking_mode (session ref, network ref, enum network_default_locking_mode)
void set_MTU (session ref, network ref, int)
void set_name_description (session ref, network ref, string)
void set_name_label (session ref, network ref, string)
void set_other_config (session ref, network ref, (string → string) map)
void set_tags (session ref, network ref, string set)

network_sriov

Class: network_sriov

network-sriov which connects logical pif and physical pif

Enums

sriov_configuration_mode

Fields

enum sriov_configuration_mode configuration_mode [RO/runtime]
PIF ref logical_PIF [RO/constructor]
PIF ref physical_PIF [RO/constructor]
bool requires_reboot [RO/runtime]
string uuid [RO/runtime]

Messages

network_sriov ref create (session ref, PIF ref, network ref)
void destroy (session ref, network_sriov ref)
network_sriov ref set get_all (session ref)
(network_sriov ref → network_sriov record) map get_all_records (session ref)
network_sriov ref get_by_uuid (session ref, string)
enum sriov_configuration_mode get_configuration_mode (session ref, network_sriov ref)
PIF ref get_logical_PIF (session ref, network_sriov ref)
PIF ref get_physical_PIF (session ref, network_sriov ref)
network_sriov record get_record (session ref, network_sriov ref)
int get_remaining_capacity (session ref, network_sriov ref)
bool get_requires_reboot (session ref, network_sriov ref)
string get_uuid (session ref, network_sriov ref)

Observer

Prototype

Class: Observer

Describes a observer which will control observability activity in the Toolstack

Fields

Prototype
(string → string) map attributes [RO/constructor]
Prototype
string set components [RO/constructor]
Prototype
bool enabled [RO/constructor]
Prototype
string set endpoints [RO/constructor]
Prototype
host ref set hosts [RO/constructor]
string name_description [RW]
string name_label [RW]
Prototype
string uuid [RO/runtime]

Messages

Prototype
Observer ref create (session ref, Observer record)
Prototype
void destroy (session ref, Observer ref)
Prototype
Observer ref set get_all (session ref)
Prototype
(Observer ref → Observer record) map get_all_records (session ref)
Prototype
(string → string) map get_attributes (session ref, Observer ref)
Prototype
Observer ref set get_by_name_label (session ref, string)
Prototype
Observer ref get_by_uuid (session ref, string)
Prototype
string set get_components (session ref, Observer ref)
Prototype
bool get_enabled (session ref, Observer ref)
Prototype
string set get_endpoints (session ref, Observer ref)
Prototype
host ref set get_hosts (session ref, Observer ref)
string get_name_description (session ref, Observer ref)
string get_name_label (session ref, Observer ref)
Prototype
Observer record get_record (session ref, Observer ref)
Prototype
string get_uuid (session ref, Observer ref)
Prototype
void set_attributes (session ref, Observer ref, (string → string) map)
Prototype
void set_components (session ref, Observer ref, string set)
Prototype
void set_enabled (session ref, Observer ref, bool)
Prototype
void set_endpoints (session ref, Observer ref, string set)
Prototype
void set_hosts (session ref, Observer ref, host ref set)
void set_name_description (session ref, Observer ref, string)
void set_name_label (session ref, Observer ref, string)

PBD

Class: PBD

The physical block devices through which hosts access SRs

Fields

bool currently_attached [RO/runtime]
(string → string) map device_config [RO/constructor]
host ref host [RO/constructor]
(string → string) map other_config [RW]
SR ref SR [RO/constructor]
string uuid [RO/runtime]

Messages

void add_to_other_config (session ref, PBD ref, string, string)
PBD ref create (session ref, PBD record)
void destroy (session ref, PBD ref)
PBD ref set get_all (session ref)
(PBD ref → PBD record) map get_all_records (session ref)
PBD ref get_by_uuid (session ref, string)
bool get_currently_attached (session ref, PBD ref)
(string → string) map get_device_config (session ref, PBD ref)
host ref get_host (session ref, PBD ref)
(string → string) map get_other_config (session ref, PBD ref)
PBD record get_record (session ref, PBD ref)
SR ref get_SR (session ref, PBD ref)
string get_uuid (session ref, PBD ref)
void plug (session ref, PBD ref)
void remove_from_other_config (session ref, PBD ref, string)
void set_device_config (session ref, PBD ref, (string → string) map)
void set_other_config (session ref, PBD ref, (string → string) map)
void unplug (session ref, PBD ref)

PCI

Class: PCI

A PCI device

Fields

string class_name [RO/constructor]
PCI ref set dependencies [RO/runtime]
string device_name [RO/constructor]
string driver_name [RO/constructor]
host ref host [RO/constructor]
(string → string) map other_config [RW]
string pci_id [RO/constructor]
string subsystem_device_name [RO/constructor]
string subsystem_vendor_name [RO/constructor]
string uuid [RO/runtime]
string vendor_name [RO/constructor]

Messages

void add_to_other_config (session ref, PCI ref, string, string)
PCI ref set get_all (session ref)
(PCI ref → PCI record) map get_all_records (session ref)
PCI ref get_by_uuid (session ref, string)
string get_class_name (session ref, PCI ref)
PCI ref set get_dependencies (session ref, PCI ref)
string get_device_name (session ref, PCI ref)
string get_driver_name (session ref, PCI ref)
host ref get_host (session ref, PCI ref)
(string → string) map get_other_config (session ref, PCI ref)
string get_pci_id (session ref, PCI ref)
PCI record get_record (session ref, PCI ref)
string get_subsystem_device_name (session ref, PCI ref)
string get_subsystem_vendor_name (session ref, PCI ref)
string get_uuid (session ref, PCI ref)
string get_vendor_name (session ref, PCI ref)
void remove_from_other_config (session ref, PCI ref, string)
void set_other_config (session ref, PCI ref, (string → string) map)

PGPU

Class: PGPU

A physical GPU (pGPU)

Enums

pgpu_dom0_access

Fields

(string → string) map compatibility_metadata [RO/runtime]
enum pgpu_dom0_access dom0_access [RO/runtime]
VGPU_type ref set enabled_VGPU_types [RO/runtime]
GPU_group ref GPU_group [RO/constructor]
host ref host [RO/runtime]
bool is_system_display_device [RO/runtime]
(string → string) map other_config [RW]
PCI ref PCI [RO/constructor]
VGPU ref set resident_VGPUs [RO/runtime]
(VGPU_type ref → int) map supported_VGPU_max_capacities [RO/runtime]
VGPU_type ref set supported_VGPU_types [RO/runtime]
string uuid [RO/runtime]

Messages

void add_enabled_VGPU_types (session ref, PGPU ref, VGPU_type ref)
void add_to_other_config (session ref, PGPU ref, string, string)
enum pgpu_dom0_access disable_dom0_access (session ref, PGPU ref)
enum pgpu_dom0_access enable_dom0_access (session ref, PGPU ref)
PGPU ref set get_all (session ref)
(PGPU ref → PGPU record) map get_all_records (session ref)
PGPU ref get_by_uuid (session ref, string)
(string → string) map get_compatibility_metadata (session ref, PGPU ref)
enum pgpu_dom0_access get_dom0_access (session ref, PGPU ref)
VGPU_type ref set get_enabled_VGPU_types (session ref, PGPU ref)
GPU_group ref get_GPU_group (session ref, PGPU ref)
host ref get_host (session ref, PGPU ref)
bool get_is_system_display_device (session ref, PGPU ref)
(string → string) map get_other_config (session ref, PGPU ref)
PCI ref get_PCI (session ref, PGPU ref)
PGPU record get_record (session ref, PGPU ref)
int get_remaining_capacity (session ref, PGPU ref, VGPU_type ref)
VGPU ref set get_resident_VGPUs (session ref, PGPU ref)
(VGPU_type ref → int) map get_supported_VGPU_max_capacities (session ref, PGPU ref)
VGPU_type ref set get_supported_VGPU_types (session ref, PGPU ref)
string get_uuid (session ref, PGPU ref)
void remove_enabled_VGPU_types (session ref, PGPU ref, VGPU_type ref)
void remove_from_other_config (session ref, PGPU ref, string)
void set_enabled_VGPU_types (session ref, PGPU ref, VGPU_type ref set)
void set_GPU_group (session ref, PGPU ref, GPU_group ref)
void set_other_config (session ref, PGPU ref, (string → string) map)

PIF

Class: PIF

A physical network interface (note separate VLANs are represented as several PIFs)

Enums

pif_igmp_status
ip_configuration_mode
ipv6_configuration_mode
primary_address_type

Fields

Bond ref set bond_master_of [RO/runtime]
Bond ref bond_slave_of [RO/runtime]
string set capabilities [RO/runtime]
bool currently_attached [RO/runtime]
string device [RO/constructor]
bool disallow_unplug [RO/runtime]
string DNS [RO/runtime]
string gateway [RO/runtime]
host ref host [RO/constructor]
enum pif_igmp_status igmp_snooping_status [RO/runtime]
string IP [RO/runtime]
enum ip_configuration_mode ip_configuration_mode [RO/runtime]
string set IPv6 [RO/runtime]
enum ipv6_configuration_mode ipv6_configuration_mode [RO/runtime]
string ipv6_gateway [RO/runtime]
string MAC [RO/constructor]
bool managed [RO/constructor]
bool management [RO/runtime]
PIF_metrics ref metrics [RO/runtime]
int MTU [RO/constructor]
string netmask [RO/runtime]
network ref network [RO/constructor]
(string → string) map other_config [RW]
PCI ref PCI [RO/runtime]
bool physical [RO/runtime]
enum primary_address_type primary_address_type [RO/runtime]
(string → string) map properties [RO/runtime]
network_sriov ref set sriov_logical_PIF_of [RO/runtime]
network_sriov ref set sriov_physical_PIF_of [RO/runtime]
tunnel ref set tunnel_access_PIF_of [RO/runtime]
tunnel ref set tunnel_transport_PIF_of [RO/runtime]
string uuid [RO/runtime]
int VLAN [RO/constructor]
VLAN ref VLAN_master_of [RO/runtime]
VLAN ref set VLAN_slave_of [RO/runtime]

Messages

void add_to_other_config (session ref, PIF ref, string, string)
Deprecated
PIF ref create_VLAN (session ref, string, network ref, host ref, int)
void db_forget (session ref, PIF ref)
PIF ref db_introduce (session ref, string, network ref, host ref, string, int, int, bool, enum ip_configuration_mode, string, string, string, string, Bond ref, VLAN ref, bool, (string → string) map, bool, enum ipv6_configuration_mode, string set, string, enum primary_address_type, bool, (string → string) map)
Deprecated
void destroy (session ref, PIF ref)
void forget (session ref, PIF ref)
PIF ref set get_all (session ref)
(PIF ref → PIF record) map get_all_records (session ref)
Bond ref set get_bond_master_of (session ref, PIF ref)
Bond ref get_bond_slave_of (session ref, PIF ref)
PIF ref get_by_uuid (session ref, string)
string set get_capabilities (session ref, PIF ref)
bool get_currently_attached (session ref, PIF ref)
string get_device (session ref, PIF ref)
bool get_disallow_unplug (session ref, PIF ref)
string get_DNS (session ref, PIF ref)
string get_gateway (session ref, PIF ref)
host ref get_host (session ref, PIF ref)
enum pif_igmp_status get_igmp_snooping_status (session ref, PIF ref)
string get_IP (session ref, PIF ref)
enum ip_configuration_mode get_ip_configuration_mode (session ref, PIF ref)
string set get_IPv6 (session ref, PIF ref)
enum ipv6_configuration_mode get_ipv6_configuration_mode (session ref, PIF ref)
string get_ipv6_gateway (session ref, PIF ref)
string get_MAC (session ref, PIF ref)
bool get_managed (session ref, PIF ref)
bool get_management (session ref, PIF ref)
PIF_metrics ref get_metrics (session ref, PIF ref)
int get_MTU (session ref, PIF ref)
string get_netmask (session ref, PIF ref)
network ref get_network (session ref, PIF ref)
(string → string) map get_other_config (session ref, PIF ref)
PCI ref get_PCI (session ref, PIF ref)
bool get_physical (session ref, PIF ref)
enum primary_address_type get_primary_address_type (session ref, PIF ref)
(string → string) map get_properties (session ref, PIF ref)
PIF record get_record (session ref, PIF ref)
network_sriov ref set get_sriov_logical_PIF_of (session ref, PIF ref)
network_sriov ref set get_sriov_physical_PIF_of (session ref, PIF ref)
tunnel ref set get_tunnel_access_PIF_of (session ref, PIF ref)
tunnel ref set get_tunnel_transport_PIF_of (session ref, PIF ref)
string get_uuid (session ref, PIF ref)
int get_VLAN (session ref, PIF ref)
VLAN ref get_VLAN_master_of (session ref, PIF ref)
VLAN ref set get_VLAN_slave_of (session ref, PIF ref)
PIF ref introduce (session ref, host ref, string, string, bool)
void plug (session ref, PIF ref)
void reconfigure_ip (session ref, PIF ref, enum ip_configuration_mode, string, string, string, string)
void reconfigure_ipv6 (session ref, PIF ref, enum ipv6_configuration_mode, string, string, string)
void remove_from_other_config (session ref, PIF ref, string)
void scan (session ref, host ref)
void set_disallow_unplug (session ref, PIF ref, bool)
void set_other_config (session ref, PIF ref, (string → string) map)
void set_primary_address_type (session ref, PIF ref, enum primary_address_type)
void set_property (session ref, PIF ref, string, string)
void unplug (session ref, PIF ref)

PIF_metrics

Class: PIF_metrics

The metrics associated with a physical network interface

Fields

bool carrier [RO/runtime]
string device_id [RO/runtime]
string device_name [RO/runtime]
bool duplex [RO/runtime]
Removed
float io_read_kbs [RO/runtime]
Removed
float io_write_kbs [RO/runtime]
datetime last_updated [RO/runtime]
(string → string) map other_config [RW]
string pci_bus_path [RO/runtime]
int speed [RO/runtime]
string uuid [RO/runtime]
string vendor_id [RO/runtime]
string vendor_name [RO/runtime]

Messages

void add_to_other_config (session ref, PIF_metrics ref, string, string)
PIF_metrics ref set get_all (session ref)
(PIF_metrics ref → PIF_metrics record) map get_all_records (session ref)
PIF_metrics ref get_by_uuid (session ref, string)
bool get_carrier (session ref, PIF_metrics ref)
string get_device_id (session ref, PIF_metrics ref)
string get_device_name (session ref, PIF_metrics ref)
bool get_duplex (session ref, PIF_metrics ref)
Removed
float get_io_read_kbs (session ref, PIF_metrics ref)
Removed
float get_io_write_kbs (session ref, PIF_metrics ref)
datetime get_last_updated (session ref, PIF_metrics ref)
(string → string) map get_other_config (session ref, PIF_metrics ref)
string get_pci_bus_path (session ref, PIF_metrics ref)
PIF_metrics record get_record (session ref, PIF_metrics ref)
int get_speed (session ref, PIF_metrics ref)
string get_uuid (session ref, PIF_metrics ref)
string get_vendor_id (session ref, PIF_metrics ref)
string get_vendor_name (session ref, PIF_metrics ref)
void remove_from_other_config (session ref, PIF_metrics ref, string)
void set_other_config (session ref, PIF_metrics ref, (string → string) map)

pool

Class: pool

Pool-wide information

Enums

pool_allowed_operations
telemetry_frequency
update_sync_frequency

Fields

enum pool_allowed_operations set allowed_operations [RO/runtime]
(string → blob ref) map blobs [RO/runtime]
bool client_certificate_auth_enabled [RO/runtime]
string client_certificate_auth_name [RO/runtime]
bool coordinator_bias [RW]
(string → string) map cpu_info [RO/runtime]
SR ref crash_dump_SR [RW]
(string → enum pool_allowed_operations) map current_operations [RO/runtime]
Prototype
string custom_uefi_certificates [RO/constructor]
SR ref default_SR [RW]
Prototype
int ext_auth_max_threads [RO/constructor]
(string → string) map guest_agent_config [RO/runtime]
(string → string) map gui_config [RW]
bool ha_allow_overcommit [RW]
string ha_cluster_stack [RO/runtime]
(string → string) map ha_configuration [RO/runtime]
bool ha_enabled [RO/runtime]
int ha_host_failures_to_tolerate [RO/runtime]
bool ha_overcommitted [RO/runtime]
int ha_plan_exists_for [RO/runtime]
string set ha_statefiles [RO/runtime]
(string → string) map health_check_config [RW]
bool igmp_snooping_enabled [RO/runtime]
bool is_psr_pending [RW]
Prototype
datetime last_update_sync [RO/runtime]
bool live_patching_disabled [RW]
Prototype
int local_auth_max_threads [RO/constructor]
host ref master [RO/runtime]
VDI ref set metadata_VDIs [RO/runtime]
Prototype
bool migration_compression [RW]
string name_description [RW]
string name_label [RW]
(string → string) map other_config [RW]
bool policy_no_vendor_device [RW]
bool redo_log_enabled [RO/runtime]
VDI ref redo_log_vdi [RO/runtime]
Repository ref set repositories [RO/runtime]
secret ref repository_proxy_password [RO/runtime]
string repository_proxy_url [RO/runtime]
string repository_proxy_username [RO/runtime]
(string → string) map restrictions [RO/runtime]
SR ref suspend_image_SR [RW]
string set tags [RW]
Prototype
enum telemetry_frequency telemetry_frequency [RO/runtime]
Prototype
datetime telemetry_next_collection [RO/runtime]
Prototype
secret ref telemetry_uuid [RO/runtime]
bool tls_verification_enabled [RO/runtime]
string uefi_certificates [RO/constructor]
Prototype
int update_sync_day [RO/runtime]
Prototype
bool update_sync_enabled [RO/runtime]
Prototype
enum update_sync_frequency update_sync_frequency [RO/runtime]
string uuid [RO/runtime]
Deprecated
string vswitch_controller [RO/runtime]
bool wlb_enabled [RW]
string wlb_url [RO/runtime]
string wlb_username [RO/runtime]
Deprecated
bool wlb_verify_cert [RW]

Messages

void add_repository (session ref, pool ref, Repository ref)
void add_tags (session ref, pool ref, string)
void add_to_guest_agent_config (session ref, pool ref, string, string)
void add_to_gui_config (session ref, pool ref, string, string)
void add_to_health_check_config (session ref, pool ref, string, string)
void add_to_other_config (session ref, pool ref, string, string)
void apply_edition (session ref, pool ref, string)
Deprecated
void certificate_install (session ref, string, string)
Deprecated
string set certificate_list (session ref)
void certificate_sync (session ref)
Deprecated
void certificate_uninstall (session ref, string)
string set set check_update_readiness (session ref, pool ref, bool)
void configure_repository_proxy (session ref, pool ref, string, string, string)
Prototype
void configure_update_sync (session ref, pool ref, enum update_sync_frequency, int)
blob ref create_new_blob (session ref, pool ref, string, string, bool)
PIF ref set create_VLAN (session ref, string, network ref, int)
PIF ref set create_VLAN_from_PIF (session ref, PIF ref, network ref, int)
void crl_install (session ref, string, string)
string set crl_list (session ref)
void crl_uninstall (session ref, string)
void deconfigure_wlb (session ref)
void designate_new_master (session ref, host ref)
void detect_nonhomogeneous_external_auth (session ref, pool ref)
void disable_client_certificate_auth (session ref, pool ref)
void disable_external_auth (session ref, pool ref, (string → string) map)
void disable_ha (session ref)
void disable_local_storage_caching (session ref, pool ref)
void disable_redo_log (session ref)
void disable_repository_proxy (session ref, pool ref)
Deprecated
void disable_ssl_legacy (session ref, pool ref)
void eject (session ref, host ref)
void emergency_reset_master (session ref, string)
void emergency_transition_to_master (session ref)
void enable_client_certificate_auth (session ref, pool ref, string)
void enable_external_auth (session ref, pool ref, (string → string) map, string, string)
void enable_ha (session ref, SR ref set, (string → string) map)
void enable_local_storage_caching (session ref, pool ref)
void enable_redo_log (session ref, SR ref)
Removed
void enable_ssl_legacy (session ref, pool ref)
void enable_tls_verification (session ref)
pool ref set get_all (session ref)
(pool ref → pool record) map get_all_records (session ref)
enum pool_allowed_operations set get_allowed_operations (session ref, pool ref)
(string → blob ref) map get_blobs (session ref, pool ref)
pool ref get_by_uuid (session ref, string)
bool get_client_certificate_auth_enabled (session ref, pool ref)
string get_client_certificate_auth_name (session ref, pool ref)
bool get_coordinator_bias (session ref, pool ref)
(string → string) map get_cpu_info (session ref, pool ref)
SR ref get_crash_dump_SR (session ref, pool ref)
(string → enum pool_allowed_operations) map get_current_operations (session ref, pool ref)
Prototype
string get_custom_uefi_certificates (session ref, pool ref)
SR ref get_default_SR (session ref, pool ref)
Prototype
int get_ext_auth_max_threads (session ref, pool ref)
(string → string) map get_guest_agent_config (session ref, pool ref)
(string → string) map get_gui_config (session ref, pool ref)
bool get_ha_allow_overcommit (session ref, pool ref)
string get_ha_cluster_stack (session ref, pool ref)
(string → string) map get_ha_configuration (session ref, pool ref)
bool get_ha_enabled (session ref, pool ref)
int get_ha_host_failures_to_tolerate (session ref, pool ref)
bool get_ha_overcommitted (session ref, pool ref)
int get_ha_plan_exists_for (session ref, pool ref)
string set get_ha_statefiles (session ref, pool ref)
(string → string) map get_health_check_config (session ref, pool ref)
bool get_igmp_snooping_enabled (session ref, pool ref)
bool get_is_psr_pending (session ref, pool ref)
Prototype
datetime get_last_update_sync (session ref, pool ref)
(string → string) map get_license_state (session ref, pool ref)
bool get_live_patching_disabled (session ref, pool ref)
Prototype
int get_local_auth_max_threads (session ref, pool ref)
host ref get_master (session ref, pool ref)
VDI ref set get_metadata_VDIs (session ref, pool ref)
Prototype
bool get_migration_compression (session ref, pool ref)
string get_name_description (session ref, pool ref)
string get_name_label (session ref, pool ref)
(string → string) map get_other_config (session ref, pool ref)
bool get_policy_no_vendor_device (session ref, pool ref)
pool record get_record (session ref, pool ref)
bool get_redo_log_enabled (session ref, pool ref)
VDI ref get_redo_log_vdi (session ref, pool ref)
Repository ref set get_repositories (session ref, pool ref)
secret ref get_repository_proxy_password (session ref, pool ref)
string get_repository_proxy_url (session ref, pool ref)
string get_repository_proxy_username (session ref, pool ref)
(string → string) map get_restrictions (session ref, pool ref)
SR ref get_suspend_image_SR (session ref, pool ref)
string set get_tags (session ref, pool ref)
Prototype
enum telemetry_frequency get_telemetry_frequency (session ref, pool ref)
Prototype
datetime get_telemetry_next_collection (session ref, pool ref)
Prototype
secret ref get_telemetry_uuid (session ref, pool ref)
bool get_tls_verification_enabled (session ref, pool ref)
string get_uefi_certificates (session ref, pool ref)
Prototype
int get_update_sync_day (session ref, pool ref)
Prototype
bool get_update_sync_enabled (session ref, pool ref)
Prototype
enum update_sync_frequency get_update_sync_frequency (session ref, pool ref)
string get_uuid (session ref, pool ref)
Deprecated
string get_vswitch_controller (session ref, pool ref)
bool get_wlb_enabled (session ref, pool ref)
string get_wlb_url (session ref, pool ref)
string get_wlb_username (session ref, pool ref)
Deprecated
bool get_wlb_verify_cert (session ref, pool ref)
int ha_compute_hypothetical_max_host_failures_to_tolerate (session ref, (VM ref → string) map)
int ha_compute_max_host_failures_to_tolerate (session ref)
(VM ref → (string → string) map) map ha_compute_vm_failover_plan (session ref, host ref set, VM ref set)
bool ha_failover_plan_exists (session ref, int)
void ha_prevent_restarts_for (session ref, int)
bool has_extension (session ref, pool ref, string)
void initialize_wlb (session ref, string, string, string, string, string)
void install_ca_certificate (session ref, string, string)
void join (session ref, string, string, string)
void join_force (session ref, string, string, string)
void management_reconfigure (session ref, network ref)
host ref set recover_slaves (session ref)
void remove_from_guest_agent_config (session ref, pool ref, string)
void remove_from_gui_config (session ref, pool ref, string)
void remove_from_health_check_config (session ref, pool ref, string)
void remove_from_other_config (session ref, pool ref, string)
void remove_repository (session ref, pool ref, Repository ref)
void remove_tags (session ref, pool ref, string)
Prototype
void reset_telemetry_uuid (session ref, pool ref)
(string → string) map retrieve_wlb_configuration (session ref)
(VM ref → string set) map retrieve_wlb_recommendations (session ref)
void rotate_secret (session ref)
string send_test_post (session ref, string, int, string)
void send_wlb_configuration (session ref, (string → string) map)
void set_coordinator_bias (session ref, pool ref, bool)
void set_crash_dump_SR (session ref, pool ref, SR ref)
Prototype
void set_custom_uefi_certificates (session ref, pool ref, string)
void set_default_SR (session ref, pool ref, SR ref)
Prototype
void set_ext_auth_max_threads (session ref, pool ref, int)
void set_gui_config (session ref, pool ref, (string → string) map)
void set_ha_allow_overcommit (session ref, pool ref, bool)
void set_ha_host_failures_to_tolerate (session ref, pool ref, int)
void set_health_check_config (session ref, pool ref, (string → string) map)
Prototype
void set_https_only (session ref, pool ref, bool)
void set_igmp_snooping_enabled (session ref, pool ref, bool)
void set_is_psr_pending (session ref, pool ref, bool)
void set_live_patching_disabled (session ref, pool ref, bool)
Prototype
void set_local_auth_max_threads (session ref, pool ref, int)
Prototype
void set_migration_compression (session ref, pool ref, bool)
void set_name_description (session ref, pool ref, string)
void set_name_label (session ref, pool ref, string)
void set_other_config (session ref, pool ref, (string → string) map)
void set_policy_no_vendor_device (session ref, pool ref, bool)
void set_repositories (session ref, pool ref, Repository ref set)
void set_suspend_image_SR (session ref, pool ref, SR ref)
void set_tags (session ref, pool ref, string set)
Prototype
void set_telemetry_next_collection (session ref, pool ref, datetime)
Deprecated
void set_uefi_certificates (session ref, pool ref, string)
Prototype
void set_update_sync_enabled (session ref, pool ref, bool)
Deprecated
void set_vswitch_controller (session ref, string)
void set_wlb_enabled (session ref, pool ref, bool)
Deprecated
void set_wlb_verify_cert (session ref, pool ref, bool)
void sync_database (session ref)
string sync_updates (session ref, pool ref, bool, string, string)
string test_archive_target (session ref, pool ref, (string → string) map)
void uninstall_ca_certificate (session ref, string)

pool_patch

Deprecated

Class: pool_patch

Pool-wide patches

Enums

after_apply_guidance

Fields

enum after_apply_guidance set after_apply_guidance [RO/runtime]
host_patch ref set host_patches [RO/runtime]
string name_description [RO/constructor]
string name_label [RO/constructor]
(string → string) map other_config [RW]
bool pool_applied [RO/runtime]
pool_update ref pool_update [RO/constructor]
int size [RO/runtime]
string uuid [RO/runtime]
string version [RO/constructor]

Messages

void add_to_other_config (session ref, pool_patch ref, string, string)
Deprecated
string apply (session ref, pool_patch ref, host ref)
Deprecated
void clean (session ref, pool_patch ref)
Deprecated
void clean_on_host (session ref, pool_patch ref, host ref)
Deprecated
void destroy (session ref, pool_patch ref)
enum after_apply_guidance set get_after_apply_guidance (session ref, pool_patch ref)
Deprecated
pool_patch ref set get_all (session ref)
Deprecated
(pool_patch ref → pool_patch record) map get_all_records (session ref)
Deprecated
pool_patch ref set get_by_name_label (session ref, string)
Deprecated
pool_patch ref get_by_uuid (session ref, string)
host_patch ref set get_host_patches (session ref, pool_patch ref)
string get_name_description (session ref, pool_patch ref)
string get_name_label (session ref, pool_patch ref)
(string → string) map get_other_config (session ref, pool_patch ref)
bool get_pool_applied (session ref, pool_patch ref)
pool_update ref get_pool_update (session ref, pool_patch ref)
Deprecated
pool_patch record get_record (session ref, pool_patch ref)
int get_size (session ref, pool_patch ref)
string get_uuid (session ref, pool_patch ref)
string get_version (session ref, pool_patch ref)
Deprecated
void pool_apply (session ref, pool_patch ref)
Deprecated
void pool_clean (session ref, pool_patch ref)
Deprecated
string precheck (session ref, pool_patch ref, host ref)
void remove_from_other_config (session ref, pool_patch ref, string)
void set_other_config (session ref, pool_patch ref, (string → string) map)

pool_update

Class: pool_update

Pool-wide updates to the host software

Enums

update_after_apply_guidance
livepatch_status

Fields

enum update_after_apply_guidance set after_apply_guidance [RO/constructor]
bool enforce_homogeneity [RO/constructor]
host ref set hosts [RO/runtime]
int installation_size [RO/constructor]
string key [RO/constructor]
string name_description [RO/constructor]
string name_label [RO/constructor]
(string → string) map other_config [RW]
string uuid [RO/runtime]
VDI ref vdi [RO/constructor]
string version [RO/constructor]

Messages

void add_to_other_config (session ref, pool_update ref, string, string)
void apply (session ref, pool_update ref, host ref)
void destroy (session ref, pool_update ref)
enum update_after_apply_guidance set get_after_apply_guidance (session ref, pool_update ref)
pool_update ref set get_all (session ref)
(pool_update ref → pool_update record) map get_all_records (session ref)
pool_update ref set get_by_name_label (session ref, string)
pool_update ref get_by_uuid (session ref, string)
bool get_enforce_homogeneity (session ref, pool_update ref)
host ref set get_hosts (session ref, pool_update ref)
int get_installation_size (session ref, pool_update ref)
string get_key (session ref, pool_update ref)
string get_name_description (session ref, pool_update ref)
string get_name_label (session ref, pool_update ref)
(string → string) map get_other_config (session ref, pool_update ref)
pool_update record get_record (session ref, pool_update ref)
string get_uuid (session ref, pool_update ref)
VDI ref get_vdi (session ref, pool_update ref)
string get_version (session ref, pool_update ref)
pool_update ref introduce (session ref, VDI ref)
void pool_apply (session ref, pool_update ref)
void pool_clean (session ref, pool_update ref)
enum livepatch_status precheck (session ref, pool_update ref, host ref)
void remove_from_other_config (session ref, pool_update ref, string)
void set_other_config (session ref, pool_update ref, (string → string) map)

probe_result

Class: probe_result

A set of properties that describe one result element of SR.probe. Result elements and properties can change dynamically based on changes to the the SR.probe input-parameters or the target.

Fields

bool complete [RO/runtime]
(string → string) map configuration [RO/runtime]
(string → string) map extra_info [RO/runtime]
sr_stat record option sr [RO/runtime]

Messages

PUSB

Class: PUSB

A physical USB device

Fields

string description [RO/constructor]
host ref host [RO/constructor]
(string → string) map other_config [RW]
bool passthrough_enabled [RO/runtime]
string path [RO/constructor]
string product_desc [RO/constructor]
string product_id [RO/constructor]
string serial [RO/constructor]
float speed [RO/constructor]
USB_group ref USB_group [RO/constructor]
string uuid [RO/runtime]
string vendor_desc [RO/constructor]
string vendor_id [RO/constructor]
string version [RO/constructor]

Messages

void add_to_other_config (session ref, PUSB ref, string, string)
PUSB ref set get_all (session ref)
(PUSB ref → PUSB record) map get_all_records (session ref)
PUSB ref get_by_uuid (session ref, string)
string get_description (session ref, PUSB ref)
host ref get_host (session ref, PUSB ref)
(string → string) map get_other_config (session ref, PUSB ref)
bool get_passthrough_enabled (session ref, PUSB ref)
string get_path (session ref, PUSB ref)
string get_product_desc (session ref, PUSB ref)
string get_product_id (session ref, PUSB ref)
PUSB record get_record (session ref, PUSB ref)
string get_serial (session ref, PUSB ref)
float get_speed (session ref, PUSB ref)
USB_group ref get_USB_group (session ref, PUSB ref)
string get_uuid (session ref, PUSB ref)
string get_vendor_desc (session ref, PUSB ref)
string get_vendor_id (session ref, PUSB ref)
string get_version (session ref, PUSB ref)
void remove_from_other_config (session ref, PUSB ref, string)
void scan (session ref, host ref)
void set_other_config (session ref, PUSB ref, (string → string) map)
void set_passthrough_enabled (session ref, PUSB ref, bool)

PVS_cache_storage

Class: PVS_cache_storage

Describes the storage that is available to a PVS site for caching purposes

Fields

host ref host [RO/constructor]
PVS_site ref site [RO/constructor]
int size [RO/constructor]
SR ref SR [RO/constructor]
string uuid [RO/runtime]
VDI ref VDI [RO/runtime]

Messages

PVS_cache_storage ref create (session ref, PVS_cache_storage record)
void destroy (session ref, PVS_cache_storage ref)
PVS_cache_storage ref set get_all (session ref)
(PVS_cache_storage ref → PVS_cache_storage record) map get_all_records (session ref)
PVS_cache_storage ref get_by_uuid (session ref, string)
host ref get_host (session ref, PVS_cache_storage ref)
PVS_cache_storage record get_record (session ref, PVS_cache_storage ref)
PVS_site ref get_site (session ref, PVS_cache_storage ref)
int get_size (session ref, PVS_cache_storage ref)
SR ref get_SR (session ref, PVS_cache_storage ref)
string get_uuid (session ref, PVS_cache_storage ref)
VDI ref get_VDI (session ref, PVS_cache_storage ref)

PVS_proxy

Class: PVS_proxy

a proxy connects a VM/VIF with a PVS site

Enums

pvs_proxy_status

Fields

bool currently_attached [RO/runtime]
PVS_site ref site [RO/constructor]
enum pvs_proxy_status status [RO/runtime]
string uuid [RO/runtime]
VIF ref VIF [RO/constructor]

Messages

PVS_proxy ref create (session ref, PVS_site ref, VIF ref)
void destroy (session ref, PVS_proxy ref)
PVS_proxy ref set get_all (session ref)
(PVS_proxy ref → PVS_proxy record) map get_all_records (session ref)
PVS_proxy ref get_by_uuid (session ref, string)
bool get_currently_attached (session ref, PVS_proxy ref)
PVS_proxy record get_record (session ref, PVS_proxy ref)
PVS_site ref get_site (session ref, PVS_proxy ref)
enum pvs_proxy_status get_status (session ref, PVS_proxy ref)
string get_uuid (session ref, PVS_proxy ref)
VIF ref get_VIF (session ref, PVS_proxy ref)

PVS_server

Class: PVS_server

individual machine serving provisioning (block) data

Fields

string set addresses [RO/constructor]
int first_port [RO/constructor]
int last_port [RO/constructor]
PVS_site ref site [RO/constructor]
string uuid [RO/runtime]

Messages

void forget (session ref, PVS_server ref)
string set get_addresses (session ref, PVS_server ref)
PVS_server ref set get_all (session ref)
(PVS_server ref → PVS_server record) map get_all_records (session ref)
PVS_server ref get_by_uuid (session ref, string)
int get_first_port (session ref, PVS_server ref)
int get_last_port (session ref, PVS_server ref)
PVS_server record get_record (session ref, PVS_server ref)
PVS_site ref get_site (session ref, PVS_server ref)
string get_uuid (session ref, PVS_server ref)
PVS_server ref introduce (session ref, string set, int, int, PVS_site ref)

PVS_site

Class: PVS_site

machines serving blocks of data for provisioning VMs

Fields

PVS_cache_storage ref set cache_storage [RO/runtime]
string name_description [RW]
string name_label [RW]
PVS_proxy ref set proxies [RO/runtime]
string PVS_uuid [RO/constructor]
PVS_server ref set servers [RO/runtime]
string uuid [RO/runtime]

Messages

void forget (session ref, PVS_site ref)
PVS_site ref set get_all (session ref)
(PVS_site ref → PVS_site record) map get_all_records (session ref)
PVS_site ref set get_by_name_label (session ref, string)
PVS_site ref get_by_uuid (session ref, string)
PVS_cache_storage ref set get_cache_storage (session ref, PVS_site ref)
string get_name_description (session ref, PVS_site ref)
string get_name_label (session ref, PVS_site ref)
PVS_proxy ref set get_proxies (session ref, PVS_site ref)
string get_PVS_uuid (session ref, PVS_site ref)
PVS_site record get_record (session ref, PVS_site ref)
PVS_server ref set get_servers (session ref, PVS_site ref)
string get_uuid (session ref, PVS_site ref)
PVS_site ref introduce (session ref, string, string, string)
void set_name_description (session ref, PVS_site ref, string)
void set_name_label (session ref, PVS_site ref, string)
void set_PVS_uuid (session ref, PVS_site ref, string)

Repository

Class: Repository

Repository for updates

Fields

string binary_url [RO/constructor]
Prototype
string gpgkey_path [RO/constructor]
string hash [RO/runtime]
string name_description [RW]
string name_label [RW]
string source_url [RO/constructor]
Removed
bool up_to_date [RO/runtime]
bool update [RO/constructor]
string uuid [RO/runtime]

Messages

void forget (session ref, Repository ref)
Repository ref set get_all (session ref)
(Repository ref → Repository record) map get_all_records (session ref)
string get_binary_url (session ref, Repository ref)
Repository ref set get_by_name_label (session ref, string)
Repository ref get_by_uuid (session ref, string)
Prototype
string get_gpgkey_path (session ref, Repository ref)
string get_hash (session ref, Repository ref)
string get_name_description (session ref, Repository ref)
string get_name_label (session ref, Repository ref)
Repository record get_record (session ref, Repository ref)
string get_source_url (session ref, Repository ref)
Removed
bool get_up_to_date (session ref, Repository ref)
bool get_update (session ref, Repository ref)
string get_uuid (session ref, Repository ref)
Repository ref introduce (session ref, string, string, string, string, bool, string)
Prototype
void set_gpgkey_path (session ref, Repository ref, string)
void set_name_description (session ref, Repository ref, string)
void set_name_label (session ref, Repository ref, string)

role

Class: role

A set of permissions associated with a subject

Fields

bool is_internal [RO/runtime]
string name_description [RO/constructor]
string name_label [RO/constructor]
role ref set subroles [RO/constructor]
string uuid [RO/runtime]

Messages

role ref set get_all (session ref)
(role ref → role record) map get_all_records (session ref)
role ref set get_by_name_label (session ref, string)
role ref set get_by_permission (session ref, role ref)
role ref set get_by_permission_name_label (session ref, string)
role ref get_by_uuid (session ref, string)
bool get_is_internal (session ref, role ref)
string get_name_description (session ref, role ref)
string get_name_label (session ref, role ref)
role ref set get_permissions (session ref, role ref)
string set get_permissions_name_label (session ref, role ref)
role record get_record (session ref, role ref)
role ref set get_subroles (session ref, role ref)
string get_uuid (session ref, role ref)

SDN_controller

Class: SDN_controller

Describes the SDN controller that is to connect with the pool

Enums

sdn_controller_protocol

Fields

string address [RO/constructor]
int port [RO/constructor]
enum sdn_controller_protocol protocol [RO/constructor]
string uuid [RO/runtime]

Messages

void forget (session ref, SDN_controller ref)
string get_address (session ref, SDN_controller ref)
SDN_controller ref set get_all (session ref)
(SDN_controller ref → SDN_controller record) map get_all_records (session ref)
SDN_controller ref get_by_uuid (session ref, string)
int get_port (session ref, SDN_controller ref)
enum sdn_controller_protocol get_protocol (session ref, SDN_controller ref)
SDN_controller record get_record (session ref, SDN_controller ref)
string get_uuid (session ref, SDN_controller ref)
SDN_controller ref introduce (session ref, enum sdn_controller_protocol, string, int)

secret

Class: secret

A secret

Fields

(string → string) map other_config [RW]
string uuid [RO/runtime]
string value [RW]

Messages

void add_to_other_config (session ref, secret ref, string, string)
secret ref create (session ref, secret record)
void destroy (session ref, secret ref)
secret ref set get_all (session ref)
(secret ref → secret record) map get_all_records (session ref)
secret ref get_by_uuid (session ref, string)
(string → string) map get_other_config (session ref, secret ref)
secret record get_record (session ref, secret ref)
string get_uuid (session ref, secret ref)
string get_value (session ref, secret ref)
void remove_from_other_config (session ref, secret ref, string)
void set_other_config (session ref, secret ref, (string → string) map)
void set_value (session ref, secret ref, string)

session

Class: session

A session

Fields

string auth_user_name [RO/runtime]
string auth_user_sid [RO/runtime]
bool client_certificate [RO/runtime]
bool is_local_superuser [RO/runtime]
datetime last_active [RO/runtime]
string originator [RO/runtime]
(string → string) map other_config [RW]
session ref parent [RO/constructor]
bool pool [RO/runtime]
string set rbac_permissions [RO/constructor]
subject ref subject [RO/runtime]
task ref set tasks [RO/runtime]
host ref this_host [RO/runtime]
user ref this_user [RO/runtime]
string uuid [RO/runtime]
datetime validation_time [RO/runtime]

Messages

void add_to_other_config (session ref, session ref, string, string)
void change_password (session ref, string, string)
session ref create_from_db_file (session ref, string)
string set get_all_subject_identifiers (session ref)
string get_auth_user_name (session ref, session ref)
string get_auth_user_sid (session ref, session ref)
session ref get_by_uuid (session ref, string)
bool get_client_certificate (session ref, session ref)
bool get_is_local_superuser (session ref, session ref)
datetime get_last_active (session ref, session ref)
string get_originator (session ref, session ref)
(string → string) map get_other_config (session ref, session ref)
session ref get_parent (session ref, session ref)
bool get_pool (session ref, session ref)
string set get_rbac_permissions (session ref, session ref)
session record get_record (session ref, session ref)
subject ref get_subject (session ref, session ref)
task ref set get_tasks (session ref, session ref)
host ref get_this_host (session ref, session ref)
user ref get_this_user (session ref, session ref)
string get_uuid (session ref, session ref)
datetime get_validation_time (session ref, session ref)
void local_logout (session ref)
session ref login_with_password (string, string, string, string)
void logout (session ref)
void logout_subject_identifier (session ref, string)
void remove_from_other_config (session ref, session ref, string)
void set_other_config (session ref, session ref, (string → string) map)
session ref slave_local_login_with_password (string, string)

SM

Class: SM

A storage manager plugin

Fields

Deprecated
string set capabilities [RO/runtime]
(string → string) map configuration [RO/runtime]
string copyright [RO/runtime]
string driver_filename [RO/runtime]
(string → int) map features [RO/runtime]
string name_description [RO/runtime]
string name_label [RO/runtime]
(string → string) map other_config [RW]
string required_api_version [RO/runtime]
string set required_cluster_stack [RO/runtime]
string type [RO/runtime]
string uuid [RO/runtime]
string vendor [RO/runtime]
string version [RO/runtime]

Messages

void add_to_other_config (session ref, SM ref, string, string)
SM ref set get_all (session ref)
(SM ref → SM record) map get_all_records (session ref)
SM ref set get_by_name_label (session ref, string)
SM ref get_by_uuid (session ref, string)
Deprecated
string set get_capabilities (session ref, SM ref)
(string → string) map get_configuration (session ref, SM ref)
string get_copyright (session ref, SM ref)
string get_driver_filename (session ref, SM ref)
(string → int) map get_features (session ref, SM ref)
string get_name_description (session ref, SM ref)
string get_name_label (session ref, SM ref)
(string → string) map get_other_config (session ref, SM ref)
SM record get_record (session ref, SM ref)
string get_required_api_version (session ref, SM ref)
string set get_required_cluster_stack (session ref, SM ref)
string get_type (session ref, SM ref)
string get_uuid (session ref, SM ref)
string get_vendor (session ref, SM ref)
string get_version (session ref, SM ref)
void remove_from_other_config (session ref, SM ref, string)
void set_other_config (session ref, SM ref, (string → string) map)

SR

Class: SR

A storage repository

Enums

storage_operations

Fields

enum storage_operations set allowed_operations [RO/runtime]
(string → blob ref) map blobs [RO/runtime]
bool clustered [RO/runtime]
string content_type [RO/constructor]
(string → enum storage_operations) map current_operations [RO/runtime]
DR_task ref introduced_by [RO/runtime]
bool is_tools_sr [RO/runtime]
bool local_cache_enabled [RO/runtime]
string name_description [RO/constructor]
string name_label [RO/constructor]
(string → string) map other_config [RW]
PBD ref set PBDs [RO/runtime]
int physical_size [RO/constructor]
int physical_utilisation [RO/runtime]
bool shared [RO/runtime]
(string → string) map sm_config [RW]
string set tags [RW]
string type [RO/constructor]
string uuid [RO/runtime]
VDI ref set VDIs [RO/runtime]
int virtual_allocation [RO/runtime]

Messages

void add_tags (session ref, SR ref, string)
void add_to_other_config (session ref, SR ref, string, string)
void add_to_sm_config (session ref, SR ref, string, string)
void assert_can_host_ha_statefile (session ref, SR ref)
void assert_supports_database_replication (session ref, SR ref)
SR ref create (session ref, host ref, (string → string) map, int, string, string, string, string, bool, (string → string) map)
blob ref create_new_blob (session ref, SR ref, string, string, bool)
void destroy (session ref, SR ref)
void disable_database_replication (session ref, SR ref)
void enable_database_replication (session ref, SR ref)
void forget (session ref, SR ref)
void forget_data_source_archives (session ref, SR ref, string)
SR ref set get_all (session ref)
(SR ref → SR record) map get_all_records (session ref)
enum storage_operations set get_allowed_operations (session ref, SR ref)
(string → blob ref) map get_blobs (session ref, SR ref)
SR ref set get_by_name_label (session ref, string)
SR ref get_by_uuid (session ref, string)
bool get_clustered (session ref, SR ref)
string get_content_type (session ref, SR ref)
(string → enum storage_operations) map get_current_operations (session ref, SR ref)
data_source record set get_data_sources (session ref, SR ref)
DR_task ref get_introduced_by (session ref, SR ref)
bool get_is_tools_sr (session ref, SR ref)
bool get_local_cache_enabled (session ref, SR ref)
string get_name_description (session ref, SR ref)
string get_name_label (session ref, SR ref)
(string → string) map get_other_config (session ref, SR ref)
PBD ref set get_PBDs (session ref, SR ref)
int get_physical_size (session ref, SR ref)
int get_physical_utilisation (session ref, SR ref)
SR record get_record (session ref, SR ref)
bool get_shared (session ref, SR ref)
(string → string) map get_sm_config (session ref, SR ref)
string set get_supported_types (session ref)
string set get_tags (session ref, SR ref)
string get_type (session ref, SR ref)
string get_uuid (session ref, SR ref)
VDI ref set get_VDIs (session ref, SR ref)
int get_virtual_allocation (session ref, SR ref)
SR ref introduce (session ref, string, string, string, string, string, bool, (string → string) map)
Deprecated
string make (session ref, host ref, (string → string) map, int, string, string, string, string, (string → string) map)
string probe (session ref, host ref, (string → string) map, string, (string → string) map)
probe_result record set probe_ext (session ref, host ref, (string → string) map, string, (string → string) map)
float query_data_source (session ref, SR ref, string)
void record_data_source (session ref, SR ref, string)
void remove_from_other_config (session ref, SR ref, string)
void remove_from_sm_config (session ref, SR ref, string)
void remove_tags (session ref, SR ref, string)
void scan (session ref, SR ref)
void set_name_description (session ref, SR ref, string)
void set_name_label (session ref, SR ref, string)
void set_other_config (session ref, SR ref, (string → string) map)
void set_physical_size (session ref, SR ref, int)
void set_shared (session ref, SR ref, bool)
void set_sm_config (session ref, SR ref, (string → string) map)
void set_tags (session ref, SR ref, string set)
void update (session ref, SR ref)

sr_stat

Class: sr_stat

A set of high-level properties associated with an SR.

Enums

sr_health

Fields

bool clustered [RO/runtime]
int free_space [RO/runtime]
enum sr_health health [RO/runtime]
string name_description [RO/runtime]
string name_label [RO/runtime]
int total_space [RO/runtime]
string option uuid [RO/runtime]

Messages

subject

Class: subject

A user or group that can log in xapi

Fields

(string → string) map other_config [RO/constructor]
role ref set roles [RO/runtime]
string subject_identifier [RO/constructor]
string uuid [RO/runtime]

Messages

void add_to_roles (session ref, subject ref, role ref)
subject ref create (session ref, subject record)
void destroy (session ref, subject ref)
subject ref set get_all (session ref)
(subject ref → subject record) map get_all_records (session ref)
subject ref get_by_uuid (session ref, string)
(string → string) map get_other_config (session ref, subject ref)
string set get_permissions_name_label (session ref, subject ref)
subject record get_record (session ref, subject ref)
role ref set get_roles (session ref, subject ref)
string get_subject_identifier (session ref, subject ref)
string get_uuid (session ref, subject ref)
void remove_from_roles (session ref, subject ref, role ref)

task

Class: task

A long-running asynchronous task

Enums

task_allowed_operations
task_status_type

Fields

enum task_allowed_operations set allowed_operations [RO/runtime]
string backtrace [RO/runtime]
datetime created [RO/runtime]
(string → enum task_allowed_operations) map current_operations [RO/runtime]
string set error_info [RO/runtime]
datetime finished [RO/runtime]
string name_description [RO/runtime]
string name_label [RO/runtime]
(string → string) map other_config [RW]
float progress [RO/runtime]
host ref resident_on [RO/runtime]
string result [RO/runtime]
enum task_status_type status [RO/runtime]
task ref subtask_of [RO/runtime]
task ref set subtasks [RO/runtime]
string type [RO/runtime]
string uuid [RO/runtime]

Messages

void add_to_other_config (session ref, task ref, string, string)
void cancel (session ref, task ref)
task ref create (session ref, string, string)
void destroy (session ref, task ref)
task ref set get_all (session ref)
(task ref → task record) map get_all_records (session ref)
enum task_allowed_operations set get_allowed_operations (session ref, task ref)
string get_backtrace (session ref, task ref)
task ref set get_by_name_label (session ref, string)
task ref get_by_uuid (session ref, string)
datetime get_created (session ref, task ref)
(string → enum task_allowed_operations) map get_current_operations (session ref, task ref)
string set get_error_info (session ref, task ref)
datetime get_finished (session ref, task ref)
string get_name_description (session ref, task ref)
string get_name_label (session ref, task ref)
(string → string) map get_other_config (session ref, task ref)
float get_progress (session ref, task ref)
task record get_record (session ref, task ref)
host ref get_resident_on (session ref, task ref)
string get_result (session ref, task ref)
enum task_status_type get_status (session ref, task ref)
task ref get_subtask_of (session ref, task ref)
task ref set get_subtasks (session ref, task ref)
string get_type (session ref, task ref)
string get_uuid (session ref, task ref)
void remove_from_other_config (session ref, task ref, string)
void set_error_info (session ref, task ref, string set)
void set_other_config (session ref, task ref, (string → string) map)
void set_progress (session ref, task ref, float)
void set_result (session ref, task ref, string)
void set_status (session ref, task ref, enum task_status_type)

tunnel

Class: tunnel

A tunnel for network traffic

Enums

tunnel_protocol

Fields

PIF ref access_PIF [RO/constructor]
(string → string) map other_config [RW]
enum tunnel_protocol protocol [RW]
(string → string) map status [RW]
PIF ref transport_PIF [RO/constructor]
string uuid [RO/runtime]

Messages

void add_to_other_config (session ref, tunnel ref, string, string)
void add_to_status (session ref, tunnel ref, string, string)
tunnel ref create (session ref, PIF ref, network ref, enum tunnel_protocol)
void destroy (session ref, tunnel ref)
PIF ref get_access_PIF (session ref, tunnel ref)
tunnel ref set get_all (session ref)
(tunnel ref → tunnel record) map get_all_records (session ref)
tunnel ref get_by_uuid (session ref, string)
(string → string) map get_other_config (session ref, tunnel ref)
enum tunnel_protocol get_protocol (session ref, tunnel ref)
tunnel record get_record (session ref, tunnel ref)
(string → string) map get_status (session ref, tunnel ref)
PIF ref get_transport_PIF (session ref, tunnel ref)
string get_uuid (session ref, tunnel ref)
void remove_from_other_config (session ref, tunnel ref, string)
void remove_from_status (session ref, tunnel ref, string)
void set_other_config (session ref, tunnel ref, (string → string) map)
void set_protocol (session ref, tunnel ref, enum tunnel_protocol)
void set_status (session ref, tunnel ref, (string → string) map)

USB_group

Class: USB_group

A group of compatible USBs across the resource pool

Fields

string name_description [RW]
string name_label [RW]
(string → string) map other_config [RW]
PUSB ref set PUSBs [RO/runtime]
string uuid [RO/runtime]
VUSB ref set VUSBs [RO/runtime]

Messages

void add_to_other_config (session ref, USB_group ref, string, string)
USB_group ref create (session ref, string, string, (string → string) map)
void destroy (session ref, USB_group ref)
USB_group ref set get_all (session ref)
(USB_group ref → USB_group record) map get_all_records (session ref)
USB_group ref set get_by_name_label (session ref, string)
USB_group ref get_by_uuid (session ref, string)
string get_name_description (session ref, USB_group ref)
string get_name_label (session ref, USB_group ref)
(string → string) map get_other_config (session ref, USB_group ref)
PUSB ref set get_PUSBs (session ref, USB_group ref)
USB_group record get_record (session ref, USB_group ref)
string get_uuid (session ref, USB_group ref)
VUSB ref set get_VUSBs (session ref, USB_group ref)
void remove_from_other_config (session ref, USB_group ref, string)
void set_name_description (session ref, USB_group ref, string)
void set_name_label (session ref, USB_group ref, string)
void set_other_config (session ref, USB_group ref, (string → string) map)

user

Deprecated

Class: user

A user of the system

Fields

string fullname [RW]
(string → string) map other_config [RW]
string short_name [RO/constructor]
string uuid [RO/runtime]

Messages

void add_to_other_config (session ref, user ref, string, string)
Deprecated
user ref create (session ref, user record)
Deprecated
void destroy (session ref, user ref)
Deprecated
user ref get_by_uuid (session ref, string)
string get_fullname (session ref, user ref)
(string → string) map get_other_config (session ref, user ref)
Deprecated
user record get_record (session ref, user ref)
string get_short_name (session ref, user ref)
string get_uuid (session ref, user ref)
void remove_from_other_config (session ref, user ref, string)
void set_fullname (session ref, user ref, string)
void set_other_config (session ref, user ref, (string → string) map)

VBD

Class: VBD

A virtual block device

Enums

vbd_operations
vbd_type
vbd_mode

Fields

enum vbd_operations set allowed_operations [RO/runtime]
bool bootable [RW]
(string → enum vbd_operations) map current_operations [RO/runtime]
bool currently_attached [RO/constructor]
string device [RO/constructor]
bool empty [RO/constructor]
Removed
VBD_metrics ref metrics [RO/runtime]
enum vbd_mode mode [RO/constructor]
(string → string) map other_config [RW]
(string → string) map qos_algorithm_params [RW]
string qos_algorithm_type [RW]
string set qos_supported_algorithms [RO/runtime]
(string → string) map runtime_properties [RO/runtime]
int status_code [RO/runtime]
string status_detail [RO/runtime]
bool storage_lock [RO/runtime]
enum vbd_type type [RW]
bool unpluggable [RW]
string userdevice [RW]
string uuid [RO/runtime]
VDI ref VDI [RO/constructor]
VM ref VM [RO/constructor]

Messages

void add_to_other_config (session ref, VBD ref, string, string)
void add_to_qos_algorithm_params (session ref, VBD ref, string, string)
void assert_attachable (session ref, VBD ref)
VBD ref create (session ref, VBD record)
void destroy (session ref, VBD ref)
void eject (session ref, VBD ref)
VBD ref set get_all (session ref)
(VBD ref → VBD record) map get_all_records (session ref)
enum vbd_operations set get_allowed_operations (session ref, VBD ref)
bool get_bootable (session ref, VBD ref)
VBD ref get_by_uuid (session ref, string)
(string → enum vbd_operations) map get_current_operations (session ref, VBD ref)
bool get_currently_attached (session ref, VBD ref)
string get_device (session ref, VBD ref)
bool get_empty (session ref, VBD ref)
Removed
VBD_metrics ref get_metrics (session ref, VBD ref)
enum vbd_mode get_mode (session ref, VBD ref)
(string → string) map get_other_config (session ref, VBD ref)
(string → string) map get_qos_algorithm_params (session ref, VBD ref)
string get_qos_algorithm_type (session ref, VBD ref)
string set get_qos_supported_algorithms (session ref, VBD ref)
VBD record get_record (session ref, VBD ref)
(string → string) map get_runtime_properties (session ref, VBD ref)
int get_status_code (session ref, VBD ref)
string get_status_detail (session ref, VBD ref)
bool get_storage_lock (session ref, VBD ref)
enum vbd_type get_type (session ref, VBD ref)
bool get_unpluggable (session ref, VBD ref)
string get_userdevice (session ref, VBD ref)
string get_uuid (session ref, VBD ref)
VDI ref get_VDI (session ref, VBD ref)
VM ref get_VM (session ref, VBD ref)
void insert (session ref, VBD ref, VDI ref)
void plug (session ref, VBD ref)
void remove_from_other_config (session ref, VBD ref, string)
void remove_from_qos_algorithm_params (session ref, VBD ref, string)
void set_bootable (session ref, VBD ref, bool)
void set_mode (session ref, VBD ref, enum vbd_mode)
void set_other_config (session ref, VBD ref, (string → string) map)
void set_qos_algorithm_params (session ref, VBD ref, (string → string) map)
void set_qos_algorithm_type (session ref, VBD ref, string)
void set_type (session ref, VBD ref, enum vbd_type)
void set_unpluggable (session ref, VBD ref, bool)
void set_userdevice (session ref, VBD ref, string)
void unplug (session ref, VBD ref)
void unplug_force (session ref, VBD ref)

VBD_metrics

Removed

Class: VBD_metrics

The metrics associated with a virtual block device

Fields

Removed
float io_read_kbs [RO/runtime]
Removed
float io_write_kbs [RO/runtime]
Removed
datetime last_updated [RO/runtime]
Removed
(string → string) map other_config [RW]
string uuid [RO/runtime]

Messages

Removed
void add_to_other_config (session ref, VBD_metrics ref, string, string)
Removed
VBD_metrics ref set get_all (session ref)
Removed
(VBD_metrics ref → VBD_metrics record) map get_all_records (session ref)
Removed
VBD_metrics ref get_by_uuid (session ref, string)
Removed
float get_io_read_kbs (session ref, VBD_metrics ref)
Removed
float get_io_write_kbs (session ref, VBD_metrics ref)
Removed
datetime get_last_updated (session ref, VBD_metrics ref)
Removed
(string → string) map get_other_config (session ref, VBD_metrics ref)
Removed
VBD_metrics record get_record (session ref, VBD_metrics ref)
string get_uuid (session ref, VBD_metrics ref)
Removed
void remove_from_other_config (session ref, VBD_metrics ref, string)
Removed
void set_other_config (session ref, VBD_metrics ref, (string → string) map)

VDI

Class: VDI

A virtual disk image

Enums

vdi_operations
vdi_type
on_boot

Fields

bool allow_caching [RO/runtime]
enum vdi_operations set allowed_operations [RO/runtime]
bool cbt_enabled [RO/runtime]
crashdump ref set crash_dumps [RO/runtime]
(string → enum vdi_operations) map current_operations [RO/runtime]
bool is_a_snapshot [RO/runtime]
bool is_tools_iso [RO/runtime]
string location [RO/runtime]
bool managed [RO/runtime]
bool metadata_latest [RO/runtime]
pool ref metadata_of_pool [RO/runtime]
bool missing [RO/runtime]
string name_description [RO/constructor]
string name_label [RO/constructor]
enum on_boot on_boot [RO/runtime]
(string → string) map other_config [RW]
Deprecated
VDI ref parent [RO/runtime]
int physical_utilisation [RO/runtime]
bool read_only [RO/constructor]
bool sharable [RO/constructor]
(string → string) map sm_config [RW]
VDI ref snapshot_of [RO/runtime]
datetime snapshot_time [RO/runtime]
VDI ref set snapshots [RO/runtime]
SR ref SR [RO/constructor]
bool storage_lock [RO/runtime]
string set tags [RW]
enum vdi_type type [RO/constructor]
string uuid [RO/runtime]
VBD ref set VBDs [RO/runtime]
int virtual_size [RO/constructor]
(string → string) map xenstore_data [RW]

Messages

void add_tags (session ref, VDI ref, string)
void add_to_other_config (session ref, VDI ref, string, string)
void add_to_sm_config (session ref, VDI ref, string, string)
void add_to_xenstore_data (session ref, VDI ref, string, string)
VDI ref clone (session ref, VDI ref, (string → string) map)
VDI ref copy (session ref, VDI ref, SR ref, VDI ref, VDI ref)
VDI ref create (session ref, VDI record)
void data_destroy (session ref, VDI ref)
void destroy (session ref, VDI ref)
void disable_cbt (session ref, VDI ref)
void enable_cbt (session ref, VDI ref)
void forget (session ref, VDI ref)
VDI ref set get_all (session ref)
(VDI ref → VDI record) map get_all_records (session ref)
bool get_allow_caching (session ref, VDI ref)
enum vdi_operations set get_allowed_operations (session ref, VDI ref)
VDI ref set get_by_name_label (session ref, string)
VDI ref get_by_uuid (session ref, string)
bool get_cbt_enabled (session ref, VDI ref)
crashdump ref set get_crash_dumps (session ref, VDI ref)
(string → enum vdi_operations) map get_current_operations (session ref, VDI ref)
bool get_is_a_snapshot (session ref, VDI ref)
bool get_is_tools_iso (session ref, VDI ref)
string get_location (session ref, VDI ref)
bool get_managed (session ref, VDI ref)
bool get_metadata_latest (session ref, VDI ref)
pool ref get_metadata_of_pool (session ref, VDI ref)
bool get_missing (session ref, VDI ref)
string get_name_description (session ref, VDI ref)
string get_name_label (session ref, VDI ref)
vdi_nbd_server_info record set get_nbd_info (session ref, VDI ref)
enum on_boot get_on_boot (session ref, VDI ref)
(string → string) map get_other_config (session ref, VDI ref)
Deprecated
VDI ref get_parent (session ref, VDI ref)
int get_physical_utilisation (session ref, VDI ref)
bool get_read_only (session ref, VDI ref)
VDI record get_record (session ref, VDI ref)
bool get_sharable (session ref, VDI ref)
(string → string) map get_sm_config (session ref, VDI ref)
VDI ref get_snapshot_of (session ref, VDI ref)
datetime get_snapshot_time (session ref, VDI ref)
VDI ref set get_snapshots (session ref, VDI ref)
SR ref get_SR (session ref, VDI ref)
bool get_storage_lock (session ref, VDI ref)
string set get_tags (session ref, VDI ref)
enum vdi_type get_type (session ref, VDI ref)
string get_uuid (session ref, VDI ref)
VBD ref set get_VBDs (session ref, VDI ref)
int get_virtual_size (session ref, VDI ref)
(string → string) map get_xenstore_data (session ref, VDI ref)
VDI ref introduce (session ref, string, string, string, SR ref, enum vdi_type, bool, bool, (string → string) map, string, (string → string) map, (string → string) map, bool, int, int, pool ref, bool, datetime, VDI ref)
string list_changed_blocks (session ref, VDI ref, VDI ref)
session ref open_database (session ref, VDI ref)
VDI ref pool_migrate (session ref, VDI ref, SR ref, (string → string) map)
string read_database_pool_uuid (session ref, VDI ref)
void remove_from_other_config (session ref, VDI ref, string)
void remove_from_sm_config (session ref, VDI ref, string)
void remove_from_xenstore_data (session ref, VDI ref, string)
void remove_tags (session ref, VDI ref, string)
void resize (session ref, VDI ref, int)
Removed
void resize_online (session ref, VDI ref, int)
void set_allow_caching (session ref, VDI ref, bool)
void set_name_description (session ref, VDI ref, string)
void set_name_label (session ref, VDI ref, string)
void set_on_boot (session ref, VDI ref, enum on_boot)
void set_other_config (session ref, VDI ref, (string → string) map)
void set_read_only (session ref, VDI ref, bool)
void set_sharable (session ref, VDI ref, bool)
void set_sm_config (session ref, VDI ref, (string → string) map)
void set_tags (session ref, VDI ref, string set)
void set_xenstore_data (session ref, VDI ref, (string → string) map)
VDI ref snapshot (session ref, VDI ref, (string → string) map)
void update (session ref, VDI ref)

vdi_nbd_server_info

Class: vdi_nbd_server_info

Details for connecting to a VDI using the Network Block Device protocol

Fields

string address [RO/runtime]
string cert [RO/runtime]
string exportname [RO/runtime]
int port [RO/runtime]
string subject [RO/runtime]

Messages

VGPU

Class: VGPU

A virtual GPU (vGPU)

Fields

(string → string) map compatibility_metadata [RO/runtime]
bool currently_attached [RO/runtime]
string device [RO/runtime]
string extra_args [RW]
GPU_group ref GPU_group [RO/runtime]
(string → string) map other_config [RW]
PCI ref PCI [RO/runtime]
PGPU ref resident_on [RO/runtime]
PGPU ref scheduled_to_be_resident_on [RO/runtime]
VGPU_type ref type [RO/runtime]
string uuid [RO/runtime]
VM ref VM [RO/runtime]

Messages

void add_to_other_config (session ref, VGPU ref, string, string)
VGPU ref create (session ref, VM ref, GPU_group ref, string, (string → string) map, VGPU_type ref)
void destroy (session ref, VGPU ref)
VGPU ref set get_all (session ref)
(VGPU ref → VGPU record) map get_all_records (session ref)
VGPU ref get_by_uuid (session ref, string)
(string → string) map get_compatibility_metadata (session ref, VGPU ref)
bool get_currently_attached (session ref, VGPU ref)
string get_device (session ref, VGPU ref)
string get_extra_args (session ref, VGPU ref)
GPU_group ref get_GPU_group (session ref, VGPU ref)
(string → string) map get_other_config (session ref, VGPU ref)
PCI ref get_PCI (session ref, VGPU ref)
VGPU record get_record (session ref, VGPU ref)
PGPU ref get_resident_on (session ref, VGPU ref)
PGPU ref get_scheduled_to_be_resident_on (session ref, VGPU ref)
VGPU_type ref get_type (session ref, VGPU ref)
string get_uuid (session ref, VGPU ref)
VM ref get_VM (session ref, VGPU ref)
void remove_from_other_config (session ref, VGPU ref, string)
void set_extra_args (session ref, VGPU ref, string)
void set_other_config (session ref, VGPU ref, (string → string) map)

VGPU_type

Class: VGPU_type

A type of virtual GPU

Enums

vgpu_type_implementation

Fields

VGPU_type ref set compatible_types_in_vm [RO/runtime]
GPU_group ref set enabled_on_GPU_groups [RO/runtime]
PGPU ref set enabled_on_PGPUs [RO/runtime]
bool experimental [RO/constructor]
int framebuffer_size [RO/constructor]
string identifier [RO/constructor]
enum vgpu_type_implementation implementation [RO/constructor]
int max_heads [RO/constructor]
int max_resolution_x [RO/constructor]
int max_resolution_y [RO/constructor]
string model_name [RO/constructor]
GPU_group ref set supported_on_GPU_groups [RO/runtime]
PGPU ref set supported_on_PGPUs [RO/runtime]
string uuid [RO/runtime]
string vendor_name [RO/constructor]
VGPU ref set VGPUs [RO/runtime]

Messages

VGPU_type ref set get_all (session ref)
(VGPU_type ref → VGPU_type record) map get_all_records (session ref)
VGPU_type ref get_by_uuid (session ref, string)
VGPU_type ref set get_compatible_types_in_vm (session ref, VGPU_type ref)
GPU_group ref set get_enabled_on_GPU_groups (session ref, VGPU_type ref)
PGPU ref set get_enabled_on_PGPUs (session ref, VGPU_type ref)
bool get_experimental (session ref, VGPU_type ref)
int get_framebuffer_size (session ref, VGPU_type ref)
string get_identifier (session ref, VGPU_type ref)
enum vgpu_type_implementation get_implementation (session ref, VGPU_type ref)
int get_max_heads (session ref, VGPU_type ref)
int get_max_resolution_x (session ref, VGPU_type ref)
int get_max_resolution_y (session ref, VGPU_type ref)
string get_model_name (session ref, VGPU_type ref)
VGPU_type record get_record (session ref, VGPU_type ref)
GPU_group ref set get_supported_on_GPU_groups (session ref, VGPU_type ref)
PGPU ref set get_supported_on_PGPUs (session ref, VGPU_type ref)
string get_uuid (session ref, VGPU_type ref)
string get_vendor_name (session ref, VGPU_type ref)
VGPU ref set get_VGPUs (session ref, VGPU_type ref)

VIF

Class: VIF

A virtual network interface

Enums

vif_operations
vif_locking_mode
vif_ipv4_configuration_mode
vif_ipv6_configuration_mode

Fields

enum vif_operations set allowed_operations [RO/runtime]
(string → enum vif_operations) map current_operations [RO/runtime]
bool currently_attached [RO/constructor]
string device [RO/constructor]
string set ipv4_addresses [RO/runtime]
string set ipv4_allowed [RO/constructor]
enum vif_ipv4_configuration_mode ipv4_configuration_mode [RO/runtime]
string ipv4_gateway [RO/runtime]
string set ipv6_addresses [RO/runtime]
string set ipv6_allowed [RO/constructor]
enum vif_ipv6_configuration_mode ipv6_configuration_mode [RO/runtime]
string ipv6_gateway [RO/runtime]
enum vif_locking_mode locking_mode [RO/constructor]
string MAC [RO/constructor]
bool MAC_autogenerated [RO/runtime]
Removed
VIF_metrics ref metrics [RO/runtime]
int MTU [RO/constructor]
network ref network [RO/constructor]
(string → string) map other_config [RW]
(string → string) map qos_algorithm_params [RW]
string qos_algorithm_type [RW]
string set qos_supported_algorithms [RO/runtime]
(string → string) map runtime_properties [RO/runtime]
int status_code [RO/runtime]
string status_detail [RO/runtime]
string uuid [RO/runtime]
VM ref VM [RO/constructor]

Messages

void add_ipv4_allowed (session ref, VIF ref, string)
void add_ipv6_allowed (session ref, VIF ref, string)
void add_to_other_config (session ref, VIF ref, string, string)
void add_to_qos_algorithm_params (session ref, VIF ref, string, string)
void configure_ipv4 (session ref, VIF ref, enum vif_ipv4_configuration_mode, string, string)
void configure_ipv6 (session ref, VIF ref, enum vif_ipv6_configuration_mode, string, string)
VIF ref create (session ref, VIF record)
void destroy (session ref, VIF ref)
VIF ref set get_all (session ref)
(VIF ref → VIF record) map get_all_records (session ref)
enum vif_operations set get_allowed_operations (session ref, VIF ref)
VIF ref get_by_uuid (session ref, string)
(string → enum vif_operations) map get_current_operations (session ref, VIF ref)
bool get_currently_attached (session ref, VIF ref)
string get_device (session ref, VIF ref)
string set get_ipv4_addresses (session ref, VIF ref)
string set get_ipv4_allowed (session ref, VIF ref)
enum vif_ipv4_configuration_mode get_ipv4_configuration_mode (session ref, VIF ref)
string get_ipv4_gateway (session ref, VIF ref)
string set get_ipv6_addresses (session ref, VIF ref)
string set get_ipv6_allowed (session ref, VIF ref)
enum vif_ipv6_configuration_mode get_ipv6_configuration_mode (session ref, VIF ref)
string get_ipv6_gateway (session ref, VIF ref)
enum vif_locking_mode get_locking_mode (session ref, VIF ref)
string get_MAC (session ref, VIF ref)
bool get_MAC_autogenerated (session ref, VIF ref)
Removed
VIF_metrics ref get_metrics (session ref, VIF ref)
int get_MTU (session ref, VIF ref)
network ref get_network (session ref, VIF ref)
(string → string) map get_other_config (session ref, VIF ref)
(string → string) map get_qos_algorithm_params (session ref, VIF ref)
string get_qos_algorithm_type (session ref, VIF ref)
string set get_qos_supported_algorithms (session ref, VIF ref)
VIF record get_record (session ref, VIF ref)
(string → string) map get_runtime_properties (session ref, VIF ref)
int get_status_code (session ref, VIF ref)
string get_status_detail (session ref, VIF ref)
string get_uuid (session ref, VIF ref)
VM ref get_VM (session ref, VIF ref)
void move (session ref, VIF ref, network ref)
void plug (session ref, VIF ref)
void remove_from_other_config (session ref, VIF ref, string)
void remove_from_qos_algorithm_params (session ref, VIF ref, string)
void remove_ipv4_allowed (session ref, VIF ref, string)
void remove_ipv6_allowed (session ref, VIF ref, string)
void set_ipv4_allowed (session ref, VIF ref, string set)
void set_ipv6_allowed (session ref, VIF ref, string set)
void set_locking_mode (session ref, VIF ref, enum vif_locking_mode)
void set_other_config (session ref, VIF ref, (string → string) map)
void set_qos_algorithm_params (session ref, VIF ref, (string → string) map)
void set_qos_algorithm_type (session ref, VIF ref, string)
void unplug (session ref, VIF ref)
void unplug_force (session ref, VIF ref)

VIF_metrics

Removed

Class: VIF_metrics

The metrics associated with a virtual network device

Fields

Removed
float io_read_kbs [RO/runtime]
Removed
float io_write_kbs [RO/runtime]
datetime last_updated [RO/runtime]
(string → string) map other_config [RW]
string uuid [RO/runtime]

Messages

void add_to_other_config (session ref, VIF_metrics ref, string, string)
Removed
VIF_metrics ref set get_all (session ref)
Removed
(VIF_metrics ref → VIF_metrics record) map get_all_records (session ref)
Removed
VIF_metrics ref get_by_uuid (session ref, string)
Removed
float get_io_read_kbs (session ref, VIF_metrics ref)
Removed
float get_io_write_kbs (session ref, VIF_metrics ref)
datetime get_last_updated (session ref, VIF_metrics ref)
(string → string) map get_other_config (session ref, VIF_metrics ref)
Removed
VIF_metrics record get_record (session ref, VIF_metrics ref)
string get_uuid (session ref, VIF_metrics ref)
void remove_from_other_config (session ref, VIF_metrics ref, string)
void set_other_config (session ref, VIF_metrics ref, (string → string) map)

VLAN

Class: VLAN

A VLAN mux/demux

Fields

(string → string) map other_config [RW]
int tag [RO/constructor]
PIF ref tagged_PIF [RO/constructor]
PIF ref untagged_PIF [RO/runtime]
string uuid [RO/runtime]

Messages

void add_to_other_config (session ref, VLAN ref, string, string)
VLAN ref create (session ref, PIF ref, int, network ref)
void destroy (session ref, VLAN ref)
VLAN ref set get_all (session ref)
(VLAN ref → VLAN record) map get_all_records (session ref)
VLAN ref get_by_uuid (session ref, string)
(string → string) map get_other_config (session ref, VLAN ref)
VLAN record get_record (session ref, VLAN ref)
int get_tag (session ref, VLAN ref)
PIF ref get_tagged_PIF (session ref, VLAN ref)
PIF ref get_untagged_PIF (session ref, VLAN ref)
string get_uuid (session ref, VLAN ref)
void remove_from_other_config (session ref, VLAN ref, string)
void set_other_config (session ref, VLAN ref, (string → string) map)

VM

Class: VM

A virtual machine (or &#39;guest&#39;).

Enums

vm_power_state
update_guidances
on_softreboot_behavior
on_normal_exit
vm_operations
on_crash_behaviour
domain_type

Fields

enum on_crash_behaviour actions_after_crash [RO/constructor]
enum on_normal_exit actions_after_reboot [RW]
enum on_normal_exit actions_after_shutdown [RW]
Prototype
enum on_softreboot_behavior actions_after_softreboot [RW]
host ref affinity [RW]
enum vm_operations set allowed_operations [RO/runtime]
VM_appliance ref appliance [RO/constructor]
PCI ref set attached_PCIs [RO/runtime]
(string → string) map bios_strings [RO/runtime]
(string → blob ref) map blobs [RO/runtime]
(enum vm_operations → string) map blocked_operations [RW]
VM ref set children [RO/runtime]
console ref set consoles [RO/runtime]
crashdump ref set crash_dumps [RO/runtime]
(string → enum vm_operations) map current_operations [RO/runtime]
enum domain_type domain_type [RO/constructor]
string domarch [RO/runtime]
int domid [RO/runtime]
string generation_id [RO/constructor]
VM_guest_metrics ref guest_metrics [RO/runtime]
Deprecated
bool ha_always_run [RO/constructor]
string ha_restart_priority [RO/constructor]
int hardware_platform_version [RW]
bool has_vendor_device [RO/constructor]
(string → string) map HVM_boot_params [RW]
Deprecated
string HVM_boot_policy [RO/constructor]
float HVM_shadow_multiplier [RO/constructor]
bool is_a_snapshot [RO/runtime]
bool is_a_template [RW]
bool is_control_domain [RO/runtime]
bool is_default_template [RO/runtime]
Removed
bool is_snapshot_from_vmpp [RO/constructor]
bool is_vmss_snapshot [RO/constructor]
(string → string) map last_boot_CPU_flags [RO/constructor]
string last_booted_record [RO/constructor]
int memory_dynamic_max [RO/constructor]
int memory_dynamic_min [RO/constructor]
int memory_overhead [RO/runtime]
int memory_static_max [RO/constructor]
int memory_static_min [RO/constructor]
Deprecated
int memory_target [RO/constructor]
VM_metrics ref metrics [RO/runtime]
string name_description [RW]
string name_label [RW]
(string → string) map NVRAM [RO/constructor]
int order [RO/constructor]
(string → string) map other_config [RW]
VM ref parent [RO/runtime]
Deprecated
string PCI_bus [RW]
enum update_guidances set pending_guidances [RO/runtime]
Prototype
enum update_guidances set pending_guidances_full [RO/runtime]
Prototype
enum update_guidances set pending_guidances_recommended [RO/runtime]
(string → string) map platform [RW]
enum vm_power_state power_state [RO/constructor]
Deprecated
VMPP ref protection_policy [RO/constructor]
string PV_args [RW]
string PV_bootloader [RW]
string PV_bootloader_args [RW]
string PV_kernel [RW]
string PV_legacy_args [RW]
string PV_ramdisk [RW]
string recommendations [RW]
string reference_label [RO/constructor]
bool requires_reboot [RO/runtime]
host ref resident_on [RO/runtime]
host ref scheduled_to_be_resident_on [RO/runtime]
int shutdown_delay [RO/constructor]
(string → string) map snapshot_info [RO/runtime]
string snapshot_metadata [RO/runtime]
VM ref snapshot_of [RO/runtime]
VMSS ref snapshot_schedule [RO/constructor]
datetime snapshot_time [RO/runtime]
VM ref set snapshots [RO/runtime]
int start_delay [RO/constructor]
SR ref suspend_SR [RW]
VDI ref suspend_VDI [RO/constructor]
string set tags [RW]
string transportable_snapshot_id [RO/runtime]
int user_version [RW]
string uuid [RO/runtime]
VBD ref set VBDs [RO/runtime]
int VCPUs_at_startup [RO/constructor]
int VCPUs_max [RO/constructor]
(string → string) map VCPUs_params [RW]
int version [RO/constructor]
VGPU ref set VGPUs [RO/runtime]
VIF ref set VIFs [RO/runtime]
VTPM ref set VTPMs [RO/runtime]
VUSB ref set VUSBs [RO/runtime]
(string → string) map xenstore_data [RW]

Messages

void add_tags (session ref, VM ref, string)
void add_to_blocked_operations (session ref, VM ref, enum vm_operations, string)
void add_to_HVM_boot_params (session ref, VM ref, string, string)
void add_to_NVRAM (session ref, VM ref, string, string)
void add_to_other_config (session ref, VM ref, string, string)
void add_to_platform (session ref, VM ref, string, string)
void add_to_VCPUs_params (session ref, VM ref, string, string)
void add_to_VCPUs_params_live (session ref, VM ref, string, string)
void add_to_xenstore_data (session ref, VM ref, string, string)
void assert_agile (session ref, VM ref)
void assert_can_be_recovered (session ref, VM ref, session ref)
void assert_can_boot_here (session ref, VM ref, host ref)
void assert_can_migrate (session ref, VM ref, (string → string) map, bool, (VDI ref → SR ref) map, (VIF ref → network ref) map, (string → string) map, (VGPU ref → GPU_group ref) map)
void assert_operation_valid (session ref, VM ref, enum vm_operations)
string call_plugin (session ref, VM ref, string, string, (string → string) map)
VM ref checkpoint (session ref, VM ref, string)
void clean_reboot (session ref, VM ref)
void clean_shutdown (session ref, VM ref)
VM ref clone (session ref, VM ref, string)
int compute_memory_overhead (session ref, VM ref)
VM ref copy (session ref, VM ref, string, SR ref)
void copy_bios_strings (session ref, VM ref, host ref)
VM ref create (session ref, VM record)
blob ref create_new_blob (session ref, VM ref, string, string, bool)
void destroy (session ref, VM ref)
void forget_data_source_archives (session ref, VM ref, string)
enum on_crash_behaviour get_actions_after_crash (session ref, VM ref)
enum on_normal_exit get_actions_after_reboot (session ref, VM ref)
enum on_normal_exit get_actions_after_shutdown (session ref, VM ref)
Prototype
enum on_softreboot_behavior get_actions_after_softreboot (session ref, VM ref)
host ref get_affinity (session ref, VM ref)
VM ref set get_all (session ref)
(VM ref → VM record) map get_all_records (session ref)
enum vm_operations set get_allowed_operations (session ref, VM ref)
string set get_allowed_VBD_devices (session ref, VM ref)
string set get_allowed_VIF_devices (session ref, VM ref)
VM_appliance ref get_appliance (session ref, VM ref)
PCI ref set get_attached_PCIs (session ref, VM ref)
(string → string) map get_bios_strings (session ref, VM ref)
(string → blob ref) map get_blobs (session ref, VM ref)
(enum vm_operations → string) map get_blocked_operations (session ref, VM ref)
Deprecated
VM record get_boot_record (session ref, VM ref)
VM ref set get_by_name_label (session ref, string)
VM ref get_by_uuid (session ref, string)
VM ref set get_children (session ref, VM ref)
console ref set get_consoles (session ref, VM ref)
Deprecated
bool get_cooperative (session ref, VM ref)
crashdump ref set get_crash_dumps (session ref, VM ref)
(string → enum vm_operations) map get_current_operations (session ref, VM ref)
data_source record set get_data_sources (session ref, VM ref)
enum domain_type get_domain_type (session ref, VM ref)
string get_domarch (session ref, VM ref)
int get_domid (session ref, VM ref)
string get_generation_id (session ref, VM ref)
VM_guest_metrics ref get_guest_metrics (session ref, VM ref)
Deprecated
bool get_ha_always_run (session ref, VM ref)
string get_ha_restart_priority (session ref, VM ref)
int get_hardware_platform_version (session ref, VM ref)
bool get_has_vendor_device (session ref, VM ref)
(string → string) map get_HVM_boot_params (session ref, VM ref)
Deprecated
string get_HVM_boot_policy (session ref, VM ref)
float get_HVM_shadow_multiplier (session ref, VM ref)
bool get_is_a_snapshot (session ref, VM ref)
bool get_is_a_template (session ref, VM ref)
bool get_is_control_domain (session ref, VM ref)
bool get_is_default_template (session ref, VM ref)
Removed
bool get_is_snapshot_from_vmpp (session ref, VM ref)
bool get_is_vmss_snapshot (session ref, VM ref)
(string → string) map get_last_boot_CPU_flags (session ref, VM ref)
string get_last_booted_record (session ref, VM ref)
int get_memory_dynamic_max (session ref, VM ref)
int get_memory_dynamic_min (session ref, VM ref)
int get_memory_overhead (session ref, VM ref)
int get_memory_static_max (session ref, VM ref)
int get_memory_static_min (session ref, VM ref)
Deprecated
int get_memory_target (session ref, VM ref)
VM_metrics ref get_metrics (session ref, VM ref)
string get_name_description (session ref, VM ref)
string get_name_label (session ref, VM ref)
(string → string) map get_NVRAM (session ref, VM ref)
int get_order (session ref, VM ref)
(string → string) map get_other_config (session ref, VM ref)
VM ref get_parent (session ref, VM ref)
Deprecated
string get_PCI_bus (session ref, VM ref)
enum update_guidances set get_pending_guidances (session ref, VM ref)
Prototype
enum update_guidances set get_pending_guidances_full (session ref, VM ref)
Prototype
enum update_guidances set get_pending_guidances_recommended (session ref, VM ref)
(string → string) map get_platform (session ref, VM ref)
host ref set get_possible_hosts (session ref, VM ref)
enum vm_power_state get_power_state (session ref, VM ref)
Deprecated
VMPP ref get_protection_policy (session ref, VM ref)
string get_PV_args (session ref, VM ref)
string get_PV_bootloader (session ref, VM ref)
string get_PV_bootloader_args (session ref, VM ref)
string get_PV_kernel (session ref, VM ref)
string get_PV_legacy_args (session ref, VM ref)
string get_PV_ramdisk (session ref, VM ref)
string get_recommendations (session ref, VM ref)
VM record get_record (session ref, VM ref)
string get_reference_label (session ref, VM ref)
bool get_requires_reboot (session ref, VM ref)
host ref get_resident_on (session ref, VM ref)
host ref get_scheduled_to_be_resident_on (session ref, VM ref)
int get_shutdown_delay (session ref, VM ref)
(string → string) map get_snapshot_info (session ref, VM ref)
string get_snapshot_metadata (session ref, VM ref)
VM ref get_snapshot_of (session ref, VM ref)
VMSS ref get_snapshot_schedule (session ref, VM ref)
datetime get_snapshot_time (session ref, VM ref)
VM ref set get_snapshots (session ref, VM ref)
SR ref set get_SRs_required_for_recovery (session ref, VM ref, session ref)
int get_start_delay (session ref, VM ref)
SR ref get_suspend_SR (session ref, VM ref)
VDI ref get_suspend_VDI (session ref, VM ref)
string set get_tags (session ref, VM ref)
string get_transportable_snapshot_id (session ref, VM ref)
int get_user_version (session ref, VM ref)
string get_uuid (session ref, VM ref)
VBD ref set get_VBDs (session ref, VM ref)
int get_VCPUs_at_startup (session ref, VM ref)
int get_VCPUs_max (session ref, VM ref)
(string → string) map get_VCPUs_params (session ref, VM ref)
int get_version (session ref, VM ref)
VGPU ref set get_VGPUs (session ref, VM ref)
VIF ref set get_VIFs (session ref, VM ref)
VTPM ref set get_VTPMs (session ref, VM ref)
VUSB ref set get_VUSBs (session ref, VM ref)
(string → string) map get_xenstore_data (session ref, VM ref)
void hard_reboot (session ref, VM ref)
void hard_shutdown (session ref, VM ref)
VM ref set import (session ref, string, SR ref, bool, bool)
void import_convert (session ref, string, string, string, SR ref, (string → string) map)
int maximise_memory (session ref, VM ref, int, bool)
VM ref migrate_send (session ref, VM ref, (string → string) map, bool, (VDI ref → SR ref) map, (VIF ref → network ref) map, (string → string) map, (VGPU ref → GPU_group ref) map)
void pause (session ref, VM ref)
void pool_migrate (session ref, VM ref, host ref, (string → string) map)
void power_state_reset (session ref, VM ref)
void provision (session ref, VM ref)
float query_data_source (session ref, VM ref, string)
(string → string) map query_services (session ref, VM ref)
void record_data_source (session ref, VM ref, string)
void recover (session ref, VM ref, session ref, bool)
void remove_from_blocked_operations (session ref, VM ref, enum vm_operations)
void remove_from_HVM_boot_params (session ref, VM ref, string)
void remove_from_NVRAM (session ref, VM ref, string)
void remove_from_other_config (session ref, VM ref, string)
void remove_from_platform (session ref, VM ref, string)
void remove_from_VCPUs_params (session ref, VM ref, string)
void remove_from_xenstore_data (session ref, VM ref, string)
void remove_tags (session ref, VM ref, string)
Prototype
void restart_device_models (session ref, VM ref)
void resume (session ref, VM ref, bool, bool)
void resume_on (session ref, VM ref, host ref, bool, bool)
(host ref → string set) map retrieve_wlb_recommendations (session ref, VM ref)
void revert (session ref, VM ref)
void send_sysrq (session ref, VM ref, string)
void send_trigger (session ref, VM ref, string)
void set_actions_after_crash (session ref, VM ref, enum on_crash_behaviour)
void set_actions_after_reboot (session ref, VM ref, enum on_normal_exit)
void set_actions_after_shutdown (session ref, VM ref, enum on_normal_exit)
Prototype
void set_actions_after_softreboot (session ref, VM ref, enum on_softreboot_behavior)
void set_affinity (session ref, VM ref, host ref)
void set_appliance (session ref, VM ref, VM_appliance ref)
void set_bios_strings (session ref, VM ref, (string → string) map)
void set_blocked_operations (session ref, VM ref, (enum vm_operations → string) map)
void set_domain_type (session ref, VM ref, enum domain_type)
Deprecated
void set_ha_always_run (session ref, VM ref, bool)
void set_ha_restart_priority (session ref, VM ref, string)
void set_hardware_platform_version (session ref, VM ref, int)
void set_has_vendor_device (session ref, VM ref, bool)
void set_HVM_boot_params (session ref, VM ref, (string → string) map)
Deprecated
void set_HVM_boot_policy (session ref, VM ref, string)
void set_HVM_shadow_multiplier (session ref, VM ref, float)
void set_is_a_template (session ref, VM ref, bool)
void set_memory (session ref, VM ref, int)
void set_memory_dynamic_max (session ref, VM ref, int)
void set_memory_dynamic_min (session ref, VM ref, int)
void set_memory_dynamic_range (session ref, VM ref, int, int)
void set_memory_limits (session ref, VM ref, int, int, int, int)
void set_memory_static_max (session ref, VM ref, int)
void set_memory_static_min (session ref, VM ref, int)
void set_memory_static_range (session ref, VM ref, int, int)
Deprecated
void set_memory_target_live (session ref, VM ref, int)
void set_name_description (session ref, VM ref, string)
void set_name_label (session ref, VM ref, string)
void set_NVRAM (session ref, VM ref, (string → string) map)
void set_order (session ref, VM ref, int)
void set_other_config (session ref, VM ref, (string → string) map)
Deprecated
void set_PCI_bus (session ref, VM ref, string)
void set_platform (session ref, VM ref, (string → string) map)
Removed
void set_protection_policy (session ref, VM ref, VMPP ref)
void set_PV_args (session ref, VM ref, string)
void set_PV_bootloader (session ref, VM ref, string)
void set_PV_bootloader_args (session ref, VM ref, string)
void set_PV_kernel (session ref, VM ref, string)
void set_PV_legacy_args (session ref, VM ref, string)
void set_PV_ramdisk (session ref, VM ref, string)
void set_recommendations (session ref, VM ref, string)
void set_shadow_multiplier_live (session ref, VM ref, float)
void set_shutdown_delay (session ref, VM ref, int)
void set_snapshot_schedule (session ref, VM ref, VMSS ref)
void set_start_delay (session ref, VM ref, int)
void set_suspend_SR (session ref, VM ref, SR ref)
void set_suspend_VDI (session ref, VM ref, VDI ref)
void set_tags (session ref, VM ref, string set)
void set_user_version (session ref, VM ref, int)
void set_VCPUs_at_startup (session ref, VM ref, int)
void set_VCPUs_max (session ref, VM ref, int)
void set_VCPUs_number_live (session ref, VM ref, int)
void set_VCPUs_params (session ref, VM ref, (string → string) map)
void set_xenstore_data (session ref, VM ref, (string → string) map)
void shutdown (session ref, VM ref)
VM ref snapshot (session ref, VM ref, string, VDI ref set)
Removed
VM ref snapshot_with_quiesce (session ref, VM ref, string)
void start (session ref, VM ref, bool, bool)
void start_on (session ref, VM ref, host ref, bool, bool)
void suspend (session ref, VM ref)
void unpause (session ref, VM ref)
void update_allowed_operations (session ref, VM ref)
Deprecated
void wait_memory_target_live (session ref, VM ref)

VM_appliance

Class: VM_appliance

VM appliance

Enums

vm_appliance_operation

Fields

enum vm_appliance_operation set allowed_operations [RO/runtime]
(string → enum vm_appliance_operation) map current_operations [RO/runtime]
string name_description [RW]
string name_label [RW]
string uuid [RO/runtime]
VM ref set VMs [RO/runtime]

Messages

void assert_can_be_recovered (session ref, VM_appliance ref, session ref)
void clean_shutdown (session ref, VM_appliance ref)
VM_appliance ref create (session ref, VM_appliance record)
void destroy (session ref, VM_appliance ref)
VM_appliance ref set get_all (session ref)
(VM_appliance ref → VM_appliance record) map get_all_records (session ref)
enum vm_appliance_operation set get_allowed_operations (session ref, VM_appliance ref)
VM_appliance ref set get_by_name_label (session ref, string)
VM_appliance ref get_by_uuid (session ref, string)
(string → enum vm_appliance_operation) map get_current_operations (session ref, VM_appliance ref)
string get_name_description (session ref, VM_appliance ref)
string get_name_label (session ref, VM_appliance ref)
VM_appliance record get_record (session ref, VM_appliance ref)
SR ref set get_SRs_required_for_recovery (session ref, VM_appliance ref, session ref)
string get_uuid (session ref, VM_appliance ref)
VM ref set get_VMs (session ref, VM_appliance ref)
void hard_shutdown (session ref, VM_appliance ref)
void recover (session ref, VM_appliance ref, session ref, bool)
void set_name_description (session ref, VM_appliance ref, string)
void set_name_label (session ref, VM_appliance ref, string)
void shutdown (session ref, VM_appliance ref)
void start (session ref, VM_appliance ref, bool)

VM_guest_metrics

Class: VM_guest_metrics

The metrics reported by the guest (as opposed to inferred from outside)

Enums

tristate_type

Fields

enum tristate_type can_use_hotplug_vbd [RO/runtime]
enum tristate_type can_use_hotplug_vif [RO/runtime]
Removed
(string → string) map disks [RO/runtime]
datetime last_updated [RO/runtime]
bool live [RO/runtime]
Removed
(string → string) map memory [RO/runtime]
(string → string) map networks [RO/runtime]
(string → string) map os_version [RO/runtime]
(string → string) map other [RO/runtime]
(string → string) map other_config [RW]
bool PV_drivers_detected [RO/runtime]
Deprecated
bool PV_drivers_up_to_date [RO/runtime]
(string → string) map PV_drivers_version [RO/runtime]
string uuid [RO/runtime]

Messages

void add_to_other_config (session ref, VM_guest_metrics ref, string, string)
VM_guest_metrics ref set get_all (session ref)
(VM_guest_metrics ref → VM_guest_metrics record) map get_all_records (session ref)
VM_guest_metrics ref get_by_uuid (session ref, string)
enum tristate_type get_can_use_hotplug_vbd (session ref, VM_guest_metrics ref)
enum tristate_type get_can_use_hotplug_vif (session ref, VM_guest_metrics ref)
Removed
(string → string) map get_disks (session ref, VM_guest_metrics ref)
datetime get_last_updated (session ref, VM_guest_metrics ref)
bool get_live (session ref, VM_guest_metrics ref)
Removed
(string → string) map get_memory (session ref, VM_guest_metrics ref)
(string → string) map get_networks (session ref, VM_guest_metrics ref)
(string → string) map get_os_version (session ref, VM_guest_metrics ref)
(string → string) map get_other (session ref, VM_guest_metrics ref)
(string → string) map get_other_config (session ref, VM_guest_metrics ref)
bool get_PV_drivers_detected (session ref, VM_guest_metrics ref)
Deprecated
bool get_PV_drivers_up_to_date (session ref, VM_guest_metrics ref)
(string → string) map get_PV_drivers_version (session ref, VM_guest_metrics ref)
VM_guest_metrics record get_record (session ref, VM_guest_metrics ref)
string get_uuid (session ref, VM_guest_metrics ref)
void remove_from_other_config (session ref, VM_guest_metrics ref, string)
void set_other_config (session ref, VM_guest_metrics ref, (string → string) map)

VM_metrics

Class: VM_metrics

The metrics associated with a VM

Enums

domain_type

Fields

enum domain_type current_domain_type [RO/runtime]
bool hvm [RO/runtime]
datetime install_time [RO/runtime]
datetime last_updated [RO/runtime]
int memory_actual [RO/runtime]
bool nested_virt [RO/runtime]
bool nomigrate [RO/runtime]
(string → string) map other_config [RW]
datetime start_time [RO/runtime]
string set state [RO/runtime]
string uuid [RO/runtime]
(int → int) map VCPUs_CPU [RO/runtime]
(int → string set) map VCPUs_flags [RO/runtime]
int VCPUs_number [RO/runtime]
(string → string) map VCPUs_params [RO/runtime]
Removed
(int → float) map VCPUs_utilisation [RO/runtime]

Messages

void add_to_other_config (session ref, VM_metrics ref, string, string)
VM_metrics ref set get_all (session ref)
(VM_metrics ref → VM_metrics record) map get_all_records (session ref)
VM_metrics ref get_by_uuid (session ref, string)
enum domain_type get_current_domain_type (session ref, VM_metrics ref)
bool get_hvm (session ref, VM_metrics ref)
datetime get_install_time (session ref, VM_metrics ref)
datetime get_last_updated (session ref, VM_metrics ref)
int get_memory_actual (session ref, VM_metrics ref)
bool get_nested_virt (session ref, VM_metrics ref)
bool get_nomigrate (session ref, VM_metrics ref)
(string → string) map get_other_config (session ref, VM_metrics ref)
VM_metrics record get_record (session ref, VM_metrics ref)
datetime get_start_time (session ref, VM_metrics ref)
string set get_state (session ref, VM_metrics ref)
string get_uuid (session ref, VM_metrics ref)
(int → int) map get_VCPUs_CPU (session ref, VM_metrics ref)
(int → string set) map get_VCPUs_flags (session ref, VM_metrics ref)
int get_VCPUs_number (session ref, VM_metrics ref)
(string → string) map get_VCPUs_params (session ref, VM_metrics ref)
Removed
(int → float) map get_VCPUs_utilisation (session ref, VM_metrics ref)
void remove_from_other_config (session ref, VM_metrics ref, string)
void set_other_config (session ref, VM_metrics ref, (string → string) map)

VMPP

Removed

Class: VMPP

VM Protection Policy

Enums

vmpp_backup_type
vmpp_backup_frequency
vmpp_archive_frequency
vmpp_archive_target_type

Fields

Removed
(string → string) map alarm_config [RO/constructor]
Removed
enum vmpp_archive_frequency archive_frequency [RO/constructor]
Removed
datetime archive_last_run_time [RO/runtime]
Removed
(string → string) map archive_schedule [RO/constructor]
Removed
(string → string) map archive_target_config [RO/constructor]
Removed
enum vmpp_archive_target_type archive_target_type [RO/constructor]
Removed
enum vmpp_backup_frequency backup_frequency [RO/constructor]
Removed
datetime backup_last_run_time [RO/runtime]
Removed
int backup_retention_value [RO/constructor]
Removed
(string → string) map backup_schedule [RO/constructor]
Removed
enum vmpp_backup_type backup_type [RW]
Removed
bool is_alarm_enabled [RO/constructor]
Removed
bool is_archive_running [RO/runtime]
Removed
bool is_backup_running [RO/runtime]
Removed
bool is_policy_enabled [RW]
string name_description [RW]
string name_label [RW]
Removed
string set recent_alerts [RO/runtime]
Removed
string uuid [RO/runtime]
Removed
VM ref set VMs [RO/runtime]

Messages

Removed
void add_to_alarm_config (session ref, VMPP ref, string, string)
Removed
void add_to_archive_schedule (session ref, VMPP ref, string, string)
Removed
void add_to_archive_target_config (session ref, VMPP ref, string, string)
Removed
void add_to_backup_schedule (session ref, VMPP ref, string, string)
Removed
string archive_now (session ref, VM ref)
Removed
VMPP ref create (session ref, VMPP record)
Removed
void destroy (session ref, VMPP ref)
Removed
(string → string) map get_alarm_config (session ref, VMPP ref)
Removed
string set get_alerts (session ref, VMPP ref, int)
Removed
VMPP ref set get_all (session ref)
Removed
(VMPP ref → VMPP record) map get_all_records (session ref)
Removed
enum vmpp_archive_frequency get_archive_frequency (session ref, VMPP ref)
Removed
datetime get_archive_last_run_time (session ref, VMPP ref)
Removed
(string → string) map get_archive_schedule (session ref, VMPP ref)
Removed
(string → string) map get_archive_target_config (session ref, VMPP ref)
Removed
enum vmpp_archive_target_type get_archive_target_type (session ref, VMPP ref)
Removed
enum vmpp_backup_frequency get_backup_frequency (session ref, VMPP ref)
Removed
datetime get_backup_last_run_time (session ref, VMPP ref)
Removed
int get_backup_retention_value (session ref, VMPP ref)
Removed
(string → string) map get_backup_schedule (session ref, VMPP ref)
Removed
enum vmpp_backup_type get_backup_type (session ref, VMPP ref)
Removed
VMPP ref set get_by_name_label (session ref, string)
Removed
VMPP ref get_by_uuid (session ref, string)
Removed
bool get_is_alarm_enabled (session ref, VMPP ref)
Removed
bool get_is_archive_running (session ref, VMPP ref)
Removed
bool get_is_backup_running (session ref, VMPP ref)
Removed
bool get_is_policy_enabled (session ref, VMPP ref)
string get_name_description (session ref, VMPP ref)
string get_name_label (session ref, VMPP ref)
Removed
string set get_recent_alerts (session ref, VMPP ref)
Removed
VMPP record get_record (session ref, VMPP ref)
Removed
string get_uuid (session ref, VMPP ref)
Removed
VM ref set get_VMs (session ref, VMPP ref)
Removed
string protect_now (session ref, VMPP ref)
Removed
void remove_from_alarm_config (session ref, VMPP ref, string)
Removed
void remove_from_archive_schedule (session ref, VMPP ref, string)
Removed
void remove_from_archive_target_config (session ref, VMPP ref, string)
Removed
void remove_from_backup_schedule (session ref, VMPP ref, string)
Removed
void set_alarm_config (session ref, VMPP ref, (string → string) map)
Removed
void set_archive_frequency (session ref, VMPP ref, enum vmpp_archive_frequency)
Removed
void set_archive_last_run_time (session ref, VMPP ref, datetime)
Removed
void set_archive_schedule (session ref, VMPP ref, (string → string) map)
Removed
void set_archive_target_config (session ref, VMPP ref, (string → string) map)
Removed
void set_archive_target_type (session ref, VMPP ref, enum vmpp_archive_target_type)
Removed
void set_backup_frequency (session ref, VMPP ref, enum vmpp_backup_frequency)
Removed
void set_backup_last_run_time (session ref, VMPP ref, datetime)
Removed
void set_backup_retention_value (session ref, VMPP ref, int)
Removed
void set_backup_schedule (session ref, VMPP ref, (string → string) map)
Removed
void set_backup_type (session ref, VMPP ref, enum vmpp_backup_type)
Removed
void set_is_alarm_enabled (session ref, VMPP ref, bool)
Removed
void set_is_policy_enabled (session ref, VMPP ref, bool)
void set_name_description (session ref, VMPP ref, string)
void set_name_label (session ref, VMPP ref, string)

VMSS

Class: VMSS

VM Snapshot Schedule

Enums

vmss_frequency
vmss_type

Fields

bool enabled [RW]
enum vmss_frequency frequency [RO/constructor]
datetime last_run_time [RO/runtime]
string name_description [RW]
string name_label [RW]
int retained_snapshots [RO/constructor]
(string → string) map schedule [RO/constructor]
enum vmss_type type [RO/constructor]
string uuid [RO/runtime]
VM ref set VMs [RO/runtime]

Messages

void add_to_schedule (session ref, VMSS ref, string, string)
VMSS ref create (session ref, VMSS record)
void destroy (session ref, VMSS ref)
VMSS ref set get_all (session ref)
(VMSS ref → VMSS record) map get_all_records (session ref)
VMSS ref set get_by_name_label (session ref, string)
VMSS ref get_by_uuid (session ref, string)
bool get_enabled (session ref, VMSS ref)
enum vmss_frequency get_frequency (session ref, VMSS ref)
datetime get_last_run_time (session ref, VMSS ref)
string get_name_description (session ref, VMSS ref)
string get_name_label (session ref, VMSS ref)
VMSS record get_record (session ref, VMSS ref)
int get_retained_snapshots (session ref, VMSS ref)
(string → string) map get_schedule (session ref, VMSS ref)
enum vmss_type get_type (session ref, VMSS ref)
string get_uuid (session ref, VMSS ref)
VM ref set get_VMs (session ref, VMSS ref)
void remove_from_schedule (session ref, VMSS ref, string)
void set_enabled (session ref, VMSS ref, bool)
void set_frequency (session ref, VMSS ref, enum vmss_frequency)
void set_last_run_time (session ref, VMSS ref, datetime)
void set_name_description (session ref, VMSS ref, string)
void set_name_label (session ref, VMSS ref, string)
void set_retained_snapshots (session ref, VMSS ref, int)
void set_schedule (session ref, VMSS ref, (string → string) map)
void set_type (session ref, VMSS ref, enum vmss_type)
string snapshot_now (session ref, VMSS ref)

VTPM

Prototype

Class: VTPM

A virtual TPM device

Enums

vtpm_operations
persistence_backend

Fields

enum vtpm_operations set allowed_operations [RO/runtime]
VM ref backend [RO/runtime]
(string → enum vtpm_operations) map current_operations [RO/runtime]
Prototype
bool is_protected [RO/runtime]
Prototype
bool is_unique [RO/constructor]
Prototype
enum persistence_backend persistence_backend [RO/runtime]
string uuid [RO/runtime]
VM ref VM [RO/constructor]

Messages

Prototype
VTPM ref create (session ref, VM ref, bool)
Prototype
void destroy (session ref, VTPM ref)
Prototype
VTPM ref set get_all (session ref)
Prototype
(VTPM ref → VTPM record) map get_all_records (session ref)
enum vtpm_operations set get_allowed_operations (session ref, VTPM ref)
VM ref get_backend (session ref, VTPM ref)
Prototype
VTPM ref get_by_uuid (session ref, string)
(string → enum vtpm_operations) map get_current_operations (session ref, VTPM ref)
Prototype
bool get_is_protected (session ref, VTPM ref)
Prototype
bool get_is_unique (session ref, VTPM ref)
Prototype
enum persistence_backend get_persistence_backend (session ref, VTPM ref)
Prototype
VTPM record get_record (session ref, VTPM ref)
string get_uuid (session ref, VTPM ref)
VM ref get_VM (session ref, VTPM ref)

VUSB

Class: VUSB

Describes the vusb device

Enums

vusb_operations

Fields

enum vusb_operations set allowed_operations [RO/runtime]
(string → enum vusb_operations) map current_operations [RO/runtime]
bool currently_attached [RO/runtime]
(string → string) map other_config [RW]
USB_group ref USB_group [RO/runtime]
string uuid [RO/runtime]
VM ref VM [RO/runtime]

Messages

void add_to_other_config (session ref, VUSB ref, string, string)
VUSB ref create (session ref, VM ref, USB_group ref, (string → string) map)
void destroy (session ref, VUSB ref)
VUSB ref set get_all (session ref)
(VUSB ref → VUSB record) map get_all_records (session ref)
enum vusb_operations set get_allowed_operations (session ref, VUSB ref)
VUSB ref get_by_uuid (session ref, string)
(string → enum vusb_operations) map get_current_operations (session ref, VUSB ref)
bool get_currently_attached (session ref, VUSB ref)
(string → string) map get_other_config (session ref, VUSB ref)
VUSB record get_record (session ref, VUSB ref)
USB_group ref get_USB_group (session ref, VUSB ref)
string get_uuid (session ref, VUSB ref)
VM ref get_VM (session ref, VUSB ref)
void remove_from_other_config (session ref, VUSB ref, string)
void set_other_config (session ref, VUSB ref, (string → string) map)
void unplug (session ref, VUSB ref)

XenAPI Releases

Subsections of XenAPI Releases

XAPI 24.16.0

XAPI 24.16.0

Code name: "24.16.0".

Changes

ChangeElementDescription
Extended classsr_statEnum extended with 'unreachable' and 'unavailable' values
Extended fieldsr_stat.clusteredEnum extended with 'unreachable' and 'unavailable' values
Extended fieldsr_stat.free_spaceEnum extended with 'unreachable' and 'unavailable' values
Extended fieldsr_stat.healthEnum extended with 'unreachable' and 'unavailable' values
Extended fieldsr_stat.name_descriptionEnum extended with 'unreachable' and 'unavailable' values
Extended fieldsr_stat.name_labelEnum extended with 'unreachable' and 'unavailable' values
Extended fieldsr_stat.total_spaceEnum extended with 'unreachable' and 'unavailable' values
Extended fieldsr_stat.uuidEnum extended with 'unreachable' and 'unavailable' values

XAPI 24.14.0

XAPI 24.14.0

Code name: "24.14.0".

Changes

ChangeElementDescription
Prototyped messagePCI.disable_dom0_access
Prototyped messagePCI.enable_dom0_access
Prototyped messagePCI.get_dom0_access_status
Changed fieldVM.has_vendor_deviceNew default and not consulting Pool.policy_no_vendor_device
Deprecated fieldPGPU.dom0_accessUse PCI.get_dom0_access_status instead.
Deprecated fieldpool.policy_no_vendor_deviceNo longer considered by VM.create
Deprecated messagePGPU.disable_dom0_accessUse PCI.disable_dom0_access instead.
Deprecated messagePGPU.enable_dom0_accessUse PCI.enable_dom0_access instead.

XAPI 23.30.0

XAPI 23.30.0

Code name: "23.30.0".

Changes

ChangeElementDescription
Prototyped messageVM.restart_device_models

XAPI 23.25.0

XAPI 23.25.0

Code name: "23.25.0".

Changes

ChangeElementDescription
Removed messagehost.apply_recommended_guidances

XAPI 23.18.0

XAPI 23.18.0

Code name: "23.18.0".

Changes

ChangeElementDescription
Prototyped fieldhost.latest_synced_updates_applied
Prototyped fieldpool.last_update_sync
Prototyped fieldpool.update_sync_day
Prototyped fieldpool.update_sync_enabled
Prototyped fieldpool.update_sync_frequency
Prototyped messagehost.apply_recommended_guidances
Prototyped messagepool.configure_update_sync
Prototyped messagepool.set_update_sync_enabled
Removed fieldRepository.up_to_dateThe up_to_date field of repository was removed

XAPI 23.14.0

XAPI 23.14.0

Code name: "23.14.0".

Changes

ChangeElementDescription
Prototyped classObserver
Prototyped fieldObserver.attributes
Prototyped fieldObserver.components
Prototyped fieldObserver.enabled
Prototyped fieldObserver.endpoints
Prototyped fieldObserver.hosts
Prototyped fieldObserver.uuid
Prototyped messageObserver.set_attributes
Prototyped messageObserver.set_components
Prototyped messageObserver.set_enabled
Prototyped messageObserver.set_endpoints
Prototyped messageObserver.set_hosts

XAPI 23.1.0

XAPI 23.1.0

Code name: "23.1.0".

Changes

ChangeElementDescription
Prototyped fieldVM.actions_after_softreboot

XAPI 22.37.0

XAPI 22.37.0

Code name: "22.37.0".

Changes

ChangeElementDescription
Prototyped fieldpool.coordinator_bias

XAPI 22.33.0

XAPI 22.33.0

Code name: "22.33.0".

Changes

ChangeElementDescription
Prototyped fieldpool.migration_compression

XAPI 22.27.0

XAPI 22.27.0

Code name: "22.27.0".

Changes

ChangeElementDescription
Prototyped fieldhost.https_only
Prototyped messagehost.set_https_only
Prototyped messagepool.set_https_only

XAPI 22.20.0

XAPI 22.20.0

Code name: "22.20.0".

Changes

ChangeElementDescription
Prototyped fieldhost.last_software_update

XAPI 22.19.0

XAPI 22.19.0

Code name: "22.19.0".

Changes

ChangeElementDescription
Prototyped messagemessage.destroy_many

XAPI 22.16.0

XAPI 22.16.0

Code name: "22.16.0".

Changes

ChangeElementDescription
Published messagepool.set_uefi_certificatesSet the UEFI certificates for a pool and all its hosts. Deprecated: use set_custom_uefi_certificates instead
Changed fieldpool.uefi_certificatesBecame StaticRO to be editable through new method
Deprecated fieldhost.uefi_certificatesUse Pool.uefi_certificates instead
Deprecated messagehost.set_uefi_certificatesUse Pool.set_uefi_certificates instead

XAPI 22.12.0

XAPI 22.12.0

Code name: "22.12.0".

Changes

ChangeElementDescription
Prototyped fieldRepository.gpgkey_path
Prototyped messageRepository.set_gpgkey_path

XAPI 22.5.0

XAPI 22.5.0

Code name: "22.5.0".

Changes

ChangeElementDescription
Published fieldrole.is_internalIndicates whether the role is only to be assigned internally by xapi, or can be used by clients

XAPI 21.4.0

XAPI 21.4.0

Code name: "21.4.0".

Changes

ChangeElementDescription
Published messagepool.disable_repository_proxyDisable the proxy for RPM package repositories.

XAPI 21.3.0

XAPI 21.3.0

Code name: "21.3.0".

Changes

ChangeElementDescription
Published fieldpool.repository_proxy_passwordPassword for the authentication of the proxy used in syncing with the enabled repositories
Published fieldpool.repository_proxy_urlUrl of the proxy used in syncing with the enabled repositories
Published fieldpool.repository_proxy_usernameUsername for the authentication of the proxy used in syncing with the enabled repositories
Published messagepool.configure_repository_proxyConfigure proxy for RPM package repositories.
Published messagetask.set_error_infoSet the task error info
Published messagetask.set_resultSet the task result

XAPI 21.2.0

XAPI 21.2.0

Code name: "21.2.0".

Changes

ChangeElementDescription
Published fieldsession.client_certificateindicates whether this session was authenticated using a client certificate

XAPI 1.329.0

XAPI 1.329.0

Code name: "1.329.0".

Changes

ChangeElementDescription
Published messagepool.sync_updatesSync with the enabled repository

XAPI 1.318.0

XAPI 1.318.0

Code name: "1.318.0".

Changes

ChangeElementDescription
Published fieldpool.client_certificate_auth_enabledTrue if authentication by TLS client certificates is enabled
Published fieldpool.client_certificate_auth_nameThe name (CN/SAN) that an incoming client certificate must have to allow authentication
Published messagepool.disable_client_certificate_authDisable client certificate authentication on the pool
Published messagepool.enable_client_certificate_authEnable client certificate authentication on the pool

XAPI 1.313.0

XAPI 1.313.0

Code name: "1.313.0".

Changes

ChangeElementDescription
Published fieldhost.tls_verification_enabledTrue if this host has TLS verifcation enabled
Extended fieldmessage.clsAdded Certificate class

XAPI 1.307.0

XAPI 1.307.0

Code name: "1.307.0".

Changes

ChangeElementDescription
Published messagehost.refresh_server_certificateReplace the internal self-signed host certficate with a new one.

XAPI 1.304.0

XAPI 1.304.0

Code name: "1.304.0".

Changes

ChangeElementDescription
Published messagepool.check_update_readinessCheck if the pool is ready to be updated. If not, report the reasons.

XAPI 1.303.0

XAPI 1.303.0

Code name: "1.303.0".

Changes

ChangeElementDescription
Published fieldVM.pending_guidancesThe set of pending mandatory guidances after applying updates, which must be applied, as otherwise there may be e.g. VM failures
Published fieldhost.pending_guidancesThe set of pending mandatory guidances after applying updates, which must be applied, as otherwise there may be e.g. VM failures

XAPI 1.301.0

XAPI 1.301.0

Code name: "1.301.0".

Changes

ChangeElementDescription
Published classRepositoryRepository for updates
Published fieldRepository.binary_urlBase URL of binary packages in this repository
Published fieldRepository.hashSHA256 checksum of latest updateinfo.xml.gz in this repository if its 'update' is true
Published fieldRepository.source_urlBase URL of source packages in this repository
Published fieldRepository.up_to_dateTrue if all hosts in pool is up to date with this repository
Published fieldRepository.updateTrue if updateinfo.xml in this repository needs to be parsed
Published fieldRepository.uuidUnique identifier/object reference
Published fieldpool.repositoriesThe set of currently enabled repositories
Published messageRepository.forgetRemove the repository record from the database
Published messageRepository.introduceAdd the configuration for a new repository
Published messagehost.apply_updatesapply updates from current enabled repository on a host
Published messagepool.add_repositoryAdd a repository to the enabled set
Published messagepool.remove_repositoryRemove a repository from the enabled set
Published messagepool.set_repositoriesSet enabled set of repositories

XAPI 1.298.0

XAPI 1.298.0

Code name: "1.298.0".

Changes

ChangeElementDescription
Published messagehost.emergency_reenable_tls_verificationReenable TLS verification for this host only

XAPI 1.297.0

XAPI 1.297.0

Code name: "1.297.0".

Changes

ChangeElementDescription
Extended messagehost.evacuateEnable migration network selection.

XAPI 1.294.0

XAPI 1.294.0

Code name: "1.294.0".

Changes

ChangeElementDescription
Published fieldCertificate.nameThe name of the certificate, only present on certificates of type 'ca'
Published fieldCertificate.typeThe type of the certificate, either 'ca', 'host' or 'host_internal'

XAPI 1.290.0

XAPI 1.290.0

Code name: "1.290.0".

Changes

ChangeElementDescription
Published fieldpool.tls_verification_enabledTrue iff TLS certificate verification is enabled
Published messagehost.emergency_disable_tls_verificationDisable TLS verification for this host only
Published messagehost.reset_server_certificateDelete the current TLS server certificate and replace by a new, self-signed one. This should only be used with extreme care.
Published messagepool.enable_tls_verificationEnable TLS server certificate verification
Published messagepool.install_ca_certificateInstall TLS CA certificate
Published messagepool.uninstall_ca_certificateUninstall TLS CA certificate
Deprecated fieldpool.wlb_verify_certDeprecated: to enable TLS verification use Pool.enable_tls_verification instead
Deprecated messagepool.certificate_installUse Pool.install_ca_certificate instead
Deprecated messagepool.certificate_listUse openssl to inspect certificate
Deprecated messagepool.certificate_uninstallUse Pool.uninstall_ca_certificate instead

XAPI 1.271.0

XAPI 1.271.0

Code name: "1.271.0".

Changes

ChangeElementDescription
Published messagehost.get_sched_granGets xen's sched-gran on a host
Published messagehost.set_sched_granSets xen's sched-gran on a host. See: https://xenbits.xen.org/docs/unstable/misc/xen-command-line.html#sched-gran-x86

XAPI 1.257.0

XAPI 1.257.0

Code name: "1.257.0".

Changes

ChangeElementDescription
Changed classVMpossibility to create a VM in suspended mode with a suspend_VDI set
Changed fieldVBD.currently_attachedMade StaticRO to allow plugged VIF and VBD creation for Suspended VM
Changed fieldVBD.deviceBecome static to allow plugged VBD creation for Suspended VM
Changed fieldVIF.currently_attachedMade StaticRO to allow plugged VIF and VBD creation for Suspended VM
Changed fieldVM.last_booted_recordBecome static to allow Suspended VM creation
Changed fieldVM.power_stateMade StaticRO to allow Suspended VM creation
Changed fieldVM.suspend_VDIBecome static to allow Suspended VM creation

XAPI 1.250.0

XAPI 1.250.0

Code name: "1.250.0".

Changes

ChangeElementDescription
Published fieldtunnel.protocolAdd protocol field to tunnel

XenServer 8 Preview

XenServer 8 Preview

Code name: "nile-preview".

No changes...

Citrix Hypervisor 8.2 Hotfix 2

Citrix Hypervisor 8.2 Hotfix 2

Code name: "stockholm_psr".

Changes

ChangeElementDescription
Published fieldpool.is_psr_pendingTrue if either a PSR is running or we are waiting for a PSR to be re-run
Published messagepool.rotate_secret

Citrix Hypervisor 8.2

Citrix Hypervisor 8.2

Code name: "stockholm".

Changes

ChangeElementDescription
Published classCertificateAn X509 certificate used for TLS connections
Published fieldCertificate.fingerprintThe certificate's SHA256 fingerprint / hash
Published fieldCertificate.hostThe host where the certificate is installed
Published fieldCertificate.not_afterDate before which the certificate is valid
Published fieldCertificate.not_beforeDate after which the certificate is valid
Published fieldCertificate.uuidUnique identifier/object reference
Published fieldPUSB.speedUSB device speed
Published fieldhost.certificatesList of certificates installed in the host
Published fieldhost.editionsList of all available product editions
Published messagehost.emergency_reset_server_certificateDelete the current TLS server certificate and replace by a new, self-signed one. This should only be used with extreme care.
Published messagehost.install_server_certificateInstall the TLS server certificate.
Published messagetask.set_progressSet the task progress
Changed messagehost.set_power_on_modeRemoved iLO script
Changed messagehost.set_ssl_legacyLegacy SSL no longer supported
Deprecated fieldhost.ssl_legacyLegacy SSL no longer supported
Deprecated messagepool.disable_ssl_legacyLegacy SSL no longer supported
Removed messagepool.enable_ssl_legacyLegacy SSL no longer supported

Citrix Hypervisor 8.1

Citrix Hypervisor 8.1

Code name: "quebec".

Changes

ChangeElementDescription
Published fieldBond.auto_update_mactrue if the MAC was taken from the primary slave when the bond was created, and false if the client specified the MAC
Published fieldVGPU.PCIDevice passed trough to VM, either as full device or SR-IOV virtual function
Published fieldVGPU.extra_argsExtra arguments for vGPU and passed to demu
Published fieldVGPU_type.compatible_types_in_vmList of VGPU types which are compatible in one VM
Published fieldhost.uefi_certificatesThe UEFI certificates allowing Secure Boot
Published fieldpool.uefi_certificatesThe UEFI certificates allowing Secure Boot
Published messagehost.set_uefi_certificatesSets the UEFI certificates on a host
Changed messageVM.assert_can_boot_hereDoes additional compatibility checks when VM powerstate is not halted (e.g. CPUID). Use this before calling VM.resume or VM.pool_migrate.
Removed messageVM.snapshot_with_quiesceVSS support has been removed

Citrix Hypervisor 8.0

Citrix Hypervisor 8.0

Code name: "naples".

Changes

ChangeElementDescription
Published fieldVM.NVRAMinitial value for guest NVRAM (containing UEFI variables, etc). Cannot be changed while the VM is running
Published messageVM.add_to_NVRAM
Published messageVM.remove_from_NVRAM
Published messageVM.set_NVRAM

XenServer 7.6

XenServer 7.6

Code name: "lima".

Changes

ChangeElementDescription
Published classClusterCluster-wide Cluster metadata
Published classCluster_hostCluster member metadata
Published classprobe_resultA set of properties that describe one result element of SR.probe. Result elements and properties can change dynamically based on changes to the the SR.probe input-parameters or the target.
Published classsr_statA set of high-level properties associated with an SR.
Published fieldCluster.cluster_configContains read-only settings for the cluster, such as timeouts and other options. It can only be set at cluster create time
Published fieldCluster.cluster_hostsA list of the cluster_host objects associated with the Cluster
Published fieldCluster.cluster_stackSimply the string 'corosync'. No other cluster stacks are currently supported
Published fieldCluster.cluster_stack_versionVersion of cluster stack, not writable via the API. Defaulting to 2 for backwards compatibility when upgrading from a cluster without this field, which means it is necessarily running version 2 of corosync, the only cluster stack supported so far.
Published fieldCluster.cluster_tokenThe secret key used by xapi-clusterd when it talks to itself on other hosts
Published fieldCluster.other_configAdditional configuration
Published fieldCluster.pending_forgetInternal field used by Host.destroy to store the IP of cluster members marked as permanently dead but not yet removed
Published fieldCluster.pool_auto_joinTrue if automatically joining new pool members to the cluster. This will be `true` in the first release
Published fieldCluster.uuidUnique identifier/object reference
Published fieldCluster_host.PIFReference to the PIF object
Published fieldCluster_host.clusterReference to the Cluster object
Published fieldCluster_host.enabledWhether the cluster host believes that clustering should be enabled on this host. This field can be altered by calling the enable/disable message on a cluster host. Only enabled members run the underlying cluster stack. Disabled members are still considered a member of the cluster (see joined), and can be re-enabled by the user.
Published fieldCluster_host.hostReference to the Host object
Published fieldCluster_host.joinedWhether the cluster host has joined the cluster. Contrary to enabled, a host that is not joined is not considered a member of the cluster, and hence enable and disable operations cannot be performed on this host.
Published fieldCluster_host.other_configAdditional configuration
Published fieldCluster_host.uuidUnique identifier/object reference
Published fieldprobe_result.completeTrue if this configuration is complete and can be used to call SR.create. False if it requires further iterative calls to SR.probe, to potentially narrow down on a configuration that can be used.
Published fieldprobe_result.configurationPlugin-specific configuration which describes where and how to locate the storage repository. This may include the physical block device name, a remote NFS server and path or an RBD storage pool.
Published fieldprobe_result.extra_infoAdditional plugin-specific information about this configuration, that might be of use for an API user. This can for example include the LUN or the WWPN.
Published fieldprobe_result.srExisting SR found for this configuration
Published fieldsr_stat.clusteredIndicates whether the SR uses clustered local storage.
Published fieldsr_stat.free_spaceNumber of bytes free on the backing storage (in bytes)
Published fieldsr_stat.healthThe health status of the SR.
Published fieldsr_stat.name_descriptionLonger, human-readable description of the SR. Descriptions are generally only displayed by clients when the user is examining SRs in detail.
Published fieldsr_stat.name_labelShort, human-readable label for the SR.
Published fieldsr_stat.total_spaceTotal physical size of the backing storage (in bytes)
Published fieldsr_stat.uuidUuid that uniquely identifies this SR, if one is available.
Published messageCluster.createCreates a Cluster object and one Cluster_host object as its first member
Published messageCluster.destroyDestroys a Cluster object and the one remaining Cluster_host member
Published messageCluster.get_networkReturns the network used by the cluster for inter-host communication, i.e. the network shared by all cluster host PIFs
Published messageCluster.pool_createAttempt to create a Cluster from the entire pool
Published messageCluster.pool_destroyAttempt to destroy the Cluster_host objects for all hosts in the pool and then destroy the Cluster.
Published messageCluster.pool_force_destroyAttempt to force destroy the Cluster_host objects, and then destroy the Cluster.
Published messageCluster.pool_resyncResynchronise the cluster_host objects across the pool. Creates them where they need creating and then plugs them
Published messageCluster_host.createAdd a new host to an existing cluster.
Published messageCluster_host.destroyRemove the host from an existing cluster. This operation is allowed even if a cluster host is not enabled.
Published messageCluster_host.disableDisable cluster membership for an enabled cluster host.
Published messageCluster_host.enableEnable cluster membership for a disabled cluster host.
Published messageCluster_host.force_destroyRemove a host from an existing cluster forcefully.
Published messageSR.probe_extPerform a backend-specific scan, using the given device_config. If the device_config is complete, then this will return a list of the SRs present of this type on the device, if any. If the device_config is partial, then a backend-specific scan will be performed, returning results that will guide the user in improving the device_config.
Changed fieldCluster.token_timeoutthe unit is now seconds
Changed fieldCluster.token_timeout_coefficientthe unit is now seconds

XenServer 7.5

XenServer 7.5

Code name: "kolkata".

Changes

ChangeElementDescription
Prototyped classCluster
Prototyped classCluster_host
Prototyped classprobe_result
Prototyped classsr_stat
Prototyped fieldCluster.cluster_config
Prototyped fieldCluster.cluster_hosts
Prototyped fieldCluster.cluster_stack
Prototyped fieldCluster.cluster_stack_version
Prototyped fieldCluster.cluster_token
Prototyped fieldCluster.other_config
Prototyped fieldCluster.pool_auto_join
Prototyped fieldCluster.token_timeoutthe unit is milliseconds
Prototyped fieldCluster.token_timeout_coefficientthe unit is milliseconds
Prototyped fieldCluster.uuid
Prototyped fieldCluster_host.PIF
Prototyped fieldCluster_host.cluster
Prototyped fieldCluster_host.enabled
Prototyped fieldCluster_host.host
Prototyped fieldCluster_host.joined
Prototyped fieldCluster_host.other_config
Prototyped fieldCluster_host.uuid
Prototyped fieldprobe_result.complete
Prototyped fieldprobe_result.configuration
Prototyped fieldprobe_result.extra_info
Prototyped fieldprobe_result.sr
Prototyped fieldsr_stat.clustered
Prototyped fieldsr_stat.free_space
Prototyped fieldsr_stat.health
Prototyped fieldsr_stat.name_description
Prototyped fieldsr_stat.name_label
Prototyped fieldsr_stat.total_space
Prototyped fieldsr_stat.uuid
Prototyped messageCluster.create
Prototyped messageCluster.destroy
Prototyped messageCluster.get_network
Prototyped messageCluster.pool_create
Prototyped messageCluster.pool_destroy
Prototyped messageCluster.pool_force_destroy
Prototyped messageCluster.pool_resync
Prototyped messageCluster_host.create
Prototyped messageCluster_host.destroy
Prototyped messageCluster_host.disable
Prototyped messageCluster_host.enable
Prototyped messageCluster_host.force_destroy
Prototyped messageSR.probe_ext
Published classnetwork_sriovnetwork-sriov which connects logical pif and physical pif
Published fieldPCI.driver_nameDriver name
Published fieldPIF.PCILink to underlying PCI device
Published fieldPIF.sriov_logical_PIF_ofIndicates which network_sriov this interface is logical of
Published fieldPIF.sriov_physical_PIF_ofIndicates which network_sriov this interface is physical of
Published fieldVM.domain_typeThe field is now valid
Published fieldVM_metrics.current_domain_typeThis field now contains valid data
Published fieldhost.iscsi_iqnThe initiator IQN for the host
Published fieldhost.multipathingSpecifies whether multipathing is enabled
Published fieldnetwork_sriov.configuration_modeThe mode for configure network sriov
Published fieldnetwork_sriov.logical_PIFThe logical PIF to connect to the SR-IOV network after enable SR-IOV on the physical PIF
Published fieldnetwork_sriov.physical_PIFThe PIF that has SR-IOV enabled
Published fieldnetwork_sriov.requires_rebootIndicates whether the host need to be rebooted before SR-IOV is enabled on the physical PIF
Published messageVM.set_domain_typeSet the VM.domain_type field of the given VM, which will take effect when it is next started
Published messagehost.set_iscsi_iqnSets the initiator IQN for the host
Published messagehost.set_multipathingSpecifies whether multipathing is enabled
Published messagenetwork_sriov.createEnable SR-IOV on the specific PIF. It will create a network-sriov based on the specific PIF and automatically create a logical PIF to connect the specific network.
Published messagenetwork_sriov.destroyDisable SR-IOV on the specific PIF. It will destroy the network-sriov and the logical PIF accordingly.
Published messagenetwork_sriov.get_remaining_capacityGet the number of free SR-IOV VFs on the associated PIF
Deprecated fieldVM.HVM_boot_policyReplaced by VM.domain_type
Deprecated messageVM.set_HVM_boot_policyReplaced by VM.set_domain_type

XenServer 7.4

XenServer 7.4

Code name: "jura".

Changes

ChangeElementDescription
Prototyped fieldVM.domain_typeInternal-only field; not yet in the public API
Prototyped fieldVM_metrics.current_domain_typeNot yet implemented (for future use)

XenServer 7.3

XenServer 7.3

Code name: "inverness".

Changes

ChangeElementDescription
Published classPUSBA physical USB device
Published classUSB_groupA group of compatible USBs across the resource pool
Published classVUSBDescribes the vusb device
Published classvdi_nbd_server_infoDetails for connecting to a VDI using the Network Block Device protocol
Published fieldPGPU.compatibility_metadataPGPU metadata to determine whether a VGPU can migrate between two PGPUs
Published fieldPIF.igmp_snooping_statusThe IGMP snooping status of the corresponding network bridge
Published fieldPUSB.USB_groupUSB group the PUSB is contained in
Published fieldPUSB.descriptionUSB device description
Published fieldPUSB.hostPhysical machine that owns the USB device
Published fieldPUSB.other_configadditional configuration
Published fieldPUSB.passthrough_enabledenabled for passthrough
Published fieldPUSB.pathport path of USB device
Published fieldPUSB.product_descproduct description of the USB device
Published fieldPUSB.product_idproduct id of the USB device
Published fieldPUSB.serialserial of the USB device
Published fieldPUSB.uuidUnique identifier/object reference
Published fieldPUSB.vendor_descvendor description of the USB device
Published fieldPUSB.vendor_idvendor id of the USB device
Published fieldPUSB.versionUSB device version
Published fieldUSB_group.PUSBsList of PUSBs in the group
Published fieldUSB_group.VUSBsList of VUSBs using the group
Published fieldUSB_group.name_descriptiona notes field containing human-readable description
Published fieldUSB_group.name_labela human-readable name
Published fieldUSB_group.other_configAdditional configuration
Published fieldUSB_group.uuidUnique identifier/object reference
Published fieldVDI.cbt_enabledTrue if changed blocks are tracked for this VDI
Published fieldVGPU.compatibility_metadataVGPU metadata to determine whether a VGPU can migrate between two PGPUs
Published fieldVUSB.USB_groupUSB group used by the VUSB
Published fieldVUSB.VMVM that owns the VUSB
Published fieldVUSB.other_configAdditional configuration
Published fieldVUSB.uuidUnique identifier/object reference
Published fieldhost.PUSBsList of physical USBs in the host
Published fieldnetwork.purposeSet of purposes for which the server will use this network
Published fieldpool.igmp_snooping_enabledtrue if IGMP snooping is enabled in the pool, false otherwise.
Published fieldpool_update.enforce_homogeneityFlag - if true, all hosts in a pool must apply this update
Published fieldpool_update.other_configadditional configuration
Published fieldvdi_nbd_server_info.addressAn address on which the server can be reached; this can be IPv4, IPv6, or a DNS name.
Published fieldvdi_nbd_server_info.certThe TLS certificate of the server
Published fieldvdi_nbd_server_info.exportnameThe exportname to request over NBD. This holds details including an authentication token, so it must be protected appropriately. Clients should regard the exportname as an opaque string or token.
Published fieldvdi_nbd_server_info.portThe TCP port
Published fieldvdi_nbd_server_info.subjectFor convenience, this redundant field holds a DNS (hostname) subject of the certificate. This can be a wildcard, but only for a certificate that has a wildcard subject and no concrete hostname subjects.
Published messagePUSB.scan
Published messagePUSB.set_passthrough_enabled
Published messageUSB_group.create
Published messageUSB_group.destroy
Published messageVDI.data_destroyDelete the data of the snapshot VDI, but keep its changed block tracking metadata. When successful, this call changes the type of the VDI to cbt_metadata. This operation is idempotent: calling it on a VDI of type cbt_metadata results in a no-op, and no error will be thrown.
Published messageVDI.disable_cbtDisable changed block tracking for the VDI. This call is only allowed on VDIs that support enabling CBT. It is an idempotent operation - disabling CBT for a VDI for which CBT is not enabled results in a no-op, and no error will be thrown.
Published messageVDI.enable_cbtEnable changed block tracking for the VDI. This call is idempotent - enabling CBT for a VDI for which CBT is already enabled results in a no-op, and no error will be thrown.
Published messageVDI.get_nbd_infoGet details specifying how to access this VDI via a Network Block Device server. For each of a set of NBD server addresses on which the VDI is available, the return value set contains a vdi_nbd_server_info object that contains an exportname to request once the NBD connection is established, and connection details for the address. An empty list is returned if there is no network that has a PIF on a host with access to the relevant SR, or if no such network has been assigned an NBD-related purpose in its purpose field. To access the given VDI, any of the vdi_nbd_server_info objects can be used to make a connection to a server, and then the VDI will be available by requesting the exportname.
Published messageVDI.list_changed_blocksCompare two VDIs in 64k block increments and report which blocks differ. This operation is not allowed when vdi_to is attached to a VM.
Published messageVM.set_bios_stringsSet custom BIOS strings to this VM. VM will be given a default set of BIOS strings, only some of which can be overridden by the supplied values. Allowed keys are: 'bios-vendor', 'bios-version', 'system-manufacturer', 'system-product-name', 'system-version', 'system-serial-number', 'enclosure-asset-tag', 'baseboard-manufacturer', 'baseboard-product-name', 'baseboard-version', 'baseboard-serial-number', 'baseboard-asset-tag', 'baseboard-location-in-chassis', 'enclosure-asset-tag'
Published messageVUSB.createCreate a new VUSB record in the database only
Published messageVUSB.destroyRemoves a VUSB record from the database
Published messageVUSB.unplugUnplug the vusb device from the vm.
Published messagenetwork.add_purposeGive a network a new purpose (if not present already)
Published messagenetwork.remove_purposeRemove a purpose from a network (if present)
Published messagepool.management_reconfigureReconfigure the management network interface for all Hosts in the Pool
Published messagepool.set_igmp_snooping_enabledEnable or disable IGMP Snooping on the pool.
Changed messagehost.get_server_certificateNow available to all RBAC roles.
Deprecated classcrashdump
Deprecated messageVM.get_boot_recordUse the current VM record/fields instead
Removed messageVDI.resize_onlineOnline VDI resize is not supported by any of the storage backends.

XenServer 7.2

XenServer 7.2

Code name: "falcon".

Changes

ChangeElementDescription
Published classFeatureA new piece of functionality
Published classSDN_controllerDescribes the SDN controller that is to connect with the pool
Published classVMSSVM Snapshot Schedule
Published fieldFeature.enabledIndicates whether the feature is enabled
Published fieldFeature.experimentalIndicates whether the feature is experimental (as opposed to stable and fully supported)
Published fieldFeature.hostThe host where this feature is available
Published fieldFeature.uuidUnique identifier/object reference
Published fieldFeature.versionThe version of this feature
Published fieldSDN_controller.addressIP address of the controller
Published fieldSDN_controller.portTCP port of the controller
Published fieldSDN_controller.protocolProtocol to connect with SDN controller
Published fieldSDN_controller.uuidUnique identifier/object reference
Published fieldVM.is_default_templateIdentifies default templates
Published fieldVM.is_vmss_snapshottrue if this snapshot was created by the snapshot schedule
Published fieldVM.snapshot_scheduleRef pointing to a snapshot schedule for this VM
Published fieldhost.featuresList of features available on this host
Published fieldnetwork.managedtrue if the bridge is managed by xapi
Published messageSDN_controller.forgetRemove the OVS manager of the pool and destroy the db record.
Published messageSDN_controller.introduceIntroduce an SDN controller to the pool.
Published messageVM.set_snapshot_scheduleSet the value of the snapshot schedule field
Published messageVMSS.add_to_schedule
Published messageVMSS.remove_from_schedule
Published messageVMSS.set_frequencySet the value of the frequency field
Published messageVMSS.set_last_run_time
Published messageVMSS.set_retained_snapshots
Published messageVMSS.set_schedule
Published messageVMSS.set_type
Published messageVMSS.snapshot_nowThis call executes the snapshot schedule immediately
Published messagetask.set_statusSet the task status
Changed fieldnetwork.bridgeAdded to the constructor (network.create)
Deprecated fieldpool.vswitch_controllerDeprecated: set the IP address of the vswitch controller in SDN_controller instead.
Deprecated messagepool.set_vswitch_controllerDeprecated: use 'SDN_controller.introduce' and 'SDN_controller.forget' instead.

XenServer 7.1

XenServer 7.1

Code name: "ely".

Changes

ChangeElementDescription
Published classPVS_cache_storageDescribes the storage that is available to a PVS site for caching purposes
Published classPVS_proxya proxy connects a VM/VIF with a PVS site
Published classPVS_serverindividual machine serving provisioning (block) data
Published classPVS_sitemachines serving blocks of data for provisioning VMs
Published classpool_updatePool-wide updates to the host software
Published fieldPVS_cache_storage.SRSR providing storage for the PVS cache
Published fieldPVS_cache_storage.VDIThe VDI used for caching
Published fieldPVS_cache_storage.hostThe host on which this object defines PVS cache storage
Published fieldPVS_cache_storage.siteThe PVS_site for which this object defines the storage
Published fieldPVS_cache_storage.sizeThe size of the cache VDI (in bytes)
Published fieldPVS_cache_storage.uuidUnique identifier/object reference
Published fieldPVS_proxy.VIFVIF of the VM using the proxy
Published fieldPVS_proxy.currently_attachedtrue = VM is currently proxied
Published fieldPVS_proxy.sitePVS site this proxy is part of
Published fieldPVS_proxy.statusThe run-time status of the proxy
Published fieldPVS_proxy.uuidUnique identifier/object reference
Published fieldPVS_server.addressesIPv4 addresses of this server
Published fieldPVS_server.first_portFirst UDP port accepted by this server
Published fieldPVS_server.last_portLast UDP port accepted by this server
Published fieldPVS_server.sitePVS site this server is part of
Published fieldPVS_server.uuidUnique identifier/object reference
Published fieldPVS_site.PVS_uuidUnique identifier of the PVS site, as configured in PVS
Published fieldPVS_site.cache_storageThe SR used by PVS proxy for the cache
Published fieldPVS_site.name_descriptiona notes field containing human-readable description
Published fieldPVS_site.name_labela human-readable name
Published fieldPVS_site.proxiesThe set of proxies associated with the site
Published fieldPVS_site.serversThe set of PVS servers in the site
Published fieldPVS_site.uuidUnique identifier/object reference
Published fieldVM.reference_labelTextual reference to the template used to create a VM. This can be used by clients in need of an immutable reference to the template since the latter's uuid and name_label may change, for example, after a package installation or upgrade.
Published fieldVM.requires_rebootIndicates whether a VM requires a reboot in order to update its configuration, e.g. its memory allocation.
Published fieldVM_metrics.hvmhardware virtual machine
Published fieldVM_metrics.nested_virtVM supports nested virtualisation
Published fieldVM_metrics.nomigrateVM is immobile and can't migrate between hosts
Published fieldhost.control_domainThe control domain (domain 0)
Published fieldhost.updatesSet of updates
Published fieldhost.updates_requiring_rebootList of updates which require reboot
Published fieldpool.live_patching_disabledThe pool-wide flag to show if the live patching feauture is disabled or not.
Published fieldpool_patch.pool_updateA reference to the associated pool_update object
Published fieldpool_update.after_apply_guidanceWhat the client should do after this update has been applied.
Published fieldpool_update.hostsThe hosts that have applied this update.
Published fieldpool_update.installation_sizeSize of the update in bytes
Published fieldpool_update.keyGPG key of the update
Published fieldpool_update.versionUpdate version number
Published messagePVS_proxy.createConfigure a VM/VIF to use a PVS proxy
Published messagePVS_proxy.destroyremove (or switch off) a PVS proxy for this VM
Published messagePVS_server.forgetforget a PVS server
Published messagePVS_server.introduceintroduce new PVS server
Published messagePVS_site.forgetRemove a site's meta data
Published messagePVS_site.introduceIntroduce new PVS site
Published messagePVS_site.set_PVS_uuidUpdate the PVS UUID of the PVS site
Published messageVIF.moveMove the specified VIF to the specified network, even while the VM is running
Published messageVM.set_memorySet the memory allocation of this VM. Sets all of memory_static_max, memory_dynamic_min, and memory_dynamic_max to the given value, and leaves memory_static_min untouched.
Published messagehost.call_extensionCall an API extension on this host
Published messagehost.has_extensionReturn true if the extension is available on the host
Published messagepool_update.applyApply the selected update to a host
Published messagepool_update.destroyRemoves the database entry. Only works on unapplied update.
Published messagepool_update.introduceIntroduce update VDI
Published messagepool_update.pool_applyApply the selected update to all hosts in the pool
Published messagepool_update.pool_cleanRemoves the update's files from all hosts in the pool, but does not revert the update
Published messagepool_update.precheckExecute the precheck stage of the selected update on a host
Changed messageVM.set_VCPUs_number_liveUnless the feature is explicitly enabled for every host in the pool, this fails with Api_errors.license_restriction.
Deprecated classhost_patch
Deprecated classpool_patch
Deprecated fieldVDI.parentThe field was never used.
Deprecated fieldhost.patches
Deprecated messagehost.refresh_pack_infoUse Pool_update.resync_host instead
Deprecated messagepool_patch.apply
Deprecated messagepool_patch.clean
Deprecated messagepool_patch.clean_on_host
Deprecated messagepool_patch.destroy
Deprecated messagepool_patch.pool_apply
Deprecated messagepool_patch.pool_clean
Deprecated messagepool_patch.precheck

XenServer 7.0

XenServer 7.0

Code name: "dundee".

Changes

ChangeElementDescription
Published classLVHDLVHD SR specific operations
Published fieldPIF.capabilitiesAdditional capabilities on the interface.
Published fieldSM.required_cluster_stackThe storage plugin requires that one of these cluster stacks is configured and running.
Published fieldSR.clusteredTrue if the SR is using aggregated local storage
Published fieldSR.is_tools_srTrue if this is the SR that contains the Tools ISO VDIs
Published fieldVDI.is_tools_isoWhether this VDI is a Tools ISO
Published fieldVGPU.scheduled_to_be_resident_onThe PGPU on which this VGPU is scheduled to run
Published fieldVGPU_type.experimentalIndicates whether VGPUs of this type should be considered experimental
Published fieldVGPU_type.identifierKey used to identify VGPU types and avoid creating duplicates - this field is used internally and not intended for interpretation by API clients
Published fieldVGPU_type.implementationThe internal implementation of this VGPU type
Published fieldVIF.ipv4_addressesIPv4 addresses in CIDR format
Published fieldVIF.ipv4_configuration_modeDetermines whether IPv4 addresses are configured on the VIF
Published fieldVIF.ipv4_gatewayIPv4 gateway (the empty string means that no gateway is set)
Published fieldVIF.ipv6_addressesIPv6 addresses in CIDR format
Published fieldVIF.ipv6_configuration_modeDetermines whether IPv6 addresses are configured on the VIF
Published fieldVIF.ipv6_gatewayIPv6 gateway (the empty string means that no gateway is set)
Published fieldVM.has_vendor_deviceWhen an HVM guest starts, this controls the presence of the emulated C000 PCI device which triggers Windows Update to fetch or update PV drivers.
Published fieldVM_guest_metrics.PV_drivers_detectedAt least one of the guest's devices has successfully connected to the backend.
Published fieldVM_guest_metrics.can_use_hotplug_vbdTo be used where relevant and available instead of checking PV driver version.
Published fieldVM_guest_metrics.can_use_hotplug_vifTo be used where relevant and available instead of checking PV driver version.
Published fieldhost.ssl_legacyAllow SSLv3 protocol and ciphersuites as used by older server versions. This controls both incoming and outgoing connections. When this is set to a different value, the host immediately restarts its SSL/TLS listening service; typically this takes less than a second but existing connections to it will be broken. API login sessions will remain valid.
Published fieldpool.cpu_infoDetails about the physical CPUs on the pool
Published fieldpool.guest_agent_configPool-wide guest agent configuration information
Published fieldpool.ha_cluster_stackThe HA cluster stack that is currently in use. Only valid when HA is enabled.
Published fieldpool.health_check_configConfiguration for the automatic health check feature
Published fieldpool.policy_no_vendor_deviceThis field was consulted when VM.create did not specify a value for 'has_vendor_device'; VM.create now uses a simple default and no longer consults this value.
Published fieldtask.backtraceFunction call trace for debugging.
Published messageLVHD.enable_thin_provisioningUpgrades an LVHD SR to enable thin-provisioning. Future VDIs created in this SR will be thinly-provisioned, although existing VDIs will be left alone. Note that the SR must be attached to the SRmaster for upgrade to work.
Published messageSR.forget_data_source_archivesForget the recorded statistics related to the specified data source
Published messageSR.get_data_sources
Published messageSR.query_data_sourceQuery the latest value of the specified data source
Published messageSR.record_data_sourceStart recording the specified data source
Published messageVIF.configure_ipv4Configure IPv4 settings for this virtual interface
Published messageVIF.configure_ipv6Configure IPv6 settings for this virtual interface
Published messageVM.importImport an XVA from a URI
Published messageVM.set_has_vendor_deviceControls whether, when the VM starts in HVM mode, its virtual hardware will include the emulated PCI device for which drivers may be available through Windows Update. Usually this should never be changed on a VM on which Windows has been installed: changing it on such a VM is likely to lead to a crash on next start.
Published messagehost.set_ssl_legacyEnable/disable SSLv3 for interoperability with older server versions. When this is set to a different value, the host immediately restarts its SSL/TLS listening service; typically this takes less than a second but existing connections to it will be broken. API login sessions will remain valid.
Published messagepool.add_to_guest_agent_configAdd a key-value pair to the pool-wide guest agent configuration
Published messagepool.disable_ssl_legacySets ssl_legacy false on each host, pool-master last. See Host.ssl_legacy and Host.set_ssl_legacy.
Published messagepool.has_extensionReturn true if the extension is available on the pool
Published messagepool.remove_from_guest_agent_configRemove a key-value pair from the pool-wide guest agent configuration
Published messagesession.create_from_db_file
Deprecated fieldVM_guest_metrics.PV_drivers_up_to_dateDeprecated in favour of PV_drivers_detected, and redefined in terms of it
Deprecated messagepool.enable_ssl_legacyLegacy SSL will soon cease to be supported
Removed messagehost.reset_cpu_featuresManual CPU feature setting was removed
Removed messagehost.set_cpu_featuresManual CPU feature setting was removed

XenServer 6.5 SP1 Hotfix 31

XenServer 6.5 SP1 Hotfix 31

Code name: "indigo".

Changes

ChangeElementDescription
Published messagehost.license_addFunctionality for parsing license files re-added
Published messagehost.license_removeRemove any license file from the specified host, and switch that host to the unlicensed edition

XenServer 6.5 SP1

XenServer 6.5 SP1

Code name: "cream".

Changes

ChangeElementDescription
Published fieldPGPU.dom0_accessThe accessibility of this device from dom0
Published fieldPGPU.is_system_display_deviceIs this device the system display device
Published fieldVM.hardware_platform_versionThe host virtual hardware platform version the VM can run on
Published fieldhost.displayindicates whether the host is configured to output its console to a physical display device
Published fieldhost.virtual_hardware_platform_versionsThe set of versions of the virtual hardware platform that the host can offer to its guests
Published messagePGPU.disable_dom0_access
Published messagePGPU.enable_dom0_access
Published messageVM.call_pluginCall an API plugin on this vm
Published messagehost.disable_displayDisable console output to the physical display device next time this host boots
Published messagehost.enable_displayEnable console output to the physical display device next time this host boots

XenServer 6.5

XenServer 6.5

Code name: "creedence".

Changes

ChangeElementDescription
Published fieldPIF.propertiesAdditional configuration properties for the interface.
Published fieldnetwork.assigned_ipsThe IP addresses assigned to VIFs on networks that have active xapi-managed DHCP
Published messagePIF.set_propertySet the value of a property of the PIF
Published messageVM.get_SRs_required_for_recoveryList all the SR's that are required for the VM to be recovered
Published messageVM_appliance.get_SRs_required_for_recoveryGet the list of SRs required by the VM appliance to recover.

XenServer 6.2 SP1 Hotfix 11

XenServer 6.2 SP1 Hotfix 11

Code name: "clearwater-whetstone".

Changes

ChangeElementDescription
Published fieldPCI.subsystem_device_nameSubsystem device name
Published fieldPCI.subsystem_vendor_nameSubsystem vendor name

XenServer 6.2 SP1 Hotfix 4

XenServer 6.2 SP1 Hotfix 4

Code name: "clearwater-felton".

Changes

ChangeElementDescription
Extended messageVDI.copyThe copy can now be performed into a pre-created VDI. It is now possible to request copying only changed blocks from a base VDI

XenServer 6.2 SP1

XenServer 6.2 SP1

Code name: "vgpu-productisation".

Changes

ChangeElementDescription
Published fieldGPU_group.enabled_VGPU_typesvGPU types supported on at least one of the pGPUs in this group
Published fieldGPU_group.supported_VGPU_typesvGPU types supported on at least one of the pGPUs in this group
Published fieldPGPU.supported_VGPU_max_capacitiesA map relating each VGPU type supported on this GPU to the maximum number of VGPUs of that type which can run simultaneously on this GPU
Published fieldPIF.managedIndicates whether the interface is managed by xapi. If it is not, then xapi will not configure the interface, the commands PIF.plug/unplug/reconfigure_ip(v6) cannot be used, nor can the interface be bonded or have VLANs based on top through xapi.
Published fieldVGPU_type.enabled_on_GPU_groupsList of GPU groups in which at least one have this VGPU type enabled
Published fieldVGPU_type.max_resolution_xMaximum resolution (width) supported by the VGPU type
Published fieldVGPU_type.max_resolution_yMaximum resolution (height) supported by the VGPU type
Published fieldVGPU_type.supported_on_GPU_groupsList of GPU groups in which at least one PGPU supports this VGPU type

XenServer 6.2 SP1 Tech-Preview

XenServer 6.2 SP1 Tech-Preview

Code name: "vgpu-tech-preview".

Changes

ChangeElementDescription
Published classVGPU_typeA type of virtual GPU
Published fieldGPU_group.allocation_algorithmCurrent allocation of vGPUs to pGPUs for this group
Published fieldPGPU.enabled_VGPU_typesList of VGPU types which have been enabled for this PGPU
Published fieldPGPU.resident_VGPUsList of VGPUs running on this PGPU
Published fieldPGPU.supported_VGPU_typesList of VGPU types supported by the underlying hardware
Published fieldVGPU.resident_onThe PGPU on which this VGPU is running
Published fieldVGPU.typePreset type for this VGPU
Published fieldVGPU_type.VGPUsList of VGPUs of this type
Published fieldVGPU_type.enabled_on_PGPUsList of PGPUs that have this VGPU type enabled
Published fieldVGPU_type.framebuffer_sizeFramebuffer size of the VGPU type, in bytes
Published fieldVGPU_type.max_headsMaximum number of displays supported by the VGPU type
Published fieldVGPU_type.model_nameModel name associated with the VGPU type
Published fieldVGPU_type.supported_on_PGPUsList of PGPUs that support this VGPU type
Published fieldVGPU_type.uuidUnique identifier/object reference
Published fieldVGPU_type.vendor_nameName of VGPU vendor
Published messageGPU_group.get_remaining_capacity
Published messagePGPU.add_enabled_VGPU_types
Published messagePGPU.get_remaining_capacity
Published messagePGPU.remove_enabled_VGPU_types
Published messagePGPU.set_GPU_group
Published messagePGPU.set_enabled_VGPU_types

XenServer 6.2

XenServer 6.2

Code name: "clearwater".

Changes

ChangeElementDescription
Published fieldSM.featurescapabilities of the SM plugin, with capability version numbers
Published fieldVM.generation_idGeneration ID of the VM
Published fieldsession.originatora key string provided by a API user to distinguish itself from other users sharing the same login name
Published messageVM.shutdownAttempts to first clean shutdown a VM and if it should fail then perform a hard shutdown on it.
Published messagehost.declare_deadDeclare that a host is dead. This is a dangerous operation, and should only be called if the administrator is absolutely sure the host is definitely dead
Published messagepool.apply_editionApply an edition to all hosts in the pool
Published messagepool.get_license_stateThis call returns the license state for the pool
Deprecated fieldSM.capabilitiesUse SM.features instead
Deprecated fieldVM.protection_policyThe VMPR feature was removed
Removed classVMPPThe VMPR feature was removed
Removed fieldVM.is_snapshot_from_vmppThe VMPR feature was removed
Removed fieldVMPP.VMsThe VMPR feature was removed
Removed fieldVMPP.alarm_configThe VMPR feature was removed
Removed fieldVMPP.archive_frequencyThe VMPR feature was removed
Removed fieldVMPP.archive_last_run_timeThe VMPR feature was removed
Removed fieldVMPP.archive_scheduleThe VMPR feature was removed
Removed fieldVMPP.archive_target_configThe VMPR feature was removed
Removed fieldVMPP.archive_target_typeThe VMPR feature was removed
Removed fieldVMPP.backup_frequencyThe VMPR feature was removed
Removed fieldVMPP.backup_last_run_timeThe VMPR feature was removed
Removed fieldVMPP.backup_retention_valueThe VMPR feature was removed
Removed fieldVMPP.backup_scheduleThe VMPR feature was removed
Removed fieldVMPP.backup_typeThe VMPR feature was removed
Removed fieldVMPP.is_alarm_enabledThe VMPR feature was removed
Removed fieldVMPP.is_archive_runningThe VMPR feature was removed
Removed fieldVMPP.is_backup_runningThe VMPR feature was removed
Removed fieldVMPP.is_policy_enabledThe VMPR feature was removed
Removed fieldVMPP.recent_alertsThe VMPR feature was removed
Removed fieldVMPP.uuidThe VMPR feature was removed
Removed messageVM.set_protection_policyThe VMPR feature was removed
Removed messageVMPP.add_to_alarm_configThe VMPR feature was removed
Removed messageVMPP.add_to_archive_scheduleThe VMPR feature was removed
Removed messageVMPP.add_to_archive_target_configThe VMPR feature was removed
Removed messageVMPP.add_to_backup_scheduleThe VMPR feature was removed
Removed messageVMPP.archive_nowThe VMPR feature was removed
Removed messageVMPP.get_alertsThe VMPR feature was removed
Removed messageVMPP.protect_nowThe VMPR feature was removed
Removed messageVMPP.remove_from_alarm_configThe VMPR feature was removed
Removed messageVMPP.remove_from_archive_scheduleThe VMPR feature was removed
Removed messageVMPP.remove_from_archive_target_configThe VMPR feature was removed
Removed messageVMPP.remove_from_backup_scheduleThe VMPR feature was removed
Removed messageVMPP.set_alarm_configThe VMPR feature was removed
Removed messageVMPP.set_archive_frequencyThe VMPR feature was removed
Removed messageVMPP.set_archive_last_run_timeThe VMPR feature was removed
Removed messageVMPP.set_archive_scheduleThe VMPR feature was removed
Removed messageVMPP.set_archive_target_configThe VMPR feature was removed
Removed messageVMPP.set_archive_target_typeThe VMPR feature was removed
Removed messageVMPP.set_backup_frequencyThe VMPR feature was removed
Removed messageVMPP.set_backup_last_run_timeThe VMPR feature was removed
Removed messageVMPP.set_backup_retention_valueThe VMPR feature was removed
Removed messageVMPP.set_backup_scheduleThe VMPR feature was removed
Removed messageVMPP.set_is_alarm_enabledThe VMPR feature was removed
Removed messagehost.license_applyFree licenses no longer handled by xapi

XenServer 6.1

XenServer 6.1

Code name: "tampa".

Changes

ChangeElementDescription
Published fieldBond.links_upNumber of links up in this bond
Published fieldBond.propertiesAdditional configuration properties specific to the bond mode.
Published fieldPIF.IPv6IPv6 address
Published fieldPIF.ipv6_configuration_modeSets if and how this interface gets an IPv6 address
Published fieldPIF.ipv6_gatewayIPv6 gateway
Published fieldPIF.primary_address_typeWhich protocol should define the primary address of this interface
Published fieldVIF.ipv4_allowedA list of IPv4 addresses which can be used to filter traffic passing through this VIF
Published fieldVIF.ipv6_allowedA list of IPv6 addresses which can be used to filter traffic passing through this VIF
Published fieldVIF.locking_modecurrent locking mode of the VIF
Published fieldblob.publicTrue if the blob is publicly accessible
Published fieldhost.guest_VCPUs_paramsVCPUs params to apply to all resident guests
Published fieldnetwork.default_locking_modeThe network will use this value to determine the behaviour of all VIFs where locking_mode = default
Published messageBond.set_propertySet the value of a property of the bond
Published messagePIF.reconfigure_ipv6Reconfigure the IPv6 address settings for this interface
Published messagePIF.set_primary_address_typeChange the primary address type used by this PIF
Published messageVDI.pool_migrateMigrate a VDI, which may be attached to a running guest, to a different SR. The destination SR must be visible to the guest.
Published messageVIF.add_ipv4_allowedAssociates an IPv4 address with this VIF
Published messageVIF.add_ipv6_allowedAssociates an IPv6 address with this VIF
Published messageVIF.remove_ipv4_allowedRemoves an IPv4 address from this VIF
Published messageVIF.remove_ipv6_allowedRemoves an IPv6 address from this VIF
Published messageVIF.set_ipv4_allowedSet the IPv4 addresses to which traffic on this VIF can be restricted
Published messageVIF.set_ipv6_allowedSet the IPv6 addresses to which traffic on this VIF can be restricted
Published messageVIF.set_locking_modeSet the locking mode for this VIF
Published messageVM.assert_can_migrateAssert whether a VM can be migrated to the specified destination.
Published messageVM.import_convertImport using a conversion service.
Published messageVM.migrate_sendMigrate the VM to another host. This can only be called when the specified VM is in the Running state.
Published messageVM.query_servicesQuery the system services advertised by this VM and register them. This can only be applied to a system domain.
Published messageevent.injectInjects an artificial event on the given object and returns the corresponding ID in the form of a token, which can be used as a point of reference for database events. For example, to check whether an object has reached the right state before attempting an operation, one can inject an artificial event on the object and wait until the token returned by consecutive event.from calls is lexicographically greater than the one returned by event.inject.
Published messagehost.get_management_interfaceReturns the management interface for the specified host
Published messagehost.migrate_receivePrepare to receive a VM, returning a token which can be passed to VM.migrate.
Published messagenetwork.set_default_locking_modeSet the default locking mode for VIFs attached to this network
Published messagepool_patch.clean_on_hostRemoves the patch's files from the specified host
Published messagepool_patch.pool_cleanRemoves the patch's files from all hosts in the pool, but does not remove the database entries
Deprecated messageVM.get_cooperative
Deprecated messagehost.get_uncooperative_resident_VMs
Removed classVBD_metricsDisabled in favour of RRD
Removed classVIF_metricsDisabled in favour of RRDs
Removed fieldPIF_metrics.io_read_kbsDisabled and replaced by RRDs
Removed fieldPIF_metrics.io_write_kbsDisabled and replaced by RRDs
Removed fieldVBD.metricsDisabled in favour of RRDs
Removed fieldVBD_metrics.io_read_kbsDisabled and replaced by RRDs
Removed fieldVBD_metrics.io_write_kbsDisabled and replaced by RRDs
Removed fieldVBD_metrics.last_updatedDisabled in favour of RRD
Removed fieldVBD_metrics.other_configDisabled in favour of RRD
Removed fieldVIF.metricsDisabled in favour of RRDs
Removed fieldVIF_metrics.io_read_kbsDisabled and replaced by RRDs
Removed fieldVIF_metrics.io_write_kbsDisabled and replaced by RRDs
Removed fieldVM_metrics.VCPUs_utilisationDisabled in favour of RRDs
Removed fieldhost_metrics.memory_freeDisabled in favour of RRD

XenServer 6.0

XenServer 6.0

Code name: "boston".

Changes

ChangeElementDescription
Published classDR_taskDR task
Published classGPU_groupA group of compatible GPUs across the resource pool
Published classPCIA PCI device
Published classPGPUA physical GPU (pGPU)
Published classVGPUA virtual GPU (vGPU)
Published classVM_applianceVM appliance
Published fieldBond.modeThe algorithm used to distribute traffic among the bonded NICs
Published fieldBond.primary_slaveThe PIF of which the IP configuration and MAC were copied to the bond, and which will receive all configuration/VLANs/VIFs on the bond if the bond is destroyed
Published fieldGPU_group.GPU_typesList of GPU types (vendor+device ID) that can be in this group
Published fieldGPU_group.PGPUsList of pGPUs in the group
Published fieldGPU_group.VGPUsList of vGPUs using the group
Published fieldGPU_group.name_descriptiona notes field containing human-readable description
Published fieldGPU_group.name_labela human-readable name
Published fieldGPU_group.other_configAdditional configuration
Published fieldGPU_group.uuidUnique identifier/object reference
Published fieldPCI.class_namePCI class name
Published fieldPCI.dependenciesList of dependent PCI devices
Published fieldPCI.device_nameDevice name
Published fieldPCI.hostPhysical machine that owns the PCI device
Published fieldPCI.other_configAdditional configuration
Published fieldPCI.pci_idPCI ID of the physical device
Published fieldPCI.uuidUnique identifier/object reference
Published fieldPCI.vendor_nameVendor name
Published fieldPGPU.GPU_groupGPU group the pGPU is contained in
Published fieldPGPU.PCILink to underlying PCI device
Published fieldPGPU.hostHost that owns the GPU
Published fieldPGPU.other_configAdditional configuration
Published fieldPGPU.uuidUnique identifier/object reference
Published fieldSR.introduced_byThe disaster recovery task which introduced this SR
Published fieldVDI.metadata_latestWhether this VDI contains the latest known accessible metadata for the pool
Published fieldVDI.metadata_of_poolThe pool whose metadata is contained in this VDI
Published fieldVGPU.GPU_groupGPU group used by the vGPU
Published fieldVGPU.VMVM that owns the vGPU
Published fieldVGPU.currently_attachedReflects whether the virtual device is currently connected to a physical device
Published fieldVGPU.deviceOrder in which the devices are plugged into the VM
Published fieldVGPU.other_configAdditional configuration
Published fieldVGPU.uuidUnique identifier/object reference
Published fieldVM.VGPUsVirtual GPUs
Published fieldVM.attached_PCIsCurrently passed-through PCI devices
Published fieldVM.orderThe point in the startup or shutdown sequence at which this VM will be started
Published fieldVM.shutdown_delayThe delay to wait before proceeding to the next order in the shutdown sequence (seconds)
Published fieldVM.start_delayThe delay to wait before proceeding to the next order in the startup sequence (seconds)
Published fieldVM.suspend_SRThe SR on which a suspend image is stored
Published fieldVM.versionThe number of times this VM has been recovered
Published fieldevent.snapshotThe record of the database object that was added, changed or deleted
Published fieldhost.PCIsList of PCI devices in the host
Published fieldhost.PGPUsList of physical GPUs in the host
Published fieldhost.chipset_infoInformation about chipset features
Published fieldpool.metadata_VDIsThe set of currently known metadata VDIs for this pool
Published messageBond.set_modeChange the bond mode
Published messageDR_task.createCreate a disaster recovery task which will query the supplied list of devices
Published messageDR_task.destroyDestroy the disaster recovery task, detaching and forgetting any SRs introduced which are no longer required
Published messageGPU_group.create
Published messageGPU_group.destroy
Published messageSR.assert_supports_database_replicationReturns successfully if the given SR supports database replication. Otherwise returns an error to explain why not.
Published messageSR.disable_database_replication
Published messageSR.enable_database_replication
Published messageVDI.open_databaseLoad the metadata found on the supplied VDI and return a session reference which can be used in API calls to query its contents.
Published messageVDI.read_database_pool_uuidCheck the VDI cache for the pool UUID of the database on this VDI.
Published messageVGPU.create
Published messageVGPU.destroy
Published messageVIF.unplug_forceForcibly unplug the specified VIF
Published messageVM.assert_can_be_recoveredAssert whether all SRs required to recover this VM are available.
Published messageVM.recoverRecover the VM
Published messageVM.set_applianceAssign this VM to an appliance.
Published messageVM.set_orderSet this VM's boot order
Published messageVM.set_shutdown_delaySet this VM's shutdown delay in seconds
Published messageVM.set_start_delaySet this VM's start delay in seconds
Published messageVM.set_suspend_VDISet this VM's suspend VDI, which must be indentical to its current one
Published messageVM_appliance.assert_can_be_recoveredAssert whether all SRs required to recover this VM appliance are available.
Published messageVM_appliance.clean_shutdownPerform a clean shutdown of all the VMs in the appliance
Published messageVM_appliance.hard_shutdownPerform a hard shutdown of all the VMs in the appliance
Published messageVM_appliance.recoverRecover the VM appliance
Published messageVM_appliance.shutdownFor each VM in the appliance, try to shut it down cleanly. If this fails, perform a hard shutdown of the VM.
Published messageVM_appliance.startStart all VMs in the appliance
Published messageevent.fromBlocking call which returns a new token and a (possibly empty) batch of events. The returned token can be used in subsequent calls to this function.
Deprecated fieldVM.PCI_busField was never used
Deprecated fieldVM.ha_always_run
Deprecated fieldevent.obj_uuid
Deprecated fieldevent.timestamp
Deprecated messageVM.set_ha_always_run
Deprecated messageevent.next
Deprecated messageevent.register
Deprecated messageevent.unregister

XenServer 5.6 FP1

XenServer 5.6 FP1

Code name: "cowley".

Changes

ChangeElementDescription
Published classVMPPVM Protection Policy
Published classtunnelA tunnel for network traffic
Published fieldPIF.tunnel_access_PIF_ofIndicates to which tunnel this PIF gives access
Published fieldPIF.tunnel_transport_PIF_ofIndicates to which tunnel this PIF provides transport
Published fieldSR.local_cache_enabledTrue if this SR is assigned to be the local cache for its host
Published fieldVDI.allow_cachingtrue if this VDI is to be cached in the local cache SR
Published fieldVDI.on_bootThe behaviour of this VDI on a VM boot
Published fieldVM.is_snapshot_from_vmpptrue if this snapshot was created by the protection policy
Published fieldVM.protection_policyRef pointing to a protection policy for this VM
Published fieldVMPP.VMsall VMs attached to this protection policy
Published fieldVMPP.alarm_configconfiguration for the alarm
Published fieldVMPP.archive_frequencyfrequency of the archive schedule
Published fieldVMPP.archive_last_run_timetime of the last archive
Published fieldVMPP.archive_scheduleschedule of the archive containing 'hour', 'min', 'days'. Date/time-related information is in Local Timezone
Published fieldVMPP.archive_target_configconfiguration for the archive, including its 'location', 'username', 'password'
Published fieldVMPP.archive_target_typetype of the archive target config
Published fieldVMPP.backup_frequencyfrequency of the backup schedule
Published fieldVMPP.backup_last_run_timetime of the last backup
Published fieldVMPP.backup_retention_valuemaximum number of backups that should be stored at any time
Published fieldVMPP.backup_scheduleschedule of the backup containing 'hour', 'min', 'days'. Date/time-related information is in Local Timezone
Published fieldVMPP.backup_typetype of the backup sub-policy
Published fieldVMPP.is_alarm_enabledtrue if alarm is enabled for this policy
Published fieldVMPP.is_archive_runningtrue if this protection policy's archive is running
Published fieldVMPP.is_backup_runningtrue if this protection policy's backup is running
Published fieldVMPP.is_policy_enabledenable or disable this policy
Published fieldVMPP.recent_alertsrecent alerts
Published fieldVMPP.uuidUnique identifier/object reference
Published fieldhost.local_cache_srThe SR that is used as a local cache
Published fieldtunnel.access_PIFThe interface through which the tunnel is accessed
Published fieldtunnel.other_configAdditional configuration
Published fieldtunnel.statusStatus information about the tunnel
Published fieldtunnel.transport_PIFThe interface used by the tunnel
Published fieldtunnel.uuidUnique identifier/object reference
Published messageVDI.set_allow_cachingSet the value of the allow_caching parameter. This value can only be changed when the VDI is not attached to a running VM. The caching behaviour is only affected by this flag for VHD-based VDIs that have one parent and no child VHDs. Moreover, caching only takes place when the host running the VM containing this VDI has a nominated SR for local caching.
Published messageVDI.set_on_bootSet the value of the on_boot parameter. This value can only be changed when the VDI is not attached to a running VM.
Published messageVM.set_protection_policySet the value of the protection_policy field
Published messageVMPP.add_to_alarm_config
Published messageVMPP.add_to_archive_schedule
Published messageVMPP.add_to_archive_target_config
Published messageVMPP.add_to_backup_schedule
Published messageVMPP.archive_nowThis call archives the snapshot provided as a parameter
Published messageVMPP.get_alertsThis call fetches a history of alerts for a given protection policy
Published messageVMPP.protect_nowThis call executes the protection policy immediately
Published messageVMPP.remove_from_alarm_config
Published messageVMPP.remove_from_archive_schedule
Published messageVMPP.remove_from_archive_target_config
Published messageVMPP.remove_from_backup_schedule
Published messageVMPP.set_alarm_config
Published messageVMPP.set_archive_frequencySet the value of the archive_frequency field
Published messageVMPP.set_archive_last_run_time
Published messageVMPP.set_archive_schedule
Published messageVMPP.set_archive_target_config
Published messageVMPP.set_archive_target_typeSet the value of the archive_target_config_type field
Published messageVMPP.set_backup_frequencySet the value of the backup_frequency field
Published messageVMPP.set_backup_last_run_time
Published messageVMPP.set_backup_retention_value
Published messageVMPP.set_backup_schedule
Published messageVMPP.set_is_alarm_enabledSet the value of the is_alarm_enabled field
Published messagehost.disable_local_storage_cachingDisable the use of a local SR for caching purposes
Published messagehost.enable_local_storage_cachingEnable the use of a local SR for caching purposes
Published messagehost.get_server_localtimeThis call queries the host's clock for the current time in the host's local timezone
Published messagehost.set_power_on_modeSet the power-on-mode, host, user and password
Published messagepool.disable_local_storage_cachingThis call disables pool-wide local storage caching
Published messagepool.enable_local_storage_cachingThis call attempts to enable pool-wide local storage caching
Published messagepool.test_archive_targetThis call tests if a location is valid
Published messagetunnel.createCreate a tunnel
Published messagetunnel.destroyDestroy a tunnel
Extended messageVDI.copyThe copy can now be performed between any two SRs.
Extended messageVM.copyThe copy can now be performed between any two SRs.
Extended messagepool.set_vswitch_controllerAllow to be set to the empty string (no controller is used).

XenServer 5.6

XenServer 5.6

Code name: "midnight-ride".

Changes

ChangeElementDescription
Published classroleA set of permissions associated with a subject
Published classsecretA secret
Published fieldVM.bios_stringsBIOS strings
Published fieldVM.childrenList pointing to all the children of this VM
Published fieldVM.parentRef pointing to the parent of this VM
Published fieldVM.snapshot_infoHuman-readable information concerning this snapshot
Published fieldVM.snapshot_metadataEncoded information about the VM's metadata this is a snapshot of
Published fieldhost.bios_stringsBIOS strings
Published fieldhost.cpu_infoDetails about the physical CPUs on this host
Published fieldhost.editionProduct edition
Published fieldhost.license_serverContact information of the license server
Published fieldhost.power_on_configThe power on config
Published fieldhost.power_on_modeThe power on mode
Published fieldnetwork.MTUMTU in octets
Published fieldpool.redo_log_enabledtrue a redo-log is to be used other than when HA is enabled, false otherwise
Published fieldpool.redo_log_vdiindicates the VDI to use for the redo-log other than when HA is enabled
Published fieldpool.restrictionsPool-wide restrictions currently in effect
Published fieldpool.vswitch_controllerthe IP address of the vswitch controller.
Published fieldrole.name_descriptionwhat this role is for
Published fieldrole.name_labela short user-friendly name for the role
Published fieldrole.subrolesa list of pointers to other roles or permissions
Published fieldsession.auth_user_namethe subject name of the user that was externally authenticated. If a session instance has is_local_superuser set, then the value of this field is undefined.
Published fieldsession.parentreferences the parent session that created this session
Published fieldsession.rbac_permissionslist with all RBAC permissions for this session
Published fieldsession.taskslist of tasks created using the current session
Published fieldsubject.rolesthe roles associated with this subject
Published messageVM.checkpointCheckpoints the specified VM, making a new VM. Checkpoint automatically exploits the capabilities of the underlying storage repository in which the VM's disk images are stored (e.g. Copy on Write) and saves the memory image as well.
Published messageVM.compute_memory_overheadComputes the virtualization memory overhead of a VM.
Published messageVM.copy_bios_stringsCopy the BIOS strings from the given host to this VM
Published messageVM.get_cooperativeReturn true if the VM is currently 'co-operative' i.e. is expected to reach a balloon target and actually has done
Published messageVM.revertReverts the specified VM to a previous state.
Published messageVM.set_HVM_shadow_multiplierSet the shadow memory multiplier on a halted VM
Published messageVM.set_VCPUs_at_startupSet the number of startup VCPUs for a halted VM
Published messageVM.set_VCPUs_maxSet the maximum number of VCPUs for a halted VM
Published messageVM.set_memory_dynamic_maxSet the value of the memory_dynamic_max field
Published messageVM.set_memory_dynamic_minSet the value of the memory_dynamic_min field
Published messageVM.set_memory_dynamic_rangeSet the minimum and maximum amounts of physical memory the VM is allowed to use.
Published messageVM.set_memory_limitsSet the memory limits of this VM.
Published messageVM.set_memory_static_minSet the value of the memory_static_min field
Published messageVM.set_memory_static_rangeSet the static (ie boot-time) range of virtual memory that the VM is allowed to use.
Published messagehost.apply_editionChange to another edition, or reactivate the current edition after a license has expired. This may be subject to the successful checkout of an appropriate license.
Published messagehost.compute_memory_overheadComputes the virtualization memory overhead of a host.
Published messagehost.get_uncooperative_resident_VMsReturn a set of VMs which are not co-operating with the host's memory control system
Published messagehost.refresh_pack_infoRefresh the list of installed Supplemental Packs.
Published messagehost.reset_cpu_featuresRemove the feature mask, such that after a reboot all features of the CPU are enabled.
Published messagehost.set_cpu_featuresSet the CPU features to be used after a reboot, if the given features string is valid.
Published messagepool.disable_redo_logDisable the redo log if in use, unless HA is enabled.
Published messagepool.enable_redo_logEnable the redo log on the given SR and start using it, unless HA is enabled.
Published messagepool.set_vswitch_controllerSet the IP address of the vswitch controller.
Published messagerole.get_by_permissionThis call returns a list of roles given a permission
Published messagerole.get_by_permission_name_labelThis call returns a list of roles given a permission name
Published messagerole.get_permissionsThis call returns a list of permissions given a role
Published messagerole.get_permissions_name_labelThis call returns a list of permission names given a role
Published messagesubject.add_to_rolesThis call adds a new role to a subject
Published messagesubject.get_permissions_name_labelThis call returns a list of permission names given a subject
Published messagesubject.remove_from_rolesThis call removes a role from a subject
Deprecated classhost_cpuDeprecated in favour of the Host.cpu_info field
Deprecated fieldVM.memory_target
Deprecated fieldhost_metrics.memory_freeWill be disabled in favour of RRD
Deprecated messageVM.set_memory_target_live
Deprecated messageVM.wait_memory_target_live

XenServer 5.5

XenServer 5.5

Code name: "george".

Changes

ChangeElementDescription
Published classauthManagement of remote authentication services
Published classsubjectA user or group that can log in xapi
Published fieldVIF.MAC_autogeneratedtrue if the MAC was autogenerated; false indicates it was set manually
Published fieldhost.external_auth_configurationconfiguration specific to external authentication service
Published fieldhost.external_auth_service_namename of external authentication service configured; empty if none configured.
Published fieldhost.external_auth_typetype of external authentication service configured; empty if none configured.
Published fieldpool.wlb_enabledtrue if workload balancing is enabled on the pool, false otherwise
Published fieldpool.wlb_urlUrl for the configured workload balancing host
Published fieldpool.wlb_usernameUsername for accessing the workload balancing host
Published fieldpool.wlb_verify_certtrue if communication with the WLB server should enforce TLS certificate verification.
Published fieldsession.auth_user_sidthe subject identifier of the user that was externally authenticated. If a session instance has is_local_superuser set, then the value of this field is undefined.
Published fieldsession.is_local_superusertrue iff this session was created using local superuser credentials
Published fieldsession.subjectreferences the subject instance that created the session. If a session instance has is_local_superuser set, then the value of this field is undefined.
Published fieldsession.validation_timetime when session was last validated
Published fieldsubject.other_configadditional configuration
Published fieldsubject.subject_identifierthe subject identifier, unique in the external directory service
Published messageVDI.set_sharableSets the VDI's sharable field
Published messageVM.retrieve_wlb_recommendationsReturns mapping of hosts to ratings, indicating the suitability of starting the VM at that location according to wlb. Rating is replaced with an error if the VM cannot boot there.
Published messageauth.get_group_membershipThis calls queries the external directory service to obtain the transitively-closed set of groups that the the subject_identifier is member of.
Published messageauth.get_subject_identifierThis call queries the external directory service to obtain the subject_identifier as a string from the human-readable subject_name
Published messageauth.get_subject_information_from_identifierThis call queries the external directory service to obtain the user information (e.g. username, organization etc) from the specified subject_identifier
Published messagehost.disable_external_authThis call disables external authentication on the local host
Published messagehost.enable_external_authThis call enables external authentication on a host
Published messagehost.get_server_certificateGet the installed server public TLS certificate.
Published messagehost.retrieve_wlb_evacuate_recommendationsRetrieves recommended host migrations to perform when evacuating the host from the wlb server. If a VM cannot be migrated from the host the reason is listed instead of a recommendation.
Published messagepool.certificate_installInstall TLS CA certificate
Published messagepool.certificate_listList installed TLS CA certificate
Published messagepool.certificate_syncCopy the TLS CA certificates and CRLs of the master to all slaves.
Published messagepool.certificate_uninstallInstall TLS CA certificate
Published messagepool.crl_installInstall a TLS CA-issued Certificate Revocation List, pool-wide.
Published messagepool.crl_listList the names of all installed TLS CA-issued Certificate Revocation Lists.
Published messagepool.crl_uninstallRemove a pool-wide TLS CA-issued Certificate Revocation List.
Published messagepool.deconfigure_wlbPermanently deconfigures workload balancing monitoring on this pool
Published messagepool.detect_nonhomogeneous_external_authThis call asynchronously detects if the external authentication configuration in any slave is different from that in the master and raises appropriate alerts
Published messagepool.disable_external_authThis call disables external authentication on all the hosts of the pool
Published messagepool.enable_external_authThis call enables external authentication on all the hosts of the pool
Published messagepool.initialize_wlbInitializes workload balancing monitoring on this pool with the specified wlb server
Published messagepool.retrieve_wlb_configurationRetrieves the pool optimization criteria from the workload balancing server
Published messagepool.retrieve_wlb_recommendationsRetrieves vm migrate recommendations for the pool from the workload balancing server
Published messagepool.send_test_postSend the given body to the given host and port, using HTTPS, and print the response. This is used for debugging the SSL layer.
Published messagepool.send_wlb_configurationSets the pool optimization criteria for the workload balancing server
Published messagesession.get_all_subject_identifiersReturn a list of all the user subject-identifiers of all existing sessions
Published messagesession.logout_subject_identifierLog out all sessions associated to a user subject-identifier, except the session associated with the context calling this function
Deprecated classuserDeprecated in favor of subject
Removed fieldVM_guest_metrics.memoryDisabled in favour of the RRDs, to improve scalability

XenServer 5.0 Update 1

XenServer 5.0 Update 1

Code name: "orlando-update-1".

Changes

ChangeElementDescription
Published messagepool.ha_prevent_restarts_forWhen this call returns the VM restart logic will not run for the requested number of seconds. If the argument is zero then the restart thread is immediately unblocked

XenServer 5.0

XenServer 5.0

Code name: "orlando".

Changes

ChangeElementDescription
Published classblobA placeholder for a binary blob
Published classdata_sourceData sources for logging in RRDs
Published classmessageAn message for the attention of the administrator
Published fieldPIF.disallow_unplugPrevent this PIF from being unplugged; set this to notify the management tool-stack that the PIF has a special use and should not be unplugged under any circumstances (e.g. because you're running storage traffic over it)
Published fieldPIF_metrics.other_configadditional configuration
Published fieldSM.driver_filenamefilename of the storage driver
Published fieldSR.blobsBinary blobs associated with this SR
Published fieldSR.tagsuser-specified tags for categorization purposes
Published fieldVBD_metrics.other_configadditional configuration
Published fieldVDI.is_a_snapshottrue if this is a snapshot.
Published fieldVDI.snapshot_ofRef pointing to the VDI this snapshot is of.
Published fieldVDI.snapshot_timeDate/time when this snapshot was created.
Published fieldVDI.snapshotsList pointing to all the VDIs snapshots.
Published fieldVDI.tagsuser-specified tags for categorization purposes
Published fieldVIF_metrics.other_configadditional configuration
Published fieldVM.blobsBinary blobs associated with this VM
Published fieldVM.blocked_operationsList of operations which have been explicitly blocked and an error code
Published fieldVM.ha_always_runif true then the system will attempt to keep the VM running as much as possible.
Published fieldVM.ha_restart_priorityhas possible values: "best-effort" meaning "try to restart this VM if possible but don't consider the Pool to be overcommitted if this is not possible"; "restart" meaning "this VM should be restarted"; "" meaning "do not try to restart this VM"
Published fieldVM.is_a_snapshottrue if this is a snapshot. Snapshotted VMs can never be started, they are used only for cloning other VMs
Published fieldVM.snapshot_ofRef pointing to the VM this snapshot is of.
Published fieldVM.snapshot_timeDate/time when this snapshot was created.
Published fieldVM.snapshotsList pointing to all the VM snapshots.
Published fieldVM.tagsuser-specified tags for categorization purposes
Published fieldVM.transportable_snapshot_idTransportable ID of the snapshot VM
Published fieldVM_guest_metrics.liveTrue if the guest is sending heartbeat messages via the guest agent
Published fieldVM_guest_metrics.other_configadditional configuration
Published fieldVM_metrics.other_configadditional configuration
Published fieldhost.blobsBinary blobs associated with this host
Published fieldhost.ha_network_peersThe set of hosts visible via the network from this host
Published fieldhost.ha_statefilesThe set of statefiles accessible from this host
Published fieldhost.tagsuser-specified tags for categorization purposes
Published fieldhost_cpu.other_configadditional configuration
Published fieldhost_metrics.other_configadditional configuration
Published fieldmessage.clsThe class of the object this message is associated with
Published fieldnetwork.blobsBinary blobs associated with this network
Published fieldnetwork.tagsuser-specified tags for categorization purposes
Published fieldpool.blobsBinary blobs associated with this pool
Published fieldpool.gui_configgui-specific configuration for pool
Published fieldpool.ha_allow_overcommitIf set to false then operations which would cause the Pool to become overcommitted will be blocked.
Published fieldpool.ha_configurationThe current HA configuration
Published fieldpool.ha_enabledtrue if HA is enabled on the pool, false otherwise
Published fieldpool.ha_host_failures_to_tolerateNumber of host failures to tolerate before the Pool is declared to be overcommitted
Published fieldpool.ha_overcommittedTrue if the Pool is considered to be overcommitted i.e. if there exist insufficient physical resources to tolerate the configured number of host failures
Published fieldpool.ha_plan_exists_forNumber of future host failures we have managed to find a plan for. Once this reaches zero any future host failures will cause the failure of protected VMs.
Published fieldpool.ha_statefilesHA statefile VDIs in use
Published fieldpool.tagsuser-specified tags for categorization purposes
Published fieldtask.subtask_ofRef pointing to the task this is a substask of.
Published fieldtask.subtasksList pointing to all the substasks.
Published fielduser.other_configadditional configuration
Published messagePIF.db_forgetDestroy a PIF database record.
Published messagePIF.db_introduceCreate a new PIF record in the database only
Published messagePIF.set_disallow_unplugSet whether unplugging the PIF is allowed
Published messageSR.assert_can_host_ha_statefileReturns successfully if the given SR can host an HA statefile. Otherwise returns an error to explain why not
Published messageSR.create_new_blobCreate a placeholder for a named binary blob of data that is associated with this SR
Published messageVM.assert_agileReturns an error if the VM is not considered agile e.g. because it is tied to a resource local to a host
Published messageVM.create_new_blobCreate a placeholder for a named binary blob of data that is associated with this VM
Published messageVM.forget_data_source_archivesForget the recorded statistics related to the specified data source
Published messageVM.get_data_sources
Published messageVM.query_data_sourceQuery the latest value of the specified data source
Published messageVM.record_data_sourceStart recording the specified data source
Published messageVM.set_ha_always_runSet the value of the ha_always_run
Published messageVM.set_ha_restart_prioritySet the value of the ha_restart_priority field
Published messageVM.set_memory_static_maxSet the value of the memory_static_max field
Published messageVM.snapshotSnapshots the specified VM, making a new VM. Snapshot automatically exploits the capabilities of the underlying storage repository in which the VM's disk images are stored (e.g. Copy on Write).
Published messageVM.snapshot_with_quiesceSnapshots the specified VM with quiesce, making a new VM. Snapshot automatically exploits the capabilities of the underlying storage repository in which the VM's disk images are stored (e.g. Copy on Write).
Published messageVM.wait_memory_target_liveWait for a running VM to reach its current memory target
Published messageblob.createCreate a placeholder for a binary blob
Published messageblob.destroy
Published messagehost.backup_rrdsThis causes the RRDs to be backed up to the master
Published messagehost.call_pluginCall an API plugin on this host
Published messagehost.compute_free_memoryComputes the amount of free memory on the host.
Published messagehost.create_new_blobCreate a placeholder for a named binary blob of data that is associated with this host
Published messagehost.emergency_ha_disableThis call disables HA on the local host. This should only be used with extreme care.
Published messagehost.forget_data_source_archivesForget the recorded statistics related to the specified data source
Published messagehost.get_data_sources
Published messagehost.get_servertimeThis call queries the host's clock for the current time
Published messagehost.get_vms_which_prevent_evacuationReturn a set of VMs which prevent the host being evacuated, with per-VM error codes
Published messagehost.power_onAttempt to power-on the host (if the capability exists).
Published messagehost.query_data_sourceQuery the latest value of the specified data source
Published messagehost.record_data_sourceStart recording the specified data source
Published messagehost.shutdown_agentShuts the agent down after a 10 second pause. WARNING: this is a dangerous operation. Any operations in progress will be aborted, and unrecoverable data loss may occur. The caller is responsible for ensuring that there are no operations in progress when this method is called.
Published messagehost.sync_dataThis causes the synchronisation of the non-database data (messages, RRDs and so on) stored on the master to be synchronised with the host
Published messagemessage.create
Published messagemessage.destroy
Published messagemessage.get
Published messagemessage.get_all
Published messagemessage.get_all_records
Published messagemessage.get_all_records_where
Published messagemessage.get_by_uuid
Published messagemessage.get_record
Published messagemessage.get_since
Published messagenetwork.create_new_blobCreate a placeholder for a named binary blob of data that is associated with this pool
Published messagepool.create_new_blobCreate a placeholder for a named binary blob of data that is associated with this pool
Published messagepool.ha_compute_hypothetical_max_host_failures_to_tolerateReturns the maximum number of host failures we could tolerate before we would be unable to restart the provided VMs
Published messagepool.ha_compute_max_host_failures_to_tolerateReturns the maximum number of host failures we could tolerate before we would be unable to restart configured VMs
Published messagepool.ha_compute_vm_failover_planReturn a VM failover plan assuming a given subset of hosts fail
Published messagepool.ha_failover_plan_existsReturns true if a VM failover plan exists for up to 'n' host failures
Published messagepool.set_ha_host_failures_to_tolerateSet the maximum number of host failures to consider in the HA VM restart planner
Removed fieldVM_guest_metrics.disksNo data

XenServer 4.1.1

XenServer 4.1.1

Code name: "symc".

Changes

ChangeElementDescription
Published messageSR.updateRefresh the fields on the SR object
Published messageVDI.updateAsk the storage backend to refresh the fields in the VDI object

XenServer 4.1

XenServer 4.1

Code name: "miami".

Changes

ChangeElementDescription
Published classBondA Network bond that combines physical network interfaces, also known as link aggregation
Published classVLANA VLAN mux/demux
Published classpool_patchPool-wide patches
Published fieldBond.masterThe bonded interface
Published fieldBond.other_configadditional configuration
Published fieldBond.slavesThe interfaces which are part of this bond
Published fieldPBD.other_configadditional configuration
Published fieldPIF.DNSComma separated list of the IP addresses of the DNS servers to use
Published fieldPIF.IPIP address
Published fieldPIF.VLAN_master_ofIndicates which VLAN this interface receives untagged traffic from
Published fieldPIF.VLAN_slave_ofIndicates which VLANs this interface transmits tagged traffic to
Published fieldPIF.bond_master_ofIndicates this PIF represents the results of a bond
Published fieldPIF.bond_slave_ofIndicates which bond this interface is part of
Published fieldPIF.currently_attachedtrue if this interface is online
Published fieldPIF.gatewayIP gateway
Published fieldPIF.ip_configuration_modeSets if and how this interface gets an IP address
Published fieldPIF.managementIndicates whether the control software is listening for connections on this interface
Published fieldPIF.netmaskIP netmask
Published fieldPIF.other_configAdditional configuration
Published fieldPIF.physicaltrue if this represents a physical network interface
Published fieldSM.capabilitiescapabilities of the SM plugin
Published fieldSM.other_configadditional configuration
Published fieldSR.sm_configSM dependent data
Published fieldVBD.unpluggabletrue if this VBD will support hot-unplug
Published fieldVDI.locationlocation information
Published fieldVDI.sm_configSM dependent data
Published fieldVDI.xenstore_datadata to be inserted into the xenstore tree (/local/domain/0/backend/vbd/<domid>/<device-id>/sm-data) after the VDI is attached. This is generally set by the SM backends on vdi_attach.
Published fieldVLAN.other_configadditional configuration
Published fieldVLAN.tagVLAN tag in use
Published fieldVLAN.tagged_PIFinterface on which traffic is tagged
Published fieldVLAN.untagged_PIFinterface on which traffic is untagged
Published fieldVM.HVM_shadow_multipliermultiplier applied to the amount of shadow that will be made available to the guest
Published fieldVM.last_booted_recordMarshalled value containing VM record at time of last boot, updated dynamically to reflect the runtime state of the domain
Published fieldVM.xenstore_datadata to be inserted into the xenstore tree (/local/domain/<domid>/vm-data) after the VM is created.
Published fieldcrashdump.other_configadditional configuration
Published fieldhost_crashdump.other_configadditional configuration
Published fieldhost_patch.other_configadditional configuration
Published fieldhost_patch.pool_patchThe patch applied
Published fieldpool_patch.after_apply_guidanceWhat the client should do after this patch has been applied.
Published fieldpool_patch.host_patchesThis hosts this patch is applied to.
Published fieldpool_patch.other_configadditional configuration
Published fieldpool_patch.pool_appliedThis patch should be applied across the entire pool
Published fieldpool_patch.sizeSize of the patch
Published fieldpool_patch.versionPatch version number
Published fieldsession.other_configadditional configuration
Published fieldtask.other_configadditional configuration
Published messageBond.createCreate an interface bond
Published messageBond.destroyDestroy an interface bond
Published messagePBD.set_device_configSets the PBD's device_config field
Published messagePIF.forgetDestroy the PIF object matching a particular network interface
Published messagePIF.introduceCreate a PIF object matching a particular network interface
Published messagePIF.plugAttempt to bring up a physical interface
Published messagePIF.reconfigure_ipReconfigure the IP address settings for this interface
Published messagePIF.scanScan for physical interfaces on a host and create PIF objects to represent them
Published messagePIF.unplugAttempt to bring down a physical interface
Published messageSR.probePerform a backend-specific scan, using the given device_config. If the device_config is complete, then this will return a list of the SRs present of this type on the device, if any. If the device_config is partial, then a backend-specific scan will be performed, returning results that will guide the user in improving the device_config.
Published messageSR.set_physical_sizeSets the SR's physical_size field
Published messageVDI.introduceCreate a new VDI record in the database only
Published messageVLAN.createCreate a VLAN mux/demuxer
Published messageVLAN.destroyDestroy a VLAN mux/demuxer
Published messageVM.maximise_memoryReturns the maximum amount of guest memory which will fit, together with overheads, in the supplied amount of physical memory. If 'exact' is true then an exact calculation is performed using the VM's current settings. If 'exact' is false then a more conservative approximation is used
Published messagehost.assert_can_evacuateCheck this host can be evacuated.
Published messagehost.evacuateMigrate all VMs off of this host, where possible.
Published messagehost.get_system_status_capabilities
Published messagehost.local_management_reconfigureReconfigure the management network interface. Should only be used if Host.management_reconfigure is impossible because the network configuration is broken.
Published messagehost.management_disableDisable the management network interface
Published messagehost.management_reconfigureReconfigure the management network interface
Published messagehost.set_hostname_liveSets the host name to the specified string. Both the API and lower-level system hostname are changed immediately.
Published messagehost.syslog_reconfigureRe-configure syslog logging
Published messagepool.designate_new_masterPerform an orderly handover of the role of master to the referenced host.
Published messagepool.disable_haTurn off High Availability mode
Published messagepool.enable_haTurn on High Availability mode
Published messagepool_patch.applyApply the selected patch to a host and return its output
Published messagepool_patch.cleanRemoves the patch's files from the server
Published messagepool_patch.destroyRemoves the patch's files from all hosts in the pool, and removes the database entries. Only works on unapplied patches.
Published messagepool_patch.pool_applyApply the selected patch to all hosts in the pool and return a map of host_ref -> patch output
Published messagepool_patch.precheckExecute the precheck stage of the selected patch on a host and return its output
Published messagesession.local_logoutLog out of local session.
Published messagesession.slave_local_login_with_passwordAuthenticate locally against a slave in emergency mode. Note the resulting sessions are only good for use on this host.
Deprecated messagePIF.create_VLANReplaced by VLAN.create
Deprecated messagePIF.destroyReplaced by VLAN.destroy and Bond.destroy
Deprecated messageSR.makeUse SR.create instead
Deprecated messagehost_patch.apply
Deprecated messagehost_patch.destroy

XenServer 4.0

XenServer 4.0

Code name: "rio".

Changes

ChangeElementDescription
Published classPBDThe physical block devices through which hosts access SRs
Published classPIFA physical network interface (note separate VLANs are represented as several PIFs)
Published classPIF_metricsThe metrics associated with a physical network interface
Published classSMA storage manager plugin
Published classSRA storage repository
Published classVBDA virtual block device
Published classVBD_metricsThe metrics associated with a virtual block device
Published classVDIA virtual disk image
Published classVIFA virtual network interface
Published classVIF_metricsThe metrics associated with a virtual network device
Published classVMA virtual machine (or 'guest').
Published classVM_guest_metricsThe metrics reported by the guest (as opposed to inferred from outside)
Published classVM_metricsThe metrics associated with a VM
Published classconsoleA console
Published classcrashdumpA VM crashdump
Published classeventAsynchronous event registration and handling
Published classhostA physical host
Published classhost_cpuA physical CPU
Published classhost_crashdumpRepresents a host crash dump
Published classhost_metricsThe metrics associated with a host
Published classhost_patchRepresents a patch stored on a server
Published classnetworkA virtual network
Published classpoolPool-wide information
Published classsessionA session
Published classtaskA long-running asynchronous task
Published classuserA user of the system
Published fieldBond.uuidUnique identifier/object reference
Published fieldCluster.allowed_operationslist of the operations allowed in this state. This list is advisory only and the server state may have changed by the time this field is read by a client.
Published fieldCluster.current_operationslinks each of the running tasks using this object (by reference) to a current_operation enum which describes the nature of the task.
Published fieldCluster_host.allowed_operationslist of the operations allowed in this state. This list is advisory only and the server state may have changed by the time this field is read by a client.
Published fieldCluster_host.current_operationslinks each of the running tasks using this object (by reference) to a current_operation enum which describes the nature of the task.
Published fieldDR_task.introduced_SRsAll SRs introduced by this appliance
Published fieldDR_task.uuidUnique identifier/object reference
Published fieldFeature.name_descriptiona notes field containing human-readable description
Published fieldFeature.name_labela human-readable name
Published fieldLVHD.uuidUnique identifier/object reference
Published fieldObserver.name_descriptiona notes field containing human-readable description
Published fieldObserver.name_labela human-readable name
Published fieldPBD.SRthe storage repository that the pbd realises
Published fieldPBD.currently_attachedis the SR currently attached on this host?
Published fieldPBD.device_configa config string to string map that is provided to the host's SR-backend-driver
Published fieldPBD.hostphysical machine on which the pbd is available
Published fieldPBD.uuidUnique identifier/object reference
Published fieldPIF.MACethernet MAC address of physical interface
Published fieldPIF.MTUMTU in octets
Published fieldPIF.VLANVLAN tag for all traffic passing through this interface
Published fieldPIF.devicemachine-readable name of the interface (e.g. eth0)
Published fieldPIF.hostphysical machine to which this pif is connected
Published fieldPIF.metricsmetrics associated with this PIF
Published fieldPIF.networkvirtual network to which this pif is connected
Published fieldPIF.uuidUnique identifier/object reference
Published fieldPIF_metrics.carrierReport if the PIF got a carrier or not
Published fieldPIF_metrics.device_idReport device ID
Published fieldPIF_metrics.device_nameReport device name
Published fieldPIF_metrics.duplexFull duplex capability of the link (if available)
Published fieldPIF_metrics.io_read_kbsRead bandwidth (KiB/s)
Published fieldPIF_metrics.io_write_kbsWrite bandwidth (KiB/s)
Published fieldPIF_metrics.last_updatedTime at which this information was last updated
Published fieldPIF_metrics.pci_bus_pathPCI bus path of the pif (if available)
Published fieldPIF_metrics.speedSpeed of the link in Mbit/s (if available)
Published fieldPIF_metrics.uuidUnique identifier/object reference
Published fieldPIF_metrics.vendor_idReport vendor ID
Published fieldPIF_metrics.vendor_nameReport vendor name
Published fieldRepository.name_descriptiona notes field containing human-readable description
Published fieldRepository.name_labela human-readable name
Published fieldSM.configurationnames and descriptions of device config keys
Published fieldSM.copyrightEntity which owns the copyright of this plugin
Published fieldSM.name_descriptiona notes field containing human-readable description
Published fieldSM.name_labela human-readable name
Published fieldSM.required_api_versionMinimum SM API version required on the server
Published fieldSM.typeSR.type
Published fieldSM.uuidUnique identifier/object reference
Published fieldSM.vendorVendor who created this plugin
Published fieldSM.versionVersion of the plugin
Published fieldSR.PBDsdescribes how particular hosts can see this storage repository
Published fieldSR.VDIsall virtual disks known to this storage repository
Published fieldSR.allowed_operationslist of the operations allowed in this state. This list is advisory only and the server state may have changed by the time this field is read by a client.
Published fieldSR.content_typethe type of the SR's content, if required (e.g. ISOs)
Published fieldSR.current_operationslinks each of the running tasks using this object (by reference) to a current_operation enum which describes the nature of the task.
Published fieldSR.name_descriptiona notes field containing human-readable description
Published fieldSR.name_labela human-readable name
Published fieldSR.other_configadditional configuration
Published fieldSR.physical_sizetotal physical size of the repository (in bytes)
Published fieldSR.physical_utilisationphysical space currently utilised on this storage repository (in bytes). Note that for sparse disk formats, physical_utilisation may be less than virtual_allocation
Published fieldSR.sharedtrue if this SR is (capable of being) shared between multiple hosts
Published fieldSR.typetype of the storage repository
Published fieldSR.uuidUnique identifier/object reference
Published fieldSR.virtual_allocationsum of virtual_sizes of all VDIs in this storage repository (in bytes)
Published fieldVBD.VDIthe virtual disk
Published fieldVBD.VMthe virtual machine
Published fieldVBD.allowed_operationslist of the operations allowed in this state. This list is advisory only and the server state may have changed by the time this field is read by a client.
Published fieldVBD.bootabletrue if this VBD is bootable
Published fieldVBD.current_operationslinks each of the running tasks using this object (by reference) to a current_operation enum which describes the nature of the task.
Published fieldVBD.currently_attachedis the device currently attached (erased on reboot)
Published fieldVBD.devicedevice seen by the guest e.g. hda1
Published fieldVBD.emptyif true this represents an empty drive
Published fieldVBD.metricsmetrics associated with this VBD
Published fieldVBD.modethe mode the VBD should be mounted with
Published fieldVBD.other_configadditional configuration
Published fieldVBD.qos_algorithm_paramsparameters for chosen QoS algorithm
Published fieldVBD.qos_algorithm_typeQoS algorithm to use
Published fieldVBD.qos_supported_algorithmssupported QoS algorithms for this VBD
Published fieldVBD.runtime_propertiesDevice runtime properties
Published fieldVBD.status_codeerror/success code associated with last attach-operation (erased on reboot)
Published fieldVBD.status_detailerror/success information associated with last attach-operation status (erased on reboot)
Published fieldVBD.storage_locktrue if a storage level lock was acquired
Published fieldVBD.typehow the VBD will appear to the guest (e.g. disk or CD)
Published fieldVBD.userdeviceuser-friendly device name e.g. 0,1,2,etc.
Published fieldVBD.uuidUnique identifier/object reference
Published fieldVBD_metrics.io_read_kbsRead bandwidth (KiB/s)
Published fieldVBD_metrics.io_write_kbsWrite bandwidth (KiB/s)
Published fieldVBD_metrics.last_updatedTime at which this information was last updated
Published fieldVBD_metrics.uuidUnique identifier/object reference
Published fieldVDI.SRstorage repository in which the VDI resides
Published fieldVDI.VBDslist of vbds that refer to this disk
Published fieldVDI.allowed_operationslist of the operations allowed in this state. This list is advisory only and the server state may have changed by the time this field is read by a client.
Published fieldVDI.crash_dumpslist of crash dumps that refer to this disk
Published fieldVDI.current_operationslinks each of the running tasks using this object (by reference) to a current_operation enum which describes the nature of the task.
Published fieldVDI.managed
Published fieldVDI.missingtrue if SR scan operation reported this VDI as not present on disk
Published fieldVDI.name_descriptiona notes field containing human-readable description
Published fieldVDI.name_labela human-readable name
Published fieldVDI.other_configadditional configuration
Published fieldVDI.parentThis field is always null. Deprecated
Published fieldVDI.physical_utilisationamount of physical space that the disk image is currently taking up on the storage repository (in bytes)
Published fieldVDI.read_onlytrue if this disk may ONLY be mounted read-only
Published fieldVDI.sharabletrue if this disk may be shared
Published fieldVDI.storage_locktrue if this disk is locked at the storage level
Published fieldVDI.typetype of the VDI
Published fieldVDI.uuidUnique identifier/object reference
Published fieldVDI.virtual_sizesize of disk as presented to the guest (in bytes). Note that, depending on storage backend type, requested size may not be respected exactly
Published fieldVIF.MACethernet MAC address of virtual interface, as exposed to guest
Published fieldVIF.MTUMTU in octets
Published fieldVIF.VMvirtual machine to which this vif is connected
Published fieldVIF.allowed_operationslist of the operations allowed in this state. This list is advisory only and the server state may have changed by the time this field is read by a client.
Published fieldVIF.current_operationslinks each of the running tasks using this object (by reference) to a current_operation enum which describes the nature of the task.
Published fieldVIF.currently_attachedis the device currently attached (erased on reboot)
Published fieldVIF.deviceorder in which VIF backends are created by xapi
Published fieldVIF.metricsmetrics associated with this VIF
Published fieldVIF.networkvirtual network to which this vif is connected
Published fieldVIF.other_configadditional configuration
Published fieldVIF.qos_algorithm_paramsparameters for chosen QoS algorithm
Published fieldVIF.qos_algorithm_typeQoS algorithm to use
Published fieldVIF.qos_supported_algorithmssupported QoS algorithms for this VIF
Published fieldVIF.runtime_propertiesDevice runtime properties
Published fieldVIF.status_codeerror/success code associated with last attach-operation (erased on reboot)
Published fieldVIF.status_detailerror/success information associated with last attach-operation status (erased on reboot)
Published fieldVIF.uuidUnique identifier/object reference
Published fieldVIF_metrics.io_read_kbsRead bandwidth (KiB/s)
Published fieldVIF_metrics.io_write_kbsWrite bandwidth (KiB/s)
Published fieldVIF_metrics.last_updatedTime at which this information was last updated
Published fieldVIF_metrics.uuidUnique identifier/object reference
Published fieldVLAN.uuidUnique identifier/object reference
Published fieldVM.HVM_boot_paramsHVM boot params
Published fieldVM.HVM_boot_policyHVM boot policy
Published fieldVM.PCI_busPCI bus path for pass-through devices
Published fieldVM.PV_argskernel command-line arguments
Published fieldVM.PV_bootloadername of or path to bootloader
Published fieldVM.PV_bootloader_argsmiscellaneous arguments for the bootloader
Published fieldVM.PV_kernelpath to the kernel
Published fieldVM.PV_legacy_argsto make Zurich guests boot
Published fieldVM.PV_ramdiskpath to the initrd
Published fieldVM.VBDsvirtual block devices
Published fieldVM.VCPUs_at_startupBoot number of VCPUs
Published fieldVM.VCPUs_maxMax number of VCPUs
Published fieldVM.VCPUs_paramsconfiguration parameters for the selected VCPU policy
Published fieldVM.VIFsvirtual network interfaces
Published fieldVM.VTPMsvirtual TPMs
Published fieldVM.VUSBsvirtual usb devices
Published fieldVM.actions_after_crashaction to take if the guest crashes
Published fieldVM.actions_after_rebootaction to take after the guest has rebooted itself
Published fieldVM.actions_after_shutdownaction to take after the guest has shutdown itself
Published fieldVM.affinityA host which the VM has some affinity for (or NULL). This is used as a hint to the start call when it decides where to run the VM. Resource constraints may cause the VM to be started elsewhere.
Published fieldVM.allowed_operationslist of the operations allowed in this state. This list is advisory only and the server state may have changed by the time this field is read by a client.
Published fieldVM.appliancethe appliance to which this VM belongs
Published fieldVM.consolesvirtual console devices
Published fieldVM.crash_dumpscrash dumps associated with this VM
Published fieldVM.current_operationslinks each of the running tasks using this object (by reference) to a current_operation enum which describes the nature of the task.
Published fieldVM.domarchDomain architecture (if available, null string otherwise)
Published fieldVM.domiddomain ID (if available, -1 otherwise)
Published fieldVM.guest_metricsmetrics associated with the running guest
Published fieldVM.is_a_templatetrue if this is a template. Template VMs can never be started, they are used only for cloning other VMs
Published fieldVM.is_control_domaintrue if this is a control domain (domain 0 or a driver domain)
Published fieldVM.last_boot_CPU_flagsdescribes the CPU flags on which the VM was last booted
Published fieldVM.memory_dynamic_maxDynamic maximum (bytes)
Published fieldVM.memory_dynamic_minDynamic minimum (bytes)
Published fieldVM.memory_overheadVirtualization memory overhead (bytes).
Published fieldVM.memory_static_maxStatically-set (i.e. absolute) maximum (bytes). The value of this field at VM start time acts as a hard limit of the amount of memory a guest can use. New values only take effect on reboot.
Published fieldVM.memory_static_minStatically-set (i.e. absolute) mininum (bytes). The value of this field indicates the least amount of memory this VM can boot with without crashing.
Published fieldVM.memory_targetDynamically-set memory target (bytes). The value of this field indicates the current target for memory available to this VM.
Published fieldVM.metricsmetrics associated with this VM
Published fieldVM.name_descriptiona notes field containing human-readable description
Published fieldVM.name_labela human-readable name
Published fieldVM.other_configadditional configuration
Published fieldVM.platformplatform-specific configuration
Published fieldVM.power_stateCurrent power state of the machine
Published fieldVM.recommendationsAn XML specification of recommended values and ranges for properties of this VM
Published fieldVM.resident_onthe host the VM is currently resident on
Published fieldVM.scheduled_to_be_resident_onthe host on which the VM is due to be started/resumed/migrated. This acts as a memory reservation indicator
Published fieldVM.suspend_VDIThe VDI that a suspend image is stored on. (Only has meaning if VM is currently suspended)
Published fieldVM.user_versionCreators of VMs and templates may store version information here.
Published fieldVM.uuidUnique identifier/object reference
Published fieldVMPP.name_descriptiona notes field containing human-readable description
Published fieldVMPP.name_labela human-readable name
Published fieldVMSS.VMsall VMs attached to this snapshot schedule
Published fieldVMSS.enabledenable or disable this snapshot schedule
Published fieldVMSS.frequencyfrequency of taking snapshot from snapshot schedule
Published fieldVMSS.last_run_timetime of the last snapshot
Published fieldVMSS.name_descriptiona notes field containing human-readable description
Published fieldVMSS.name_labela human-readable name
Published fieldVMSS.retained_snapshotsmaximum number of snapshots that should be stored at any time
Published fieldVMSS.scheduleschedule of the snapshot containing 'hour', 'min', 'days'. Date/time-related information is in Local Timezone
Published fieldVMSS.typetype of the snapshot schedule
Published fieldVMSS.uuidUnique identifier/object reference
Published fieldVM_appliance.VMsall VMs in this appliance
Published fieldVM_appliance.allowed_operationslist of the operations allowed in this state. This list is advisory only and the server state may have changed by the time this field is read by a client.
Published fieldVM_appliance.current_operationslinks each of the running tasks using this object (by reference) to a current_operation enum which describes the nature of the task.
Published fieldVM_appliance.name_descriptiona notes field containing human-readable description
Published fieldVM_appliance.name_labela human-readable name
Published fieldVM_appliance.uuidUnique identifier/object reference
Published fieldVM_guest_metrics.PV_drivers_up_to_datetrue if the PV drivers appear to be up to date
Published fieldVM_guest_metrics.PV_drivers_versionversion of the PV drivers
Published fieldVM_guest_metrics.disksDisk configuration/free space
Published fieldVM_guest_metrics.last_updatedTime at which this information was last updated
Published fieldVM_guest_metrics.memoryfree/used/total
Published fieldVM_guest_metrics.networksnetwork configuration
Published fieldVM_guest_metrics.os_versionversion of the OS
Published fieldVM_guest_metrics.otheranything else
Published fieldVM_guest_metrics.uuidUnique identifier/object reference
Published fieldVM_metrics.VCPUs_CPUVCPU to PCPU map
Published fieldVM_metrics.VCPUs_flagsCPU flags (blocked,online,running)
Published fieldVM_metrics.VCPUs_numberCurrent number of VCPUs
Published fieldVM_metrics.VCPUs_paramsThe live equivalent to VM.VCPUs_params
Published fieldVM_metrics.VCPUs_utilisationUtilisation for all of guest's current VCPUs
Published fieldVM_metrics.install_timeTime at which the VM was installed
Published fieldVM_metrics.last_updatedTime at which this information was last updated
Published fieldVM_metrics.memory_actualGuest's actual memory (bytes)
Published fieldVM_metrics.start_timeTime at which this VM was last booted
Published fieldVM_metrics.stateThe state of the guest, eg blocked, dying etc
Published fieldVM_metrics.uuidUnique identifier/object reference
Published fieldVTPM.VMThe virtual machine the TPM is attached to
Published fieldVTPM.allowed_operationslist of the operations allowed in this state. This list is advisory only and the server state may have changed by the time this field is read by a client.
Published fieldVTPM.backendThe domain where the backend is located (unused)
Published fieldVTPM.current_operationslinks each of the running tasks using this object (by reference) to a current_operation enum which describes the nature of the task.
Published fieldVTPM.uuidUnique identifier/object reference
Published fieldVUSB.allowed_operationslist of the operations allowed in this state. This list is advisory only and the server state may have changed by the time this field is read by a client.
Published fieldVUSB.current_operationslinks each of the running tasks using this object (by reference) to a current_operation enum which describes the nature of the task.
Published fieldVUSB.currently_attachedis the device currently attached
Published fieldblob.last_updatedTime at which the data in the blob was last updated
Published fieldblob.mime_typeThe mime type associated with this object. Defaults to 'application/octet-stream' if the empty string is supplied
Published fieldblob.name_descriptiona notes field containing human-readable description
Published fieldblob.name_labela human-readable name
Published fieldblob.sizeSize of the binary data, in bytes
Published fieldblob.uuidUnique identifier/object reference
Published fieldconsole.VMVM to which this console is attached
Published fieldconsole.locationURI for the console service
Published fieldconsole.other_configadditional configuration
Published fieldconsole.protocolthe protocol used by this console
Published fieldconsole.uuidUnique identifier/object reference
Published fieldcrashdump.VDIthe virtual disk
Published fieldcrashdump.VMthe virtual machine
Published fieldcrashdump.uuidUnique identifier/object reference
Published fielddata_source.enabledtrue if the data source is being logged
Published fielddata_source.maxthe maximum value of the data source
Published fielddata_source.minthe minimum value of the data source
Published fielddata_source.name_descriptiona notes field containing human-readable description
Published fielddata_source.name_labela human-readable name
Published fielddata_source.standardtrue if the data source is enabled by default. Non-default data sources cannot be disabled
Published fielddata_source.unitsthe units of the value
Published fielddata_source.valuecurrent value of the data source
Published fieldevent.classThe name of the class of the object that changed
Published fieldevent.idAn ID, monotonically increasing, and local to the current session
Published fieldevent.obj_uuidThe uuid of the object that changed
Published fieldevent.operationThe operation that was performed
Published fieldevent.refA reference to the object that changed
Published fieldevent.timestampThe time at which the event occurred
Published fieldhost.API_version_majormajor version number
Published fieldhost.API_version_minorminor version number
Published fieldhost.API_version_vendoridentification of vendor
Published fieldhost.API_version_vendor_implementationdetails of vendor implementation
Published fieldhost.PBDsphysical blockdevices
Published fieldhost.PIFsphysical network interfaces
Published fieldhost.addressThe address by which this host can be contacted from any other host in the pool
Published fieldhost.allowed_operationslist of the operations allowed in this state. This list is advisory only and the server state may have changed by the time this field is read by a client.
Published fieldhost.capabilitiesXen capabilities
Published fieldhost.cpu_configurationThe CPU configuration on this host. May contain keys such as "nr_nodes", "sockets_per_node", "cores_per_socket", or "threads_per_core"
Published fieldhost.crash_dump_srThe SR in which VDIs for crash dumps are created
Published fieldhost.crashdumpsSet of host crash dumps
Published fieldhost.current_operationslinks each of the running tasks using this object (by reference) to a current_operation enum which describes the nature of the task.
Published fieldhost.enabledTrue if the host is currently enabled
Published fieldhost.host_CPUsThe physical CPUs on this host
Published fieldhost.hostnameThe hostname of this host
Published fieldhost.license_paramsState of the current license
Published fieldhost.logginglogging configuration
Published fieldhost.memory_overheadVirtualization memory overhead (bytes).
Published fieldhost.metricsmetrics associated with this host
Published fieldhost.name_descriptiona notes field containing human-readable description
Published fieldhost.name_labela human-readable name
Published fieldhost.other_configadditional configuration
Published fieldhost.patchesSet of host patches
Published fieldhost.resident_VMslist of VMs currently resident on host
Published fieldhost.sched_policyScheduler policy currently in force on this host
Published fieldhost.software_versionversion strings
Published fieldhost.supported_bootloadersa list of the bootloaders installed on the machine
Published fieldhost.suspend_image_srThe SR in which VDIs for suspend images are created
Published fieldhost.uuidUnique identifier/object reference
Published fieldhost_cpu.familythe family (number) of the physical CPU
Published fieldhost_cpu.featuresthe physical CPU feature bitmap
Published fieldhost_cpu.flagsthe flags of the physical CPU (a decoded version of the features field)
Published fieldhost_cpu.hostthe host the CPU is in
Published fieldhost_cpu.modelthe model number of the physical CPU
Published fieldhost_cpu.modelnamethe model name of the physical CPU
Published fieldhost_cpu.numberthe number of the physical CPU within the host
Published fieldhost_cpu.speedthe speed of the physical CPU
Published fieldhost_cpu.steppingthe stepping of the physical CPU
Published fieldhost_cpu.utilisationthe current CPU utilisation
Published fieldhost_cpu.uuidUnique identifier/object reference
Published fieldhost_cpu.vendorthe vendor of the physical CPU
Published fieldhost_crashdump.hostHost the crashdump relates to
Published fieldhost_crashdump.sizeSize of the crashdump
Published fieldhost_crashdump.timestampTime the crash happened
Published fieldhost_crashdump.uuidUnique identifier/object reference
Published fieldhost_metrics.last_updatedTime at which this information was last updated
Published fieldhost_metrics.livePool master thinks this host is live
Published fieldhost_metrics.memory_freeFree host memory (bytes)
Published fieldhost_metrics.memory_totalTotal host memory (bytes)
Published fieldhost_metrics.uuidUnique identifier/object reference
Published fieldhost_patch.appliedTrue if the patch has been applied
Published fieldhost_patch.hostHost the patch relates to
Published fieldhost_patch.name_descriptiona notes field containing human-readable description
Published fieldhost_patch.name_labela human-readable name
Published fieldhost_patch.sizeSize of the patch
Published fieldhost_patch.timestamp_appliedTime the patch was applied
Published fieldhost_patch.uuidUnique identifier/object reference
Published fieldhost_patch.versionPatch version number
Published fieldmessage.bodyThe body of the message
Published fieldmessage.nameThe name of the message
Published fieldmessage.obj_uuidThe uuid of the object this message is associated with
Published fieldmessage.priorityThe message priority, 0 being low priority
Published fieldmessage.timestampThe time at which the message was created
Published fieldmessage.uuidUnique identifier/object reference
Published fieldnetwork.PIFslist of connected pifs
Published fieldnetwork.VIFslist of connected vifs
Published fieldnetwork.allowed_operationslist of the operations allowed in this state. This list is advisory only and the server state may have changed by the time this field is read by a client.
Published fieldnetwork.bridgename of the bridge corresponding to this network on the local host
Published fieldnetwork.current_operationslinks each of the running tasks using this object (by reference) to a current_operation enum which describes the nature of the task.
Published fieldnetwork.name_descriptiona notes field containing human-readable description
Published fieldnetwork.name_labela human-readable name
Published fieldnetwork.other_configadditional configuration
Published fieldnetwork.uuidUnique identifier/object reference
Published fieldnetwork_sriov.uuidUnique identifier/object reference
Published fieldpool.allowed_operationslist of the operations allowed in this state. This list is advisory only and the server state may have changed by the time this field is read by a client.
Published fieldpool.coordinator_biastrue if bias against pool master when scheduling vms is enabled, false otherwise
Published fieldpool.crash_dump_SRThe SR in which VDIs for crash dumps are created
Published fieldpool.current_operationslinks each of the running tasks using this object (by reference) to a current_operation enum which describes the nature of the task.
Published fieldpool.default_SRDefault SR for VDIs
Published fieldpool.masterThe host that is pool master
Published fieldpool.name_descriptionDescription
Published fieldpool.name_labelShort name
Published fieldpool.other_configadditional configuration
Published fieldpool.suspend_image_SRThe SR in which VDIs for suspend images are created
Published fieldpool.uuidUnique identifier/object reference
Published fieldpool_patch.name_descriptiona notes field containing human-readable description
Published fieldpool_patch.name_labela human-readable name
Published fieldpool_patch.uuidUnique identifier/object reference
Published fieldpool_update.name_descriptiona notes field containing human-readable description
Published fieldpool_update.name_labela human-readable name
Published fieldpool_update.uuidUnique identifier/object reference
Published fieldpool_update.vdiVDI the update was uploaded to
Published fieldrole.uuidUnique identifier/object reference
Published fieldsecret.other_configother_config
Published fieldsecret.uuidUnique identifier/object reference
Published fieldsecret.valuethe secret
Published fieldsession.last_activeTimestamp for last time session was active
Published fieldsession.poolTrue if this session relates to a intra-pool login, false otherwise
Published fieldsession.this_hostCurrently connected host
Published fieldsession.this_userCurrently connected user
Published fieldsession.uuidUnique identifier/object reference
Published fieldsubject.uuidUnique identifier/object reference
Published fieldtask.allowed_operationslist of the operations allowed in this state. This list is advisory only and the server state may have changed by the time this field is read by a client.
Published fieldtask.createdTime task was created
Published fieldtask.current_operationslinks each of the running tasks using this object (by reference) to a current_operation enum which describes the nature of the task.
Published fieldtask.error_infoif the task has failed, this field contains the set of associated error strings. Undefined otherwise.
Published fieldtask.finishedTime task finished (i.e. succeeded or failed). If task-status is pending, then the value of this field has no meaning
Published fieldtask.name_descriptiona notes field containing human-readable description
Published fieldtask.name_labela human-readable name
Published fieldtask.progressThis field contains the estimated fraction of the task which is complete. This field should not be used to determine whether the task is complete - for this the status field of the task should be used.
Published fieldtask.resident_onthe host on which the task is running
Published fieldtask.resultif the task has completed successfully, this field contains the result value (either Void or an object reference). Undefined otherwise.
Published fieldtask.statuscurrent status of the task
Published fieldtask.typeif 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.
Published fieldtask.uuidUnique identifier/object reference
Published fielduser.fullnamefull name
Published fielduser.short_nameshort name (e.g. userid)
Published fielduser.uuidUnique identifier/object reference
Published messagePBD.plugActivate the specified PBD, causing the referenced SR to be attached and scanned
Published messagePBD.unplugDeactivate the specified PBD, causing the referenced SR to be detached and nolonger scanned
Published messagePIF.create_VLANCreate a VLAN interface from an existing physical interface
Published messagePIF.destroyDestroy the PIF object (provided it is a VLAN interface)
Published messageSR.createCreate a new Storage Repository and introduce it into the managed system, creating both SR record and PBD record to attach it to current host (with specified device_config parameters)
Published messageSR.destroyDestroy specified SR, removing SR-record from database and remove SR from disk. (In order to affect this operation the appropriate device_config is read from the specified SR's PBD on current host)
Published messageSR.forgetRemoving specified SR-record from database, without attempting to remove SR from disk
Published messageSR.get_supported_typesReturn a set of all the SR types supported by the system
Published messageSR.introduceIntroduce a new Storage Repository into the managed system
Published messageSR.makeCreate a new Storage Repository on disk
Published messageSR.scanRefreshes the list of VDIs associated with an SR
Published messageSR.set_name_descriptionSet the name description of the SR
Published messageSR.set_name_labelSet the name label of the SR
Published messageSR.set_sharedSets the shared flag on the SR
Published messageVBD.assert_attachableThrows an error if this VBD could not be attached to this VM if the VM were running. Intended for debugging.
Published messageVBD.ejectRemove the media from the device and leave it empty
Published messageVBD.insertInsert new media into the device
Published messageVBD.plugHotplug the specified VBD, dynamically attaching it to the running VM
Published messageVBD.set_modeSets the mode of the VBD. The power_state of the VM must be halted.
Published messageVBD.unplugHot-unplug the specified VBD, dynamically unattaching it from the running VM
Published messageVBD.unplug_forceForcibly unplug the specified VBD
Published messageVDI.cloneTake an exact copy of the VDI and return a reference to the new disk. If any driver_params are specified then these are passed through to the storage-specific substrate driver that implements the clone operation. NB the clone lives in the same Storage Repository as its parent.
Published messageVDI.copyCopies a VDI to an SR. There must be a host that can see both the source and destination SRs simultaneously
Published messageVDI.forgetRemoves a VDI record from the database
Published messageVDI.resizeResize the VDI.
Published messageVDI.resize_onlineResize the VDI which may or may not be attached to running guests.
Published messageVDI.set_name_descriptionSet the name description of the VDI. This can only happen when its SR is currently attached.
Published messageVDI.set_name_labelSet the name label of the VDI. This can only happen when then its SR is currently attached.
Published messageVDI.set_read_onlySets the VDI's read_only field
Published messageVDI.snapshotTake a read-only snapshot of the VDI, returning a reference to the snapshot. If any driver_params are specified then these are passed through to the storage-specific substrate driver that takes the snapshot. NB the snapshot lives in the same Storage Repository as its parent.
Published messageVIF.plugHotplug the specified VIF, dynamically attaching it to the running VM
Published messageVIF.unplugHot-unplug the specified VIF, dynamically unattaching it from the running VM
Published messageVM.add_to_VCPUs_params_liveAdd the given key-value pair to VM.VCPUs_params, and apply that value on the running VM
Published messageVM.assert_can_boot_hereReturns an error if the VM could not boot on this host for some reason
Published messageVM.assert_operation_validCheck to see whether this operation is acceptable in the current state of the system, raising an error if the operation is invalid for some reason
Published messageVM.clean_rebootAttempt to cleanly shutdown the specified VM (Note: this may not be supported---e.g. if a guest agent is not installed). This can only be called when the specified VM is in the Running state.
Published messageVM.clean_shutdownAttempt to cleanly shutdown the specified VM. (Note: this may not be supported---e.g. if a guest agent is not installed). This can only be called when the specified VM is in the Running state.
Published messageVM.cloneClones 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.
Published messageVM.copyCopies a VM to an SR. There must be a host that can see both the source and destination SRs simultaneously
Published messageVM.get_allowed_VBD_devicesReturns a list of the allowed values that a VBD device field can take
Published messageVM.get_allowed_VIF_devicesReturns a list of the allowed values that a VIF device field can take
Published messageVM.get_boot_recordReturns a record describing the VM's dynamic state, initialised when the VM boots and updated to reflect runtime configuration changes e.g. CPU hotplug
Published messageVM.get_possible_hostsReturn the list of hosts on which this VM may run.
Published messageVM.hard_rebootStop executing the specified VM without attempting a clean shutdown and immediately restart the VM.
Published messageVM.hard_shutdownStop executing the specified VM without attempting a clean shutdown.
Published messageVM.pausePause the specified VM. This can only be called when the specified VM is in the Running state.
Published messageVM.pool_migrateMigrate a VM to another Host.
Published messageVM.power_state_resetReset the power-state of the VM to halted in the database only. (Used to recover from slave failures in pooling scenarios by resetting the power-states of VMs running on dead slaves to halted.) This is a potentially dangerous operation; use with care.
Published messageVM.provisionInspects the disk configuration contained within the VM's other_config, creates VDIs and VBDs and then executes any applicable post-install script.
Published messageVM.resumeAwaken the specified VM and resume it. This can only be called when the specified VM is in the Suspended state.
Published messageVM.resume_onAwaken the specified VM and resume it on a particular Host. This can only be called when the specified VM is in the Suspended state.
Published messageVM.send_sysrqSend 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.
Published messageVM.send_triggerSend the named trigger to this VM. This can only be called when the specified VM is in the Running state.
Published messageVM.set_HVM_boot_policySet the VM.HVM_boot_policy field of the given VM, which will take effect when it is next started
Published messageVM.set_VCPUs_number_liveSet the number of VCPUs for a running VM
Published messageVM.set_actions_after_crashSets the actions_after_crash parameter
Published messageVM.set_memory_target_liveSet the memory target for a running VM
Published messageVM.set_shadow_multiplier_liveSet the shadow memory multiplier on a running VM
Published messageVM.startStart the specified VM. This function can only be called with the VM is in the Halted State.
Published messageVM.start_onStart the specified VM on a particular host. This function can only be called with the VM is in the Halted State.
Published messageVM.suspendSuspend the specified VM to disk. This can only be called when the specified VM is in the Running state.
Published messageVM.unpauseResume the specified VM. This can only be called when the specified VM is in the Paused state.
Published messageVM.update_allowed_operationsRecomputes the list of acceptable operations
Published messagecrashdump.destroyDestroy the specified crashdump
Published messageevent.get_current_idReturn the ID of the next event to be generated by the system
Published messageevent.nextBlocking call which returns a (possibly empty) batch of events. This method is only recommended for legacy use. New development should use event.from which supersedes this method.
Published messageevent.registerRegisters this session with the event system for a set of given classes. This method is only recommended for legacy use in conjunction with event.next.
Published messageevent.unregisterRemoves this session's registration with the event system for a set of given classes. This method is only recommended for legacy use in conjunction with event.next.
Published messagehost.bugreport_uploadRun xen-bugtool --yestoall and upload the output to support
Published messagehost.destroyDestroy specified host record in database
Published messagehost.disablePuts the host into a state in which no new VMs can be started. Currently active VMs on the host continue to execute.
Published messagehost.dmesgGet the host xen dmesg.
Published messagehost.dmesg_clearGet the host xen dmesg, and clear the buffer.
Published messagehost.enablePuts the host into a state in which new VMs can be started.
Published messagehost.get_logGet the host's log file
Published messagehost.license_applyApply a new license to a host
Published messagehost.list_methodsList all supported methods
Published messagehost.rebootReboot the host. (This function can only be called if there are no currently running VMs on the host and it is disabled.)
Published messagehost.restart_agentRestarts the agent after a 10 second pause. WARNING: this is a dangerous operation. Any operations in progress will be aborted, and unrecoverable data loss may occur. The caller is responsible for ensuring that there are no operations in progress when this method is called.
Published messagehost.send_debug_keysInject the given string as debugging keys into Xen
Published messagehost.shutdownShutdown the host. (This function can only be called if there are no currently running VMs on the host and it is disabled.)
Published messagehost_crashdump.destroyDestroy specified host crash dump, removing it from the disk.
Published messagehost_crashdump.uploadUpload the specified host crash dump to a specified URL
Published messagehost_patch.applyApply the selected patch and return its output
Published messagehost_patch.destroyDestroy the specified host patch, removing it from the disk. This does NOT reverse the patch
Published messagepool.create_VLANCreate PIFs, mapping a network to the same physical interface/VLAN on each host. This call is deprecated: use Pool.create_VLAN_from_PIF instead.
Published messagepool.create_VLAN_from_PIFCreate a pool-wide VLAN by taking the PIF.
Published messagepool.ejectInstruct a pool master to eject a host from the pool
Published messagepool.emergency_reset_masterInstruct a slave already in a pool that the master has changed
Published messagepool.emergency_transition_to_masterInstruct host that's currently a slave to transition to being master
Published messagepool.joinInstruct host to join a new pool
Published messagepool.join_forceInstruct host to join a new pool
Published messagepool.recover_slavesInstruct a pool master, M, to try and contact its slaves and, if slaves are in emergency mode, reset their master address to M.
Published messagepool.sync_databaseForcibly synchronise the database now
Published messagesession.change_passwordChange the account password; if your session is authenticated with root privileges then the old_pwd is validated and the new_pwd is set regardless
Published messagesession.login_with_passwordAttempt to authenticate the user, returning a session reference if successful
Published messagesession.logoutLog out of a session
Published messagetask.cancelRequest that a task be cancelled. Note that a task may fail to be cancelled and may complete or fail normally and note that, even when a task does cancel, it might take an arbitrary amount of time.
Published messagetask.createCreate a new task object which must be manually destroyed.
Published messagetask.destroyDestroy the task object

Subsections of Topics

API for configuring the udhcp server in Dom0

This API allows you to configure the DHCP service running on the Host Internal Management Network (HIMN). The API configures a udhcp daemon residing in Dom0 and alters the service configuration for any VM using the network.

It should be noted that for this reason, that callers who modify the default configuration should be aware that their changes may have an adverse effect on other consumers of the HIMN.

Version history

Date        State
----        ----
2013-3-15   Stable

Stable: this API is considered stable and unlikely to change between software version and between hotfixes.

API description

The API for configuring the network is based on a series of other_config keys that can be set by the caller on the HIMN XAPI network object. Once any of the keys below have been set, the caller must ensure that any VIFs attached to the HIMN are removed, destroyed, created and plugged.

ip_begin

The first IP address in the desired subnet that the caller wishes the DHCP service to use.

ip_end

The last IP address in the desired subnet that the caller wishes the DHCP service to use.

netmask

The subnet mask for each of the issues IP addresses.

ip_disable_gw

A boolean key for disabling the DHCP server from returning a default gateway for VMs on the network. To disable returning the gateway address set the key to True.

Note: By default, the DHCP server will issue a default gateway for those requesting an address. Setting this key may disrupt applications that require the default gateway for communicating with Dom0 and so should be used with care.

Example code

An example python extract of setting the config for the network:

def get_himn_ref():
    networks = session.xenapi.network.get_all_records()
    for ref, rec in networks.iteritems():
        if 'is_host_internal_management_network' \
                                        in rec['other_config']:                                            
            return ref

    raise Exception("Error: unable to find HIMN.")


himn_ref = get_himn_ref()
other_config = session.xenapi.network.get_other_config(himn_ref)

other_config['ip_begin'] = "169.254.0.1"
other_config['ip_end'] = "169.254.255.254"
other_config['netmask'] = "255.255.0.0"

session.xenapi.network.set_other_config(himn_ref, other_config)

An example for how to disable the server returning a default gateway:

himn_ref = get_himn_ref()
other_config = session.xenapi.network.get_other_config(himn_ref)

other_config['ip_disable_gw'] = True

session.xenapi.network.set_other_config(himn_ref, other_config)

Guest agents

“Guest agents” are special programs which run inside VMs which can be controlled via the XenAPI.

One communication method between XenAPI clients is via Xenstore.

Adding Xenstore entries to VMs

Developers may wish to install guest agents into VMs which take special action based on the type of the VM. In order to communicate this information into the guest, a special Xenstore name-space known as vm-data is available which is populated at VM creation time. It is populated from the xenstore-data map in the VM record.

Set the xenstore-data parameter in the VM record:

xe vm-param-set uuid= xenstore-data:vm-data/foo=bar

Start the VM.

If it is a Linux-based VM, install the COMPANY_TOOLS and use the xenstore-read to verify that the node exists in Xenstore.

Note

Only prefixes beginning with vm-data are permitted, and anything not in this name-space will be silently ignored when starting the VM.

Memory

Memory is used for many things:

  • the hypervisor code: this is the Xen executable itself
  • the hypervisor heap: this is needed for per-domain structures and per-vCPU structures
  • the crash kernel: this is needed to collect information after a host crash
  • domain RAM: this is the memory the VM believes it has
  • shadow memory: for HVM guests running on hosts without hardware assisted paging (HAP) Xen uses shadow to optimise page table updates. For all guests shadow is used during live migration for tracking the memory transfer.
  • video RAM for the virtual graphics card

Some of these are constants (e.g. hypervisor code) while some depend on the VM configuration (e.g. domain RAM). Xapi calls the constants “host overhead” and the variables due to VM configuration as “VM overhead”. These overheads are subtracted from free memory on the host when starting, resuming and migrating VMs.

Metrics

xcp-rrdd records statistics about the host and the VMs running on top. The metrics are stored persistently for long-term access and analysis of historical trends. Statistics are stored in RRDs (Round Robin Databases). RRDs are fixed-size structures that store time series with decreasing time resolution: the older the data point is, the longer the timespan it represents. ‘Data sources’ are sampled every few seconds and points are added to the highest resolution RRD. Periodically each high-frequency RRD is ‘consolidated’ (e.g. averaged) to produce a data point for a lower-frequency RRD.

RRDs are resident on the host on which the VM is running, or the pool coordinator when the VM is not running. The RRDs are backed up every day.

Granularity

Statistics are persisted for a maximum of one year, and are stored at different granularities. The average and most recent values are stored at intervals of:

  • five seconds for the past ten minutes
  • one minute for the past two hours
  • one hour for the past week
  • one day for the past year

RRDs are saved to disk as uncompressed XML. The size of each RRD when written to disk ranges from 200KiB to approximately 1.2MiB when the RRD stores the full year of statistics.

By default each RRD contains only averaged data to save storage space. To record minimum and maximum values in future RRDs, set the Pool-wide flag

xe pool-param-set uuid= other-config:create_min_max_in_new_VM_RRDs=true

Downloading

Statistics can be downloaded over HTTP in XML or JSON format, for example using wget. See rrddump and rrdxport for information about the XML format. The JSON format has the same structure as the XML. Parameters are appended to the URL following a question mark (?) and separated by ampersands (&). HTTP authentication can take the form of a username and password or a session token in a URL parameter.

Statistics may be downloaded all at once, including all history, or as deltas suitable for interactive graphing.

Downloading statistics all at once

To obtain a full dump of RRD data for a host use:

wget  http://hostname/host_rrd?session_id=OpaqueRef:43df3204-9360-c6ab-923e-41a8d19389ba"

where the session token has been fetched from the server using the API.

For example, using Python’s XenAPI library:

import XenAPI
username = "root"
password = "actual_password"
url = "http://hostname"
session = XenAPI.Session(url)
session.xenapi.login_with_password(username, password, "1.0", "session_getter")
session._session

A URL parameter is used to decide which format to return: XML is returned by default, adding the parameter json makes the server return JSON. Starting from xapi version 23.17.0, the server uses the HTTP header Accept to decide which format to return. When both formats are accepted, for example, using */*; JSON is returned. Of interest are the clients wget and curl which use this accept header value, meaning that when using them the default behaviour will change and the accept header needs to be overridden to make the server return XML. The content type is provided in the reponse’s headers in these newer versions.

The XML RRD data is in the format used by rrdtool and looks like this:

<?xml version="1.0"?>
<rrd>
  <version>0003</version>
  <step>5</step>
  <lastupdate>1213616574</lastupdate>
  <ds>
    <name>memory_total_kib</name>
    <type>GAUGE</type>
    <minimal_heartbeat>300.0000</minimal_heartbeat>
    <min>0.0</min>
    <max>Infinity</max>
    <last_ds>2070172</last_ds>
    <value>9631315.6300</value>
    <unknown_sec>0</unknown_sec>
  </ds>
  <ds>
   <!-- other dss - the order of the data sources is important
        and defines the ordering of the columns in the archives below -->
  </ds>
  <rra>
    <cf>AVERAGE</cf>
    <pdp_per_row>1</pdp_per_row>
     <params>
      <xff>0.5000</xff>
    </params>
    <cdp_prep> <!-- This is for internal use -->
      <ds>
        <primary_value>0.0</primary_value>
        <secondary_value>0.0</secondary_value>
        <value>0.0</value>
        <unknown_datapoints>0</unknown_datapoints>
      </ds>
      ...other dss - internal use only...
    </cdp_prep>
    <database>
     <row>
        <v>2070172.0000</v>  <!-- columns correspond to the DSs defined above -->
        <v>1756408.0000</v>
        <v>0.0</v>
        <v>0.0</v>
        <v>732.2130</v>
        <v>0.0</v>
        <v>782.9186</v>
        <v>0.0</v>
        <v>647.0431</v>
        <v>0.0</v>
        <v>0.0001</v>
        <v>0.0268</v>
        <v>0.0100</v>
        <v>0.0</v>
        <v>615.1072</v>
     </row>
     ...
  </rra>
  ... other archives ...
</rrd>

To obtain a full dump of RRD data of a VM with uuid x:

wget "http://hostname/vm_rrd?session_id=<token>&uuid=x"

Note that it is quite expensive to download full RRDs as they contain lots of historical information. For interactive displays clients should download deltas instead.

Downloading deltas

To obtain an update of all VM statistics on a host, the URL would be of the form:

wget "https://hostname/rrd_updates?session_id=<token>&start=<secondsinceepoch>"

This request returns data in an rrdtool xport style XML format, for every VM resident on the particular host that is being queried. To differentiate which column in the export is associated with which VM, the legend field is prefixed with the UUID of the VM.

An example rrd_updates output:

<xport>
  <meta>
    <start>1213578000</start>
    <step>3600</step>
    <end>1213617600</end>
    <rows>12</rows>
    <columns>12</columns>
    <legend>
      <entry>AVERAGE:vm:ecd8d7a0-1be3-4d91-bd0e-4888c0e30ab3:cpu1</entry> <!-- nb - each data source might have multiple entries for different consolidation functions -->
      <entry>AVERAGE:vm:ecd8d7a0-1be3-4d91-bd0e-4888c0e30ab3:cpu0</entry>
      <entry>AVERAGE:vm:ecd8d7a0-1be3-4d91-bd0e-4888c0e30ab3:memory</entry>
      <entry>MIN:vm:ecd8d7a0-1be3-4d91-bd0e-4888c0e30ab3:cpu1</entry>
      <entry>MIN:vm:ecd8d7a0-1be3-4d91-bd0e-4888c0e30ab3:cpu0</entry>
      <entry>MIN:vm:ecd8d7a0-1be3-4d91-bd0e-4888c0e30ab3:memory</entry>
      <entry>MAX:vm:ecd8d7a0-1be3-4d91-bd0e-4888c0e30ab3:cpu1</entry>
      <entry>MAX:vm:ecd8d7a0-1be3-4d91-bd0e-4888c0e30ab3:cpu0</entry>
      <entry>MAX:vm:ecd8d7a0-1be3-4d91-bd0e-4888c0e30ab3:memory</entry>
      <entry>LAST:vm:ecd8d7a0-1be3-4d91-bd0e-4888c0e30ab3:cpu1</entry>
      <entry>LAST:vm:ecd8d7a0-1be3-4d91-bd0e-4888c0e30ab3:cpu0</entry>
      <entry>LAST:vm:ecd8d7a0-1be3-4d91-bd0e-4888c0e30ab3:memory</entry>
    </legend>
  </meta>
  <data>
    <row>
      <t>1213617600</t>
      <v>0.0</v> <!-- once again, the order or the columns is defined by the legend above -->
      <v>0.0282</v>
      <v>209715200.0000</v>
      <v>0.0</v>
      <v>0.0201</v>
      <v>209715200.0000</v>
      <v>0.0</v>
      <v>0.0445</v>
      <v>209715200.0000</v>
      <v>0.0</v>
      <v>0.0243</v>
      <v>209715200.0000</v>
    </row>
   ...
  </data>
</xport>

To obtain host updates too, use the query parameter host=true:

wget "http://hostname/rrd_updates?session_id=<token>&start=<secondssinceepoch>&host=true"

The step will decrease as the period decreases, which means that if you request statistics for a shorter time period you will get more detailed statistics.

To download updates containing only the averages, or minimums or maximums, add the parameter cf=AVERAGE|MIN|MAX (note case is important) e.g.

wget "http://hostname/rrd_updates?session_id=<token>&start=0&cf=MAX"

To request a different update interval, add the parameter interval=seconds e.g.

wget "http://hostname/rrd_updates?session_id=<token>&start=0&interval=5"

Snapshots

Snapshots represent the state of a VM, or a disk (VDI) at a point in time. They can be used for:

  • backups (hourly, daily, weekly etc)
  • experiments (take snapshot, try something, revert back again)
  • golden images (install OS, get it just right, clone it 1000s of times)

Read more about Snapshots: the High-Level Feature.

Taking a VDI snapshot

To take a snapshot of a single disk (VDI):

snapshot_vdi <- VDI.snapshot(session_id, vdi, driver_params)

where vdi is the reference to the disk to be snapshotted, and driver_params is a list of string pairs providing optional backend implementation-specific hints. The snapshot operation should be quick (i.e. it should never be implemented as a slow disk copy) and the resulting VDI will have

Field nameDescription
is_a_snapshota flag, set to true, indicating the disk is a snapshot
snapshot_ofa reference to the disk the snapshot was created from
snapshot_timethe time the snapshot was taken

The resulting snapshot should be considered read-only. Depending on the backend implementation it may be technically possible to write to the snapshot, but clients must not do this. To create a writable disk from a snapshot, see “restoring from a snapshot” below.

Note that the storage backend is free to implement this in different ways. We do not assume the presence of a .vhd-formatted storage repository. Clients must never assume anything about the backend implementation without checking first with the maintainers of the backend implementation.

Restoring to a VDI snapshot

To restore from a VDI snapshot first

new_vdi <- VDI.clone(session_id, snapshot_vdi, driver_params)

where snapshot_vdi is a reference to the snapshot VDI, and driver_params is a list of string pairs providing optional backend implementation-specific hints. The clone operation should be quick (i.e. it should never be implemented as a slow disk copy) and the resulting VDI will have

Field nameDescription
is_a_snapshota flag, set to false, indicating the disk is not a snapshot
snapshot_ofan invalid reference
snapshot_timean invalid time

The resulting disk is writable and can be used by the client as normal.

Note that the “restored” VDI will have a different VDI.uuid and reference to the original VDI.

Taking a VM snapshot

A VM snapshot is a copy of the VM metadata and a snapshot of all the associated VDIs at around the same point in time. To take a VM snapshot:

snapshot_vm <- VM.snapshot(session_id, vm, new_name)

where vm is a reference to the existing VM and new_name will be the name_label of the resulting VM (snapshot) object. The resulting VM will have

Field nameDescription
is_a_snapshota flag, set to true, indicating the VM is a snapshot
snapshot_ofa reference to the VM the snapshot was created from
snapshot_timethe time the snapshot was taken

Note that each disk is snapshotted one-by-one and not at the same time.

Restoring to a VM snapshot

A VM snapshot can be reverted to a snapshot using

VM.revert(session_id, snapshot_ref)

where snapshot_ref is a reference to the snapshot VM. Each VDI associated with the VM before the snapshot will be destroyed and each VDI associated with the snapshot will be cloned (see “Reverting to a disk snapshot” above) and associated with the VM. The resulting VM will have

Field nameDescription
is_a_snapshota flag, set to false, indicating the VM is not a snapshot
snapshot_ofan invalid reference
snapshot_timean invalid time

Note that the VM.uuid and reference are preserved, but the VDI.uuid and VDI references are not.

Downloading a disk or snapshot

Disks can be downloaded in either raw or vhd format using an HTTP 1.0 GET request as follows:

GET /export_raw_vdi?session_id=%s&task_id=%s&vdi=%s&format=%s[&base=%s] HTTP/1.0\r\n
Connection: close\r\n
\r\n
\r\n

where

  • session_id is a currently logged-in session
  • task_id is a Task reference which will be used to monitor the progress of this task and receive errors from it
  • vdi is the reference of the VDI into which the data will be imported
  • format is either vhd or raw
  • (optional) base is the reference of a VDI which has already been exported and this export should only contain the blocks which have changed since then.

Note that the vhd format allows the disk to be sparse i.e. only contain allocated blocks. This helps reduce the size of the download.

The xapi-project/xen-api repo has a python download example

Uploading a disk or snapshot

Disks can be uploaded in either raw or vhd format using an HTTP 1.0 PUT request as follows:

PUT /import_raw_vdi?session_id=%s&task_id=%s&vdi=%s&format=%s HTTP/1.0\r\n
Connection: close\r\n
\r\n
\r\n

where

  • session_id is a currently logged-in session
  • task_id is a Task reference which will be used to monitor the progress of this task and receive errors from it
  • vdi is the reference of the VDI into which the data will be imported
  • format is either vhd or raw

Note that you must create the disk (with the correct size) before importing data to it. The disk doesn’t have to be empty, in fact if restoring from a series of incremental downloads it makes sense to upload them all to the same disk in order.

Example: incremental backup with xe

This section will show how easy it is to build an incremental backup tool using these APIs. For simplicity we will use the xe commands rather than raw XMLRPC and HTTP.

For a VDI with uuid $VDI, take a snapshot:

FULL=$(xe vdi-snapshot uuid=$VDI)

Next perform a full backup into a file “full.vhd”, in vhd format:

xe vdi-export uuid=$FULL filename=full.vhd format=vhd  --progress

If the SR was using the vhd format internally (this is the default) then the full backup will be sparse and will only contain blocks if they have been written to.

After some time has passed and the VDI has been written to, take another snapshot:

DELTA=$(xe vdi-snapshot uuid=$VDI)

Now we can backup only the disk blocks which have changed between the original snapshot $FULL and the next snapshot $DELTA into a file called “delta.vhd”:

xe vdi-export uuid=$DELTA filename=delta.vhd format=vhd base=$FULL --progress

We now have 2 files on the local system:

  • “full.vhd”: a complete backup of the first snapshot
  • “delta.vhd”: an incremental backup of the second snapshot, relative to the first

For example:

test $ ls -lh *.vhd
-rw------- 1 dscott xendev 213M Aug 15 10:39 delta.vhd
-rw------- 1 dscott xendev 8.0G Aug 15 10:39 full.vhd

To restore the original snapshot you must create an empty disk with the correct size. To find the size of a .vhd file use qemu-img as follows:

test $ qemu-img info delta.vhd
image: delta.vhd
file format: vpc
virtual size: 24G (25769705472 bytes)
disk size: 212M

Here the size is 25769705472 bytes. Create a fresh VDI in SR $SR to restore the backup as follows:

SIZE=25769705472
RESTORE=$(xe vdi-create name-label=restored virtual-size=$SIZE sr-uuid=$SR type=user)

then import “full.vhd” into it:

xe vdi-import uuid=$RESTORE filename=full.vhd format=vhd --progress

Once “full.vhd” has been imported, the incremental backup can be restored on top:

xe vdi-import uuid=$RESTORE filename=delta.vhd format=vhd --progress

Note there is no need to supply a “base” parameter when importing; Xapi will treat the “vhd differencing disk” as a set of blocks and import them. It is up to you to check you are importing them to the right place.

Now the VDI $RESTORE should have the same contents as $DELTA.

VM consoles

Most XenAPI graphical interfaces will want to gain access to the VM consoles, in order to render them to the user as if they were physical machines. There are several types of consoles available, depending on the type of guest or if the physical host console is being accessed:

Types of consoles

Operating SystemTextGraphicalOptimized graphical
WindowsNoVNC, using an API callRDP, directly from guest
LinuxYes, through VNC and an API callNoVNC, directly from guest
Physical HostYes, through VNC and an API callNoNo

Hardware-assisted VMs, such as Windows, directly provide a graphical console over VNC. There is no text-based console, and guest networking is not necessary to use the graphical console. Once guest networking has been established, it is more efficient to setup Remote Desktop Access and use an RDP client to connect directly (this must be done outside of the XenAPI).

Paravirtual VMs, such as Linux guests, provide a native text console directly. XenServer provides a utility (called vncterm) to convert this text-based console into a graphical VNC representation. Guest networking is not necessary for this console to function. As with Windows above, Linux distributions often configure VNC within the guest, and directly connect to it over a guest network interface.

The physical host console is only available as a vt100 console, which is exposed through the XenAPI as a VNC console by using vncterm in the control domain.

RFB (Remote Framebuffer) is the protocol which underlies VNC, specified in The RFB Protocol. Third-party developers are expected to provide their own VNC viewers, and many freely available implementations can be adapted for this purpose. RFB 3.3 is the minimum version which viewers must support.

Retrieving VNC consoles using the API

VNC consoles are retrieved using a special URL passed through to the host agent. The sequence of API calls is as follows:

  1. Client to Master/443: XML-RPC: Session.login_with_password().

  2. Master/443 to Client: Returns a session reference to be used with subsequent calls.

  3. Client to Master/443: XML-RPC: VM.get_by_name_label().

  4. Master/443 to Client: Returns a reference to a particular VM (or the “control domain” if you want to retrieve the physical host console).

  5. Client to Master/443: XML-RPC: VM.get_consoles().

  6. Master/443 to Client: Returns a list of console objects associated with the VM.

  7. Client to Master/443: XML-RPC: VM.get_location().

  8. Returns a URI describing where the requested console is located. The URIs are of the form: https://192.168.0.1/console?ref=OpaqueRef:c038533a-af99-a0ff-9095-c1159f2dc6a0.

  9. Client to 192.168.0.1: HTTP CONNECT “/console?ref=(…)”

The final HTTP CONNECT is slightly non-standard since the HTTP/1.1 RFC specifies that it should only be a host and a port, rather than a URL. Once the HTTP connect is complete, the connection can subsequently directly be used as a VNC server without any further HTTP protocol action.

This scheme requires direct access from the client to the control domain’s IP, and will not work correctly if there are Network Address Translation (NAT) devices blocking such connectivity. You can use the CLI to retrieve the console URI from the client and perform a connectivity check.

Retrieve the VM UUID by running:

$ VM=$(xe vm-list params=uuid --minimal name-label=<name>)

Retrieve the console information:

$ xe console-list vm-uuid=$VM
uuid ( RO)             : 8013b937-ff7e-60d1-ecd8-e52d66c5879e
          vm-uuid ( RO): 2d7c558a-8f03-b1d0-e813-cbe7adfa534c
    vm-name-label ( RO): 6
         protocol ( RO): RFB
         location ( RO): https://10.80.228.30/console?uuid=8013b937-ff7e-60d1-ecd8-e52d66c5879e

Use command-line utilities like ping to test connectivity to the IP address provided in the location field.

Disabling VNC forwarding for Linux VM

When creating and destroying Linux VMs, the host agent automatically manages the vncterm processes which convert the text console into VNC. Advanced users who wish to directly access the text console can disable VNC forwarding for that VM. The text console can then only be accessed directly from the control domain directly, and graphical interfaces such as XenCenter will not be able to render a console for that VM.

Before starting the guest, set the following parameter on the VM record:

$ xe vm-param-set uuid=$VM other-config:disable_pv_vnc=1

Start the VM.

Use the CLI to retrieve the underlying domain ID of the VM with:

$ DOMID=$(xe vm-list params=dom-id uuid=$VM --minimal)

On the host console, connect to the text console directly by:

$ /usr/lib/xen/bin/xenconsole $DOMID

This configuration is an advanced procedure, and we do not recommend that the text console is directly used for heavy I/O operations. Instead, connect to the guest over SSH or some other network-based connection mechanism.

VM import/export

VMs can be exported to a file and later imported to any Xapi host. The export protocol is a simple HTTP(S) GET, which should be sent to the Pool master. Authorization is either via a pre-created session_id or by HTTP basic authentication (particularly useful on the command-line). The VM to export is specified either by UUID or by reference. To keep track of the export, a task can be created and passed in using its reference. Note that Xapi may send an HTTP redirect if a different host has better access to the disk data.

The following arguments are passed as URI query parameters or HTTP cookies:

ArgumentDescription
session_idthe reference of the session being used to authenticate; required only when not using HTTP basic authentication
task_idthe reference of the task object with which to keep track of the operation; optional, required only if you have created a task object to keep track of the export
refthe reference of the VM; required only if not using the UUID
uuidthe UUID of the VM; required only if not using the reference
use_compressionan optional boolean “true” or “false” (defaulting to “false”). If “true” then the output will be gzip-compressed before transmission.

For example, using the Linux command line tool cURL:

$ curl http://root:foo@myxenserver1/export?uuid=<vm_uuid> -o <exportfile>

will export the specified VM to the file exportfile.

To export just the metadata, use the URI http://server/export_metadata.

The import protocol is similar, using HTTP(S) PUT. The session_id and task_id arguments are as for the export. The ref and uuid are not used; a new reference and uuid will be generated for the VM. There are some additional parameters:

ArgumentDescription
restoreif true, the import is treated as replacing the original VM - the implication of this currently is that the MAC addresses on the VIFs are exactly as the export was, which will lead to conflicts if the original VM is still being run.
forceif true, any checksum failures will be ignored (the default is to destroy the VM if a checksum error is detected)
sr_idthe reference of an SR into which the VM should be imported. The default behavior is to import into the Pool.default_SR

Note there is no need to specify whether the export is compressed, as Xapi will automatically detect and decompress gzip-encoded streams.

For example, again using cURL:

curl -T <exportfile> http://root:foo@myxenserver2/import

will import the VM to the default SR on the server.

Note

Note that if no default SR has been set, and no sr_uuid is specified, the error message DEFAULT_SR_NOT_FOUND is returned.

Another example:

curl -T <exportfile> http://root:foo@myxenserver2/import?sr_id=<ref_of_sr>

will import the VM to the specified SR on the server.

To import just the metadata, use the URI http://server/import_metadata

Legacy VM Import Format

This section describes the legacy VM import/export format and is for historical interest only. It should be updated to describe the current format, see issue 64

Xapi supports a human-readable legacy VM input format called XVA. This section describes the syntax and structure of XVA.

An XVA consists of a directory containing XML metadata and a set of disk images. A VM represented by an XVA is not intended to be directly executable. Data within an XVA package is compressed and intended for either archiving on permanent storage or for being transmitted to a VM server - such as a XenServer host - where it can be decompressed and executed.

XVA is a hypervisor-neutral packaging format; it should be possible to create simple tools to instantiate an XVA VM on any other platform. XVA does not specify any particular runtime format; for example disks may be instantiated as file images, LVM volumes, QCoW images, VMDK or VHD images. An XVA VM may be instantiated any number of times, each instantiation may have a different runtime format.

XVA does not:

  • specify any particular serialization or transport format

  • provide any mechanism for customizing VMs (or templates) on install

  • address how a VM may be upgraded post-install

  • define how multiple VMs, acting as an appliance, may communicate

These issues are all addressed by the related Open Virtual Appliance specification.

An XVA is a directory containing, at a minimum, a file called ova.xml. This file describes the VM contained within the XVA and is described in Section 3.2. Disks are stored within sub-directories and are referenced from the ova.xml. The format of disk data is described later in Section 3.3.

The following terms will be used in the rest of the chapter:

  • HVM: a mode in which unmodified OS kernels run with the help of virtualization support in the hardware.

  • PV: a mode in which specially modified “paravirtualized” kernels run explicitly on top of a hypervisor without requiring hardware support for virtualization.

The “ova.xml” file contains the following elements:

<appliance version="0.1">

The number in the attribute “version” indicates the version of this specification to which the XVA is constructed; in this case version 0.1. Inside the <appliance> there is exactly one <vm>: (in the OVA specification, multiple <vm>s are permitted)

<vm name="name">

Each <vm> element describes one VM. The “name” attribute is for future internal use only and must be unique within the ova.xml file. The “name” attribute is permitted to be any valid UTF-8 string. Inside each <vm> tag are the following compulsory elements:

<label>... text ... </label>

A short name for the VM to be displayed in a UI.

<shortdesc> ... description ... </shortdesc>

A description for the VM to be displayed in the UI. Note that for both <label> and <shortdesc> contents, leading and trailing whitespace will be ignored.

<config mem_set="268435456" vcpus="1"/>

The <config> element has attributes which describe the amount of memory in bytes (mem_set) and number of CPUs (VCPUs) the VM should have.

Each <vm> has zero or more <vbd> elements representing block devices which look like the following:

<vbd device="sda" function="root" mode="w" vdi="vdi_sda"/>

The attributes have the following meanings:

  • device: name of the physical device to expose to the VM. For linux guests we use “sd[a-z]” and for windows guests we use “hd[a-d]”.
  • function: if marked as “root”, this disk will be used to boot the guest. (NB this does not imply the existence of the Linux root i.e. / filesystem) Only one device should be marked as “root”. See Section 3.4 describing VM booting. Any other string is ignored.
  • mode: either “w” or “ro” if the device is to be read/write or read-only
  • vdi: the name of the disk image (represented by a <vdi> element) to which this block device is connected

Each <vm> may have an optional <hacks> section like the following:

<hacks is_hvm="false" kernel_boot_cmdline="root=/dev/sda1 ro"/>

The <hacks> element will be removed in future. The attribute is_hvm is either true or false, depending on whether the VM should be booted in HVM or not. The kernel_boot_cmdline contains additional kernel commandline arguments when booting a guest using pygrub.

In addition to a <vm> element, the <appliance> will contain zero or more <vdi> elements like the following:

<vdi name="vdi_sda" size="5368709120" source="file://sda" type="dir-gzipped-chunks">

Each <vdi> corresponds to a disk image. The attributes have the following meanings:

  • name: name of the VDI, referenced by the vdi attribute of <vbd>elements. Any valid UTF-8 string is permitted.
  • size: size of the required image in bytes
  • source: a URI describing where to find the data for the image, only file:// URIs are currently permitted and must describe paths relative to the directory containing the ova.xml
  • type: describes the format of the disk data

A single disk image encoding is specified in which has type “dir-gzipped-chunks”: Each image is represented by a directory containing a sequence of files as follows:

-rw-r--r-- 1 dscott xendev 458286013    Sep 18 09:51 chunk000000000.gz
-rw-r--r-- 1 dscott xendev 422271283    Sep 18 09:52 chunk000000001.gz
-rw-r--r-- 1 dscott xendev 395914244    Sep 18 09:53 chunk000000002.gz
-rw-r--r-- 1 dscott xendev 9452401      Sep 18 09:53 chunk000000003.gz
-rw-r--r-- 1 dscott xendev 1096066      Sep 18 09:53 chunk000000004.gz
-rw-r--r-- 1 dscott xendev 971976       Sep 18 09:53 chunk000000005.gz
-rw-r--r-- 1 dscott xendev 971976       Sep 18 09:53 chunk000000006.gz
-rw-r--r-- 1 dscott xendev 971976       Sep 18 09:53 chunk000000007.gz
-rw-r--r-- 1 dscott xendev 573930       Sep 18 09:53 chunk000000008.gz

Each file (named “chunk-XXXXXXXXX.gz”) is a gzipped file containing exactly 1e9 bytes (1GB, not 1GiB) of raw block data. The small size was chosen to be safely under the maximum file size limits of several filesystems. If the files are gunzipped and then concatenated together, the original image is recovered.

Because the import and export of VMs can take some time to complete, an asynchronous HTTP interface to the import and export operations is provided. To perform an export using the XenServer API, construct an HTTP GET call providing a valid session ID, task ID and VM UUID, as shown in the following pseudo code:

task = Task.create()
result = HTTP.get(
  server, 80, "/export?session_id=&task_id=&ref=");

For the import operation, use an HTTP PUT call as demonstrated in the following pseudo code:

task = Task.create()
result = HTTP.put(
  server, 80, "/import?session_id=&task_id=&ref=");

VM Lifecycle

The following figure shows the states that a VM can be in and the API calls that can be used to move the VM between these states.

graph
    halted-- start(paused) -->paused
    halted-- start(not paused) -->running
    running-- suspend -->suspended
    suspended-- resume(not paused) -->running
    suspended-- resume(paused) -->paused
    suspended-- hard shutdown -->halted
    paused-- unpause -->running
    paused-- hard shutdown -->halted
    running-- clean shutdown\n hard shutdown -->halted
    running-- pause -->paused
    halted-- destroy -->destroyed

VM boot parameters

The VM class contains a number of fields that control the way in which the VM is booted. With reference to the fields defined in the VM class (see later in this document), this section outlines the boot options available and the mechanisms provided for controlling them.

VM booting is controlled by setting one of the two mutually exclusive groups: “PV” and “HVM”. If HVM.boot_policy is an empty string, then paravirtual domain building and booting will be used; otherwise the VM will be loaded as a HVM domain, and booted using an emulated BIOS.

When paravirtual booting is in use, the PV_bootloader field indicates the bootloader to use. It may be “pygrub”, in which case the platform’s default installation of pygrub will be used, or a full path within the control domain to some other bootloader. The other fields, PV_kernel, PV_ramdisk, PV_args, and PV_bootloader_args will be passed to the bootloader unmodified, and interpretation of those fields is then specific to the bootloader itself, including the possibility that the bootloader will ignore some or all of those given values. Finally the paths of all bootable disks are added to the bootloader commandline (a disk is bootable if its VBD has the bootable flag set). There may be zero, one, or many bootable disks; the bootloader decides which disk (if any) to boot from.

If the bootloader is pygrub, then the menu.lst is parsed, if present in the guest’s filesystem, otherwise the specified kernel and ramdisk are used, or an autodetected kernel is used if nothing is specified and autodetection is possible. PV_args is appended to the kernel command line, no matter which mechanism is used for finding the kernel.

If PV_bootloader is empty but PV_kernel is specified, then the kernel and ramdisk values will be treated as paths within the control domain. If both PV_bootloader and PV_kernel are empty, then the behaviour is as if PV_bootloader were specified as “pygrub”.

When using HVM booting, HVM_boot_policy and HVM_boot_params specify the boot handling. Only one policy is currently defined, “BIOS order”. In this case, HVM_boot_params should contain one key-value pair “order” = “N” where N is the string that will be passed to QEMU. Optionally HVM_boot_params can contain another key-value pair “firmware” with values “bios” or “uefi” (default is “bios” if absent). By default Secure Boot is not enabled, it can be enabled when “uefi” is enabled by setting VM.platform["secureboot"] to true.

    XenCenter

    XenCenter uses some conventions on top of the XenAPI:

    Internationalization for SR names

    The SRs created at install time now have an other_config key indicating how their names may be internationalized.

    other_config["i18n-key"] may be one of

    • local-hotplug-cd

    • local-hotplug-disk

    • local-storage

    • xenserver-tools

    Additionally, other_config["i18n-original-value-<field name>"] gives the value of that field when the SR was created. If XenCenter sees a record where SR.name_label equals other_config["i18n-original-value-name_label"] (that is, the record has not changed since it was created during XenServer installation), then internationalization will be applied. In other words, XenCenter will disregard the current contents of that field, and instead use a value appropriate to the user’s own language.

    If you change SR.name_label for your own purpose, then it no longer is the same as other_config["i18n-original-value-name_label"]. Therefore, XenCenter does not apply internationalization, and instead preserves your given name.

    Hiding objects from XenCenter

    Networks, PIFs, and VMs can be hidden from XenCenter by adding the key HideFromXenCenter=true to the other_config parameter for the object. This capability is intended for ISVs who know what they are doing, not general use by everyday users. For example, you might want to hide certain VMs because they are cloned VMs that shouldn’t be used directly by general users in your environment.

    In XenCenter, hidden Networks, PIFs, and VMs can be made visible, using the View menu.