You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ch...@apache.org on 2012/08/29 22:01:07 UTC

[5/36] Patch from Devdeep Singh: Importing the updated xenserver sdk source that comes with BSD license.

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d59e669/deps/XenServerJava/src/com/xensource/xenapi/HostCpu.java
----------------------------------------------------------------------
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/HostCpu.java b/deps/XenServerJava/src/com/xensource/xenapi/HostCpu.java
new file mode 100644
index 0000000..7c7809e
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/HostCpu.java
@@ -0,0 +1,531 @@
+/* Copyright (c) Citrix Systems, Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ *   1) Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ * 
+ *   2) Redistributions in binary form must reproduce the above
+ *      copyright notice, this list of conditions and the following
+ *      disclaimer in the documentation and/or other materials
+ *      provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package com.xensource.xenapi;
+
+import com.xensource.xenapi.Types.BadServerResponse;
+import com.xensource.xenapi.Types.VersionException;
+import com.xensource.xenapi.Types.XenAPIException;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.xmlrpc.XmlRpcException;
+
+/**
+ * A physical CPU
+ *
+ * @author Citrix Systems, Inc.
+ */
+public class HostCpu extends XenAPIObject {
+
+    /**
+     * The XenAPI reference to this object.
+     */
+    protected final String ref;
+
+    /**
+     * For internal use only.
+     */
+    HostCpu(String ref) {
+       this.ref = ref;
+    }
+
+    public String toWireString() {
+       return this.ref;
+    }
+
+    /**
+     * If obj is a HostCpu, compares XenAPI references for equality.
+     */
+    @Override
+    public boolean equals(Object obj)
+    {
+        if (obj != null && obj instanceof HostCpu)
+        {
+            HostCpu other = (HostCpu) obj;
+            return other.ref.equals(this.ref);
+        } else
+        {
+            return false;
+        }
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return ref.hashCode();
+    }
+
+    /**
+     * Represents all the fields in a HostCpu
+     */
+    public static class Record implements Types.Record {
+        public String toString() {
+            StringWriter writer = new StringWriter();
+            PrintWriter print = new PrintWriter(writer);
+            print.printf("%1$20s: %2$s\n", "uuid", this.uuid);
+            print.printf("%1$20s: %2$s\n", "host", this.host);
+            print.printf("%1$20s: %2$s\n", "number", this.number);
+            print.printf("%1$20s: %2$s\n", "vendor", this.vendor);
+            print.printf("%1$20s: %2$s\n", "speed", this.speed);
+            print.printf("%1$20s: %2$s\n", "modelname", this.modelname);
+            print.printf("%1$20s: %2$s\n", "family", this.family);
+            print.printf("%1$20s: %2$s\n", "model", this.model);
+            print.printf("%1$20s: %2$s\n", "stepping", this.stepping);
+            print.printf("%1$20s: %2$s\n", "flags", this.flags);
+            print.printf("%1$20s: %2$s\n", "features", this.features);
+            print.printf("%1$20s: %2$s\n", "utilisation", this.utilisation);
+            print.printf("%1$20s: %2$s\n", "otherConfig", this.otherConfig);
+            return writer.toString();
+        }
+
+        /**
+         * Convert a host_cpu.Record to a Map
+         */
+        public Map<String,Object> toMap() {
+            Map<String,Object> map = new HashMap<String,Object>();
+            map.put("uuid", this.uuid == null ? "" : this.uuid);
+            map.put("host", this.host == null ? new Host("OpaqueRef:NULL") : this.host);
+            map.put("number", this.number == null ? 0 : this.number);
+            map.put("vendor", this.vendor == null ? "" : this.vendor);
+            map.put("speed", this.speed == null ? 0 : this.speed);
+            map.put("modelname", this.modelname == null ? "" : this.modelname);
+            map.put("family", this.family == null ? 0 : this.family);
+            map.put("model", this.model == null ? 0 : this.model);
+            map.put("stepping", this.stepping == null ? "" : this.stepping);
+            map.put("flags", this.flags == null ? "" : this.flags);
+            map.put("features", this.features == null ? "" : this.features);
+            map.put("utilisation", this.utilisation == null ? 0.0 : this.utilisation);
+            map.put("other_config", this.otherConfig == null ? new HashMap<String, String>() : this.otherConfig);
+            return map;
+        }
+
+        /**
+         * Unique identifier/object reference
+         */
+        public String uuid;
+        /**
+         * the host the CPU is in
+         */
+        public Host host;
+        /**
+         * the number of the physical CPU within the host
+         */
+        public Long number;
+        /**
+         * the vendor of the physical CPU
+         */
+        public String vendor;
+        /**
+         * the speed of the physical CPU
+         */
+        public Long speed;
+        /**
+         * the model name of the physical CPU
+         */
+        public String modelname;
+        /**
+         * the family (number) of the physical CPU
+         */
+        public Long family;
+        /**
+         * the model number of the physical CPU
+         */
+        public Long model;
+        /**
+         * the stepping of the physical CPU
+         */
+        public String stepping;
+        /**
+         * the flags of the physical CPU (a decoded version of the features field)
+         */
+        public String flags;
+        /**
+         * the physical CPU feature bitmap
+         */
+        public String features;
+        /**
+         * the current CPU utilisation
+         */
+        public Double utilisation;
+        /**
+         * additional configuration
+         */
+        public Map<String, String> otherConfig;
+    }
+
+    /**
+     * Get a record containing the current state of the given host_cpu.
+     * @deprecated
+     *
+     * @return all fields from the object
+     */
+   @Deprecated public HostCpu.Record getRecord(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_record";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toHostCpuRecord(result);
+    }
+
+    /**
+     * Get a reference to the host_cpu instance with the specified UUID.
+     * @deprecated
+     *
+     * @param uuid UUID of object to return
+     * @return reference to the object
+     */
+   @Deprecated public static HostCpu getByUuid(Connection c, String uuid) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_by_uuid";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toHostCpu(result);
+    }
+
+    /**
+     * Get the uuid field of the given host_cpu.
+     *
+     * @return value of the field
+     */
+    public String getUuid(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_uuid";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toString(result);
+    }
+
+    /**
+     * Get the host field of the given host_cpu.
+     *
+     * @return value of the field
+     */
+    public Host getHost(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_host";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toHost(result);
+    }
+
+    /**
+     * Get the number field of the given host_cpu.
+     *
+     * @return value of the field
+     */
+    public Long getNumber(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_number";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toLong(result);
+    }
+
+    /**
+     * Get the vendor field of the given host_cpu.
+     *
+     * @return value of the field
+     */
+    public String getVendor(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_vendor";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toString(result);
+    }
+
+    /**
+     * Get the speed field of the given host_cpu.
+     *
+     * @return value of the field
+     */
+    public Long getSpeed(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_speed";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toLong(result);
+    }
+
+    /**
+     * Get the modelname field of the given host_cpu.
+     *
+     * @return value of the field
+     */
+    public String getModelname(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_modelname";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toString(result);
+    }
+
+    /**
+     * Get the family field of the given host_cpu.
+     *
+     * @return value of the field
+     */
+    public Long getFamily(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_family";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toLong(result);
+    }
+
+    /**
+     * Get the model field of the given host_cpu.
+     *
+     * @return value of the field
+     */
+    public Long getModel(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_model";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toLong(result);
+    }
+
+    /**
+     * Get the stepping field of the given host_cpu.
+     *
+     * @return value of the field
+     */
+    public String getStepping(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_stepping";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toString(result);
+    }
+
+    /**
+     * Get the flags field of the given host_cpu.
+     *
+     * @return value of the field
+     */
+    public String getFlags(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_flags";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toString(result);
+    }
+
+    /**
+     * Get the features field of the given host_cpu.
+     *
+     * @return value of the field
+     */
+    public String getFeatures(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_features";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toString(result);
+    }
+
+    /**
+     * Get the utilisation field of the given host_cpu.
+     *
+     * @return value of the field
+     */
+    public Double getUtilisation(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_utilisation";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toDouble(result);
+    }
+
+    /**
+     * Get the other_config field of the given host_cpu.
+     *
+     * @return value of the field
+     */
+    public Map<String, String> getOtherConfig(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMapOfStringString(result);
+    }
+
+    /**
+     * Set the other_config field of the given host_cpu.
+     *
+     * @param otherConfig New value to set
+     */
+    public void setOtherConfig(Connection c, Map<String, String> otherConfig) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.set_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(otherConfig)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Add the given key-value pair to the other_config field of the given host_cpu.
+     *
+     * @param key Key to add
+     * @param value Value to add
+     */
+    public void addToOtherConfig(Connection c, String key, String value) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.add_to_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key), Marshalling.toXMLRPC(value)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Remove the given key and its corresponding value from the other_config field of the given host_cpu.  If the key is not in that Map, then do nothing.
+     *
+     * @param key Key to remove
+     */
+    public void removeFromOtherConfig(Connection c, String key) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.remove_from_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Return a list of all the host_cpus known to the system.
+     * @deprecated
+     *
+     * @return references to all objects
+     */
+   @Deprecated public static Set<HostCpu> getAll(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_all";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toSetOfHostCpu(result);
+    }
+
+    /**
+     * Return a map of host_cpu references to host_cpu records for all host_cpus known to the system.
+     *
+     * @return records of all objects
+     */
+    public static Map<HostCpu, HostCpu.Record> getAllRecords(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_cpu.get_all_records";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMapOfHostCpuHostCpuRecord(result);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d59e669/deps/XenServerJava/src/com/xensource/xenapi/HostCrashdump.java
----------------------------------------------------------------------
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/HostCrashdump.java b/deps/XenServerJava/src/com/xensource/xenapi/HostCrashdump.java
new file mode 100644
index 0000000..b166073
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/HostCrashdump.java
@@ -0,0 +1,412 @@
+/* Copyright (c) Citrix Systems, Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ *   1) Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ * 
+ *   2) Redistributions in binary form must reproduce the above
+ *      copyright notice, this list of conditions and the following
+ *      disclaimer in the documentation and/or other materials
+ *      provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package com.xensource.xenapi;
+
+import com.xensource.xenapi.Types.BadServerResponse;
+import com.xensource.xenapi.Types.VersionException;
+import com.xensource.xenapi.Types.XenAPIException;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.xmlrpc.XmlRpcException;
+
+/**
+ * Represents a host crash dump
+ *
+ * @author Citrix Systems, Inc.
+ */
+public class HostCrashdump extends XenAPIObject {
+
+    /**
+     * The XenAPI reference to this object.
+     */
+    protected final String ref;
+
+    /**
+     * For internal use only.
+     */
+    HostCrashdump(String ref) {
+       this.ref = ref;
+    }
+
+    public String toWireString() {
+       return this.ref;
+    }
+
+    /**
+     * If obj is a HostCrashdump, compares XenAPI references for equality.
+     */
+    @Override
+    public boolean equals(Object obj)
+    {
+        if (obj != null && obj instanceof HostCrashdump)
+        {
+            HostCrashdump other = (HostCrashdump) obj;
+            return other.ref.equals(this.ref);
+        } else
+        {
+            return false;
+        }
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return ref.hashCode();
+    }
+
+    /**
+     * Represents all the fields in a HostCrashdump
+     */
+    public static class Record implements Types.Record {
+        public String toString() {
+            StringWriter writer = new StringWriter();
+            PrintWriter print = new PrintWriter(writer);
+            print.printf("%1$20s: %2$s\n", "uuid", this.uuid);
+            print.printf("%1$20s: %2$s\n", "host", this.host);
+            print.printf("%1$20s: %2$s\n", "timestamp", this.timestamp);
+            print.printf("%1$20s: %2$s\n", "size", this.size);
+            print.printf("%1$20s: %2$s\n", "otherConfig", this.otherConfig);
+            return writer.toString();
+        }
+
+        /**
+         * Convert a host_crashdump.Record to a Map
+         */
+        public Map<String,Object> toMap() {
+            Map<String,Object> map = new HashMap<String,Object>();
+            map.put("uuid", this.uuid == null ? "" : this.uuid);
+            map.put("host", this.host == null ? new Host("OpaqueRef:NULL") : this.host);
+            map.put("timestamp", this.timestamp == null ? new Date(0) : this.timestamp);
+            map.put("size", this.size == null ? 0 : this.size);
+            map.put("other_config", this.otherConfig == null ? new HashMap<String, String>() : this.otherConfig);
+            return map;
+        }
+
+        /**
+         * Unique identifier/object reference
+         */
+        public String uuid;
+        /**
+         * Host the crashdump relates to
+         */
+        public Host host;
+        /**
+         * Time the crash happened
+         */
+        public Date timestamp;
+        /**
+         * Size of the crashdump
+         */
+        public Long size;
+        /**
+         * additional configuration
+         */
+        public Map<String, String> otherConfig;
+    }
+
+    /**
+     * Get a record containing the current state of the given host_crashdump.
+     *
+     * @return all fields from the object
+     */
+    public HostCrashdump.Record getRecord(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_crashdump.get_record";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toHostCrashdumpRecord(result);
+    }
+
+    /**
+     * Get a reference to the host_crashdump instance with the specified UUID.
+     *
+     * @param uuid UUID of object to return
+     * @return reference to the object
+     */
+    public static HostCrashdump getByUuid(Connection c, String uuid) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_crashdump.get_by_uuid";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toHostCrashdump(result);
+    }
+
+    /**
+     * Get the uuid field of the given host_crashdump.
+     *
+     * @return value of the field
+     */
+    public String getUuid(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_crashdump.get_uuid";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toString(result);
+    }
+
+    /**
+     * Get the host field of the given host_crashdump.
+     *
+     * @return value of the field
+     */
+    public Host getHost(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_crashdump.get_host";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toHost(result);
+    }
+
+    /**
+     * Get the timestamp field of the given host_crashdump.
+     *
+     * @return value of the field
+     */
+    public Date getTimestamp(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_crashdump.get_timestamp";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toDate(result);
+    }
+
+    /**
+     * Get the size field of the given host_crashdump.
+     *
+     * @return value of the field
+     */
+    public Long getSize(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_crashdump.get_size";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toLong(result);
+    }
+
+    /**
+     * Get the other_config field of the given host_crashdump.
+     *
+     * @return value of the field
+     */
+    public Map<String, String> getOtherConfig(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_crashdump.get_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMapOfStringString(result);
+    }
+
+    /**
+     * Set the other_config field of the given host_crashdump.
+     *
+     * @param otherConfig New value to set
+     */
+    public void setOtherConfig(Connection c, Map<String, String> otherConfig) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_crashdump.set_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(otherConfig)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Add the given key-value pair to the other_config field of the given host_crashdump.
+     *
+     * @param key Key to add
+     * @param value Value to add
+     */
+    public void addToOtherConfig(Connection c, String key, String value) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_crashdump.add_to_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key), Marshalling.toXMLRPC(value)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Remove the given key and its corresponding value from the other_config field of the given host_crashdump.  If the key is not in that Map, then do nothing.
+     *
+     * @param key Key to remove
+     */
+    public void removeFromOtherConfig(Connection c, String key) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_crashdump.remove_from_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Destroy specified host crash dump, removing it from the disk.
+     *
+     * @return Task
+     */
+    public Task destroyAsync(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Async.host_crashdump.destroy";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+        return Types.toTask(result);
+    }
+
+    /**
+     * Destroy specified host crash dump, removing it from the disk.
+     *
+     */
+    public void destroy(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_crashdump.destroy";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Upload the specified host crash dump to a specified URL
+     *
+     * @param url The URL to upload to
+     * @param options Extra configuration operations
+     * @return Task
+     */
+    public Task uploadAsync(Connection c, String url, Map<String, String> options) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Async.host_crashdump.upload";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(url), Marshalling.toXMLRPC(options)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+        return Types.toTask(result);
+    }
+
+    /**
+     * Upload the specified host crash dump to a specified URL
+     *
+     * @param url The URL to upload to
+     * @param options Extra configuration operations
+     */
+    public void upload(Connection c, String url, Map<String, String> options) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_crashdump.upload";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(url), Marshalling.toXMLRPC(options)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Return a list of all the host_crashdumps known to the system.
+     *
+     * @return references to all objects
+     */
+    public static Set<HostCrashdump> getAll(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_crashdump.get_all";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toSetOfHostCrashdump(result);
+    }
+
+    /**
+     * Return a map of host_crashdump references to host_crashdump records for all host_crashdumps known to the system.
+     *
+     * @return records of all objects
+     */
+    public static Map<HostCrashdump, HostCrashdump.Record> getAllRecords(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_crashdump.get_all_records";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMapOfHostCrashdumpHostCrashdumpRecord(result);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d59e669/deps/XenServerJava/src/com/xensource/xenapi/HostMetrics.java
----------------------------------------------------------------------
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/HostMetrics.java b/deps/XenServerJava/src/com/xensource/xenapi/HostMetrics.java
new file mode 100644
index 0000000..2a682c8
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/HostMetrics.java
@@ -0,0 +1,368 @@
+/* Copyright (c) Citrix Systems, Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ *   1) Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ * 
+ *   2) Redistributions in binary form must reproduce the above
+ *      copyright notice, this list of conditions and the following
+ *      disclaimer in the documentation and/or other materials
+ *      provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package com.xensource.xenapi;
+
+import com.xensource.xenapi.Types.BadServerResponse;
+import com.xensource.xenapi.Types.VersionException;
+import com.xensource.xenapi.Types.XenAPIException;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.xmlrpc.XmlRpcException;
+
+/**
+ * The metrics associated with a host
+ *
+ * @author Citrix Systems, Inc.
+ */
+public class HostMetrics extends XenAPIObject {
+
+    /**
+     * The XenAPI reference to this object.
+     */
+    protected final String ref;
+
+    /**
+     * For internal use only.
+     */
+    HostMetrics(String ref) {
+       this.ref = ref;
+    }
+
+    public String toWireString() {
+       return this.ref;
+    }
+
+    /**
+     * If obj is a HostMetrics, compares XenAPI references for equality.
+     */
+    @Override
+    public boolean equals(Object obj)
+    {
+        if (obj != null && obj instanceof HostMetrics)
+        {
+            HostMetrics other = (HostMetrics) obj;
+            return other.ref.equals(this.ref);
+        } else
+        {
+            return false;
+        }
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return ref.hashCode();
+    }
+
+    /**
+     * Represents all the fields in a HostMetrics
+     */
+    public static class Record implements Types.Record {
+        public String toString() {
+            StringWriter writer = new StringWriter();
+            PrintWriter print = new PrintWriter(writer);
+            print.printf("%1$20s: %2$s\n", "uuid", this.uuid);
+            print.printf("%1$20s: %2$s\n", "memoryTotal", this.memoryTotal);
+            print.printf("%1$20s: %2$s\n", "memoryFree", this.memoryFree);
+            print.printf("%1$20s: %2$s\n", "live", this.live);
+            print.printf("%1$20s: %2$s\n", "lastUpdated", this.lastUpdated);
+            print.printf("%1$20s: %2$s\n", "otherConfig", this.otherConfig);
+            return writer.toString();
+        }
+
+        /**
+         * Convert a host_metrics.Record to a Map
+         */
+        public Map<String,Object> toMap() {
+            Map<String,Object> map = new HashMap<String,Object>();
+            map.put("uuid", this.uuid == null ? "" : this.uuid);
+            map.put("memory_total", this.memoryTotal == null ? 0 : this.memoryTotal);
+            map.put("memory_free", this.memoryFree == null ? 0 : this.memoryFree);
+            map.put("live", this.live == null ? false : this.live);
+            map.put("last_updated", this.lastUpdated == null ? new Date(0) : this.lastUpdated);
+            map.put("other_config", this.otherConfig == null ? new HashMap<String, String>() : this.otherConfig);
+            return map;
+        }
+
+        /**
+         * Unique identifier/object reference
+         */
+        public String uuid;
+        /**
+         * Total host memory (bytes)
+         */
+        public Long memoryTotal;
+        /**
+         * Free host memory (bytes)
+         */
+        public Long memoryFree;
+        /**
+         * Pool master thinks this host is live
+         */
+        public Boolean live;
+        /**
+         * Time at which this information was last updated
+         */
+        public Date lastUpdated;
+        /**
+         * additional configuration
+         */
+        public Map<String, String> otherConfig;
+    }
+
+    /**
+     * Get a record containing the current state of the given host_metrics.
+     *
+     * @return all fields from the object
+     */
+    public HostMetrics.Record getRecord(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_metrics.get_record";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toHostMetricsRecord(result);
+    }
+
+    /**
+     * Get a reference to the host_metrics instance with the specified UUID.
+     *
+     * @param uuid UUID of object to return
+     * @return reference to the object
+     */
+    public static HostMetrics getByUuid(Connection c, String uuid) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_metrics.get_by_uuid";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toHostMetrics(result);
+    }
+
+    /**
+     * Get the uuid field of the given host_metrics.
+     *
+     * @return value of the field
+     */
+    public String getUuid(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_metrics.get_uuid";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toString(result);
+    }
+
+    /**
+     * Get the memory/total field of the given host_metrics.
+     *
+     * @return value of the field
+     */
+    public Long getMemoryTotal(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_metrics.get_memory_total";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toLong(result);
+    }
+
+    /**
+     * Get the memory/free field of the given host_metrics.
+     * @deprecated
+     *
+     * @return value of the field
+     */
+   @Deprecated public Long getMemoryFree(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_metrics.get_memory_free";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toLong(result);
+    }
+
+    /**
+     * Get the live field of the given host_metrics.
+     *
+     * @return value of the field
+     */
+    public Boolean getLive(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_metrics.get_live";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toBoolean(result);
+    }
+
+    /**
+     * Get the last_updated field of the given host_metrics.
+     *
+     * @return value of the field
+     */
+    public Date getLastUpdated(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_metrics.get_last_updated";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toDate(result);
+    }
+
+    /**
+     * Get the other_config field of the given host_metrics.
+     *
+     * @return value of the field
+     */
+    public Map<String, String> getOtherConfig(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_metrics.get_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMapOfStringString(result);
+    }
+
+    /**
+     * Set the other_config field of the given host_metrics.
+     *
+     * @param otherConfig New value to set
+     */
+    public void setOtherConfig(Connection c, Map<String, String> otherConfig) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_metrics.set_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(otherConfig)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Add the given key-value pair to the other_config field of the given host_metrics.
+     *
+     * @param key Key to add
+     * @param value Value to add
+     */
+    public void addToOtherConfig(Connection c, String key, String value) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_metrics.add_to_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key), Marshalling.toXMLRPC(value)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Remove the given key and its corresponding value from the other_config field of the given host_metrics.  If the key is not in that Map, then do nothing.
+     *
+     * @param key Key to remove
+     */
+    public void removeFromOtherConfig(Connection c, String key) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_metrics.remove_from_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Return a list of all the host_metrics instances known to the system.
+     *
+     * @return references to all objects
+     */
+    public static Set<HostMetrics> getAll(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_metrics.get_all";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toSetOfHostMetrics(result);
+    }
+
+    /**
+     * Return a map of host_metrics references to host_metrics records for all host_metrics instances known to the system.
+     *
+     * @return records of all objects
+     */
+    public static Map<HostMetrics, HostMetrics.Record> getAllRecords(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_metrics.get_all_records";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMapOfHostMetricsHostMetricsRecord(result);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d59e669/deps/XenServerJava/src/com/xensource/xenapi/HostPatch.java
----------------------------------------------------------------------
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/HostPatch.java b/deps/XenServerJava/src/com/xensource/xenapi/HostPatch.java
new file mode 100644
index 0000000..b871ed9
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/HostPatch.java
@@ -0,0 +1,547 @@
+/* Copyright (c) Citrix Systems, Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ *   1) Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ * 
+ *   2) Redistributions in binary form must reproduce the above
+ *      copyright notice, this list of conditions and the following
+ *      disclaimer in the documentation and/or other materials
+ *      provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package com.xensource.xenapi;
+
+import com.xensource.xenapi.Types.BadServerResponse;
+import com.xensource.xenapi.Types.VersionException;
+import com.xensource.xenapi.Types.XenAPIException;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.xmlrpc.XmlRpcException;
+
+/**
+ * Represents a patch stored on a server
+ *
+ * @author Citrix Systems, Inc.
+ */
+public class HostPatch extends XenAPIObject {
+
+    /**
+     * The XenAPI reference to this object.
+     */
+    protected final String ref;
+
+    /**
+     * For internal use only.
+     */
+    HostPatch(String ref) {
+       this.ref = ref;
+    }
+
+    public String toWireString() {
+       return this.ref;
+    }
+
+    /**
+     * If obj is a HostPatch, compares XenAPI references for equality.
+     */
+    @Override
+    public boolean equals(Object obj)
+    {
+        if (obj != null && obj instanceof HostPatch)
+        {
+            HostPatch other = (HostPatch) obj;
+            return other.ref.equals(this.ref);
+        } else
+        {
+            return false;
+        }
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return ref.hashCode();
+    }
+
+    /**
+     * Represents all the fields in a HostPatch
+     */
+    public static class Record implements Types.Record {
+        public String toString() {
+            StringWriter writer = new StringWriter();
+            PrintWriter print = new PrintWriter(writer);
+            print.printf("%1$20s: %2$s\n", "uuid", this.uuid);
+            print.printf("%1$20s: %2$s\n", "nameLabel", this.nameLabel);
+            print.printf("%1$20s: %2$s\n", "nameDescription", this.nameDescription);
+            print.printf("%1$20s: %2$s\n", "version", this.version);
+            print.printf("%1$20s: %2$s\n", "host", this.host);
+            print.printf("%1$20s: %2$s\n", "applied", this.applied);
+            print.printf("%1$20s: %2$s\n", "timestampApplied", this.timestampApplied);
+            print.printf("%1$20s: %2$s\n", "size", this.size);
+            print.printf("%1$20s: %2$s\n", "poolPatch", this.poolPatch);
+            print.printf("%1$20s: %2$s\n", "otherConfig", this.otherConfig);
+            return writer.toString();
+        }
+
+        /**
+         * Convert a host_patch.Record to a Map
+         */
+        public Map<String,Object> toMap() {
+            Map<String,Object> map = new HashMap<String,Object>();
+            map.put("uuid", this.uuid == null ? "" : this.uuid);
+            map.put("name_label", this.nameLabel == null ? "" : this.nameLabel);
+            map.put("name_description", this.nameDescription == null ? "" : this.nameDescription);
+            map.put("version", this.version == null ? "" : this.version);
+            map.put("host", this.host == null ? new Host("OpaqueRef:NULL") : this.host);
+            map.put("applied", this.applied == null ? false : this.applied);
+            map.put("timestamp_applied", this.timestampApplied == null ? new Date(0) : this.timestampApplied);
+            map.put("size", this.size == null ? 0 : this.size);
+            map.put("pool_patch", this.poolPatch == null ? new PoolPatch("OpaqueRef:NULL") : this.poolPatch);
+            map.put("other_config", this.otherConfig == null ? new HashMap<String, String>() : this.otherConfig);
+            return map;
+        }
+
+        /**
+         * Unique identifier/object reference
+         */
+        public String uuid;
+        /**
+         * a human-readable name
+         */
+        public String nameLabel;
+        /**
+         * a notes field containg human-readable description
+         */
+        public String nameDescription;
+        /**
+         * Patch version number
+         */
+        public String version;
+        /**
+         * Host the patch relates to
+         */
+        public Host host;
+        /**
+         * True if the patch has been applied
+         */
+        public Boolean applied;
+        /**
+         * Time the patch was applied
+         */
+        public Date timestampApplied;
+        /**
+         * Size of the patch
+         */
+        public Long size;
+        /**
+         * The patch applied
+         */
+        public PoolPatch poolPatch;
+        /**
+         * additional configuration
+         */
+        public Map<String, String> otherConfig;
+    }
+
+    /**
+     * Get a record containing the current state of the given host_patch.
+     *
+     * @return all fields from the object
+     */
+    public HostPatch.Record getRecord(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.get_record";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toHostPatchRecord(result);
+    }
+
+    /**
+     * Get a reference to the host_patch instance with the specified UUID.
+     *
+     * @param uuid UUID of object to return
+     * @return reference to the object
+     */
+    public static HostPatch getByUuid(Connection c, String uuid) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.get_by_uuid";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toHostPatch(result);
+    }
+
+    /**
+     * Get all the host_patch instances with the given label.
+     *
+     * @param label label of object to return
+     * @return references to objects with matching names
+     */
+    public static Set<HostPatch> getByNameLabel(Connection c, String label) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.get_by_name_label";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(label)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toSetOfHostPatch(result);
+    }
+
+    /**
+     * Get the uuid field of the given host_patch.
+     *
+     * @return value of the field
+     */
+    public String getUuid(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.get_uuid";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toString(result);
+    }
+
+    /**
+     * Get the name/label field of the given host_patch.
+     *
+     * @return value of the field
+     */
+    public String getNameLabel(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.get_name_label";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toString(result);
+    }
+
+    /**
+     * Get the name/description field of the given host_patch.
+     *
+     * @return value of the field
+     */
+    public String getNameDescription(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.get_name_description";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toString(result);
+    }
+
+    /**
+     * Get the version field of the given host_patch.
+     *
+     * @return value of the field
+     */
+    public String getVersion(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.get_version";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toString(result);
+    }
+
+    /**
+     * Get the host field of the given host_patch.
+     *
+     * @return value of the field
+     */
+    public Host getHost(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.get_host";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toHost(result);
+    }
+
+    /**
+     * Get the applied field of the given host_patch.
+     *
+     * @return value of the field
+     */
+    public Boolean getApplied(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.get_applied";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toBoolean(result);
+    }
+
+    /**
+     * Get the timestamp_applied field of the given host_patch.
+     *
+     * @return value of the field
+     */
+    public Date getTimestampApplied(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.get_timestamp_applied";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toDate(result);
+    }
+
+    /**
+     * Get the size field of the given host_patch.
+     *
+     * @return value of the field
+     */
+    public Long getSize(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.get_size";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toLong(result);
+    }
+
+    /**
+     * Get the pool_patch field of the given host_patch.
+     *
+     * @return value of the field
+     */
+    public PoolPatch getPoolPatch(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.get_pool_patch";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toPoolPatch(result);
+    }
+
+    /**
+     * Get the other_config field of the given host_patch.
+     *
+     * @return value of the field
+     */
+    public Map<String, String> getOtherConfig(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.get_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMapOfStringString(result);
+    }
+
+    /**
+     * Set the other_config field of the given host_patch.
+     *
+     * @param otherConfig New value to set
+     */
+    public void setOtherConfig(Connection c, Map<String, String> otherConfig) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.set_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(otherConfig)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Add the given key-value pair to the other_config field of the given host_patch.
+     *
+     * @param key Key to add
+     * @param value Value to add
+     */
+    public void addToOtherConfig(Connection c, String key, String value) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.add_to_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key), Marshalling.toXMLRPC(value)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Remove the given key and its corresponding value from the other_config field of the given host_patch.  If the key is not in that Map, then do nothing.
+     *
+     * @param key Key to remove
+     */
+    public void removeFromOtherConfig(Connection c, String key) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.remove_from_other_config";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Destroy the specified host patch, removing it from the disk. This does NOT reverse the patch
+     * @deprecated
+     *
+     * @return Task
+     */
+   @Deprecated public Task destroyAsync(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Async.host_patch.destroy";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+        return Types.toTask(result);
+    }
+
+    /**
+     * Destroy the specified host patch, removing it from the disk. This does NOT reverse the patch
+     * @deprecated
+     *
+     */
+   @Deprecated public void destroy(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.destroy";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Apply the selected patch and return its output
+     * @deprecated
+     *
+     * @return Task
+     */
+   @Deprecated public Task applyAsync(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Async.host_patch.apply";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+        return Types.toTask(result);
+    }
+
+    /**
+     * Apply the selected patch and return its output
+     * @deprecated
+     *
+     * @return the output of the patch application process
+     */
+   @Deprecated public String apply(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.apply";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toString(result);
+    }
+
+    /**
+     * Return a list of all the host_patchs known to the system.
+     *
+     * @return references to all objects
+     */
+    public static Set<HostPatch> getAll(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.get_all";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toSetOfHostPatch(result);
+    }
+
+    /**
+     * Return a map of host_patch references to host_patch records for all host_patchs known to the system.
+     *
+     * @return records of all objects
+     */
+    public static Map<HostPatch, HostPatch.Record> getAllRecords(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "host_patch.get_all_records";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMapOfHostPatchHostPatchRecord(result);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d59e669/deps/XenServerJava/src/com/xensource/xenapi/Marshalling.java
----------------------------------------------------------------------
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Marshalling.java b/deps/XenServerJava/src/com/xensource/xenapi/Marshalling.java
new file mode 100644
index 0000000..2603381
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Marshalling.java
@@ -0,0 +1,76 @@
+/* Copyright (c) Citrix Systems, Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ *   1) Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ * 
+ *   2) Redistributions in binary form must reproduce the above
+ *      copyright notice, this list of conditions and the following
+ *      disclaimer in the documentation and/or other materials
+ *      provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package com.xensource.xenapi;
+
+import java.util.*;
+
+/**
+ * Marshalls Java types onto the wire.
+ * Does not cope with records.  Use individual record.toMap()
+ */
+public final class Marshalling {
+    /**
+     * Converts Integers to Strings
+     * and Sets to Lists recursively.
+     */
+    public static Object toXMLRPC(Object o) {
+        if (o instanceof String ||
+            o instanceof Boolean ||
+            o instanceof Double ||
+            o instanceof Date) {
+            return o;
+	} else if (o instanceof Long) {
+	    return o.toString();
+        } else if (o instanceof Map) {
+            Map<Object, Object> result = new HashMap<Object, Object>();
+            Map m = (Map)o;
+            for (Object k : m.keySet())
+            {
+                result.put(toXMLRPC(k), toXMLRPC(m.get(k)));
+            }
+            return result;
+        } else if (o instanceof Set) {
+            List<Object> result = new ArrayList<Object>();
+            for (Object e : ((Set)o))
+            {
+                result.add(toXMLRPC(e));
+            }
+            return result;
+	} else if (o instanceof XenAPIObject) {
+	    return ((XenAPIObject) o).toWireString();
+	} else if (o instanceof Enum) {
+	    return o.toString();
+	}else if (o == null){
+	    return "";
+        } else {
+		throw new RuntimeException ("=============don't know how to marshall:({[" + o + "]})");
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/7d59e669/deps/XenServerJava/src/com/xensource/xenapi/Message.java
----------------------------------------------------------------------
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Message.java b/deps/XenServerJava/src/com/xensource/xenapi/Message.java
new file mode 100644
index 0000000..d7b5036
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Message.java
@@ -0,0 +1,315 @@
+/* Copyright (c) Citrix Systems, Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ *   1) Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ * 
+ *   2) Redistributions in binary form must reproduce the above
+ *      copyright notice, this list of conditions and the following
+ *      disclaimer in the documentation and/or other materials
+ *      provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package com.xensource.xenapi;
+
+import com.xensource.xenapi.Types.BadServerResponse;
+import com.xensource.xenapi.Types.VersionException;
+import com.xensource.xenapi.Types.XenAPIException;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.xmlrpc.XmlRpcException;
+
+/**
+ * An message for the attention of the administrator
+ *
+ * @author Citrix Systems, Inc.
+ */
+public class Message extends XenAPIObject {
+
+    /**
+     * The XenAPI reference to this object.
+     */
+    protected final String ref;
+
+    /**
+     * For internal use only.
+     */
+    Message(String ref) {
+       this.ref = ref;
+    }
+
+    public String toWireString() {
+       return this.ref;
+    }
+
+    /**
+     * If obj is a Message, compares XenAPI references for equality.
+     */
+    @Override
+    public boolean equals(Object obj)
+    {
+        if (obj != null && obj instanceof Message)
+        {
+            Message other = (Message) obj;
+            return other.ref.equals(this.ref);
+        } else
+        {
+            return false;
+        }
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return ref.hashCode();
+    }
+
+    /**
+     * Represents all the fields in a Message
+     */
+    public static class Record implements Types.Record {
+        public String toString() {
+            StringWriter writer = new StringWriter();
+            PrintWriter print = new PrintWriter(writer);
+            print.printf("%1$20s: %2$s\n", "uuid", this.uuid);
+            print.printf("%1$20s: %2$s\n", "name", this.name);
+            print.printf("%1$20s: %2$s\n", "priority", this.priority);
+            print.printf("%1$20s: %2$s\n", "cls", this.cls);
+            print.printf("%1$20s: %2$s\n", "objUuid", this.objUuid);
+            print.printf("%1$20s: %2$s\n", "timestamp", this.timestamp);
+            print.printf("%1$20s: %2$s\n", "body", this.body);
+            return writer.toString();
+        }
+
+        /**
+         * Convert a message.Record to a Map
+         */
+        public Map<String,Object> toMap() {
+            Map<String,Object> map = new HashMap<String,Object>();
+            map.put("uuid", this.uuid == null ? "" : this.uuid);
+            map.put("name", this.name == null ? "" : this.name);
+            map.put("priority", this.priority == null ? 0 : this.priority);
+            map.put("cls", this.cls == null ? Types.Cls.UNRECOGNIZED : this.cls);
+            map.put("obj_uuid", this.objUuid == null ? "" : this.objUuid);
+            map.put("timestamp", this.timestamp == null ? new Date(0) : this.timestamp);
+            map.put("body", this.body == null ? "" : this.body);
+            return map;
+        }
+
+        /**
+         * Unique identifier/object reference
+         */
+        public String uuid;
+        /**
+         * The name of the message
+         */
+        public String name;
+        /**
+         * The message priority, 0 being low priority
+         */
+        public Long priority;
+        /**
+         * The class of the object this message is associated with
+         */
+        public Types.Cls cls;
+        /**
+         * The uuid of the object this message is associated with
+         */
+        public String objUuid;
+        /**
+         * The time at which the message was created
+         */
+        public Date timestamp;
+        /**
+         * The body of the message
+         */
+        public String body;
+    }
+
+    /**
+     * 
+     *
+     * @param name The name of the message
+     * @param priority The priority of the message
+     * @param cls The class of object this message is associated with
+     * @param objUuid The uuid of the object this message is associated with
+     * @param body The body of the message
+     * @return The reference of the created message
+     */
+    public static Message create(Connection c, String name, Long priority, Types.Cls cls, String objUuid, String body) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "message.create";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(priority), Marshalling.toXMLRPC(cls), Marshalling.toXMLRPC(objUuid), Marshalling.toXMLRPC(body)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMessage(result);
+    }
+
+    /**
+     * 
+     *
+     */
+    public void destroy(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "message.destroy";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * 
+     *
+     * @param cls The class of object
+     * @param objUuid The uuid of the object
+     * @param since The cutoff time
+     * @return The relevant messages
+     */
+    public static Map<Message, Message.Record> get(Connection c, Types.Cls cls, String objUuid, Date since) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "message.get";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(cls), Marshalling.toXMLRPC(objUuid), Marshalling.toXMLRPC(since)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMapOfMessageMessageRecord(result);
+    }
+
+    /**
+     * 
+     *
+     * @return The references to the messages
+     */
+    public static Set<Message> getAll(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "message.get_all";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toSetOfMessage(result);
+    }
+
+    /**
+     * 
+     *
+     * @param since The cutoff time
+     * @return The relevant messages
+     */
+    public static Map<Message, Message.Record> getSince(Connection c, Date since) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "message.get_since";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(since)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMapOfMessageMessageRecord(result);
+    }
+
+    /**
+     * 
+     *
+     * @return The message record
+     */
+    public Message.Record getRecord(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "message.get_record";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMessageRecord(result);
+    }
+
+    /**
+     * 
+     *
+     * @param uuid The uuid of the message
+     * @return The message reference
+     */
+    public static Message getByUuid(Connection c, String uuid) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "message.get_by_uuid";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMessage(result);
+    }
+
+    /**
+     * 
+     *
+     * @return The messages
+     */
+    public static Map<Message, Message.Record> getAllRecords(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "message.get_all_records";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMapOfMessageMessageRecord(result);
+    }
+
+    /**
+     * 
+     *
+     * @param expr The expression to match (not currently used)
+     * @return The messages
+     */
+    public static Map<Message, Message.Record> getAllRecordsWhere(Connection c, String expr) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "message.get_all_records_where";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(expr)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMapOfMessageMessageRecord(result);
+    }
+
+}