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/12/13 15:45:32 UTC

[2/36] git commit: CLOUDSTACK-594: Updating the XenServer java bindings used in cloudstack - part2

CLOUDSTACK-594: Updating the XenServer java bindings used in cloudstack - part2

Updating the xenserver java bindings used in cloudstack. This is part 2 of the change and it introduces the latest java bindings published with XenServer 6.1.

1. https://reviews.apache.org/r/8566/ - removes the old bindings.
2. https://reviews.apache.org/r/8567/ - introduces the latest bindings.
3. https://reviews.apache.org/r/8568/ - adds the customization's made to them for cloudstack.

Signed-off-by: Chip Childers <ch...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/2ce2645c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/2ce2645c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/2ce2645c

Branch: refs/heads/master
Commit: 2ce2645cd1b1897f79c2ec7f33ece11ca11d8bff
Parents: 1e74501
Author: Devdeep Singh <de...@citrix.com>
Authored: Thu Dec 13 09:41:49 2012 -0500
Committer: Chip Childers <ch...@gmail.com>
Committed: Thu Dec 13 09:41:49 2012 -0500

----------------------------------------------------------------------
 .../src/com/xensource/xenapi/APIVersion.java       |  118 +
 .../src/com/xensource/xenapi/Auth.java             |  114 +
 .../src/com/xensource/xenapi/Blob.java             |  446 +
 .../src/com/xensource/xenapi/Bond.java             |  564 +
 .../src/com/xensource/xenapi/Connection.java       |  380 +
 .../src/com/xensource/xenapi/Console.java          |  419 +
 .../src/com/xensource/xenapi/Crashdump.java        |  358 +
 .../src/com/xensource/xenapi/DRTask.java           |  303 +
 .../src/com/xensource/xenapi/DataSource.java       |  164 +
 .../src/com/xensource/xenapi/Event.java            |  304 +
 .../src/com/xensource/xenapi/GPUGroup.java         |  445 +
 .../src/com/xensource/xenapi/Host.java             | 2919 ++++
 .../src/com/xensource/xenapi/HostCpu.java          |  536 +
 .../src/com/xensource/xenapi/HostCrashdump.java    |  417 +
 .../src/com/xensource/xenapi/HostMetrics.java      |  373 +
 .../src/com/xensource/xenapi/HostPatch.java        |  552 +
 .../src/com/xensource/xenapi/Marshalling.java      |   76 +
 .../src/com/xensource/xenapi/Message.java          |  320 +
 .../src/com/xensource/xenapi/Network.java          |  791 +
 .../src/com/xensource/xenapi/PBD.java              |  542 +
 .../src/com/xensource/xenapi/PCI.java              |  418 +
 .../src/com/xensource/xenapi/PGPU.java             |  349 +
 .../src/com/xensource/xenapi/PIF.java              | 1374 ++
 .../src/com/xensource/xenapi/PIFMetrics.java       |  533 +
 .../src/com/xensource/xenapi/Pool.java             | 2324 +++
 .../src/com/xensource/xenapi/PoolPatch.java        |  693 +
 .../src/com/xensource/xenapi/Role.java             |  364 +
 .../XenServerJava/src/com/xensource/xenapi/SM.java |  528 +
 .../XenServerJava/src/com/xensource/xenapi/SR.java | 1639 ++
 .../src/com/xensource/xenapi/Secret.java           |  389 +
 .../src/com/xensource/xenapi/Session.java          |  675 +
 .../src/com/xensource/xenapi/Subject.java          |  396 +
 .../src/com/xensource/xenapi/Task.java             |  688 +
 .../src/com/xensource/xenapi/Tunnel.java           |  474 +
 .../src/com/xensource/xenapi/Types.java            |13057 +++++++++++++++
 .../src/com/xensource/xenapi/User.java             |  384 +
 .../src/com/xensource/xenapi/VBD.java              | 1161 ++
 .../src/com/xensource/xenapi/VBDMetrics.java       |  349 +
 .../src/com/xensource/xenapi/VDI.java              | 2100 +++
 .../src/com/xensource/xenapi/VGPU.java             |  446 +
 .../src/com/xensource/xenapi/VIF.java              | 1186 ++
 .../src/com/xensource/xenapi/VIFMetrics.java       |  349 +
 .../src/com/xensource/xenapi/VLAN.java             |  421 +
 .../XenServerJava/src/com/xensource/xenapi/VM.java | 4891 ++++++
 .../src/com/xensource/xenapi/VMAppliance.java      |  655 +
 .../src/com/xensource/xenapi/VMGuestMetrics.java   |  487 +
 .../src/com/xensource/xenapi/VMMetrics.java        |  510 +
 .../src/com/xensource/xenapi/VMPP.java             | 1158 ++
 .../src/com/xensource/xenapi/VTPM.java             |  290 +
 .../src/com/xensource/xenapi/XenAPIObject.java     |   35 +
 50 files changed, 48464 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2ce2645c/deps/XenServerJava/src/com/xensource/xenapi/APIVersion.java
----------------------------------------------------------------------
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/APIVersion.java b/deps/XenServerJava/src/com/xensource/xenapi/APIVersion.java
new file mode 100644
index 0000000..174cf5a
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/APIVersion.java
@@ -0,0 +1,118 @@
+/* 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;
+
+public enum APIVersion
+{
+    API_1_1, API_1_2, API_1_3, API_1_4, API_1_5, API_1_6, API_1_7, API_1_8, API_1_9, API_1_10, UNKNOWN;
+
+    public static APIVersion latest()
+    {
+        return API_1_10;
+    }
+
+    public static APIVersion fromMajorMinor(long major, long minor)
+    {
+        if (major == 1 && minor == 10)
+        {
+            return API_1_10;
+        }
+        else if (major == 1 && minor == 9)
+        {
+            return API_1_9;
+        }
+        else if (major == 1 && minor == 8)
+        {
+            return API_1_8;
+        }
+        else if (major == 1 && minor == 7)
+        {
+            return API_1_7;
+        }
+        else if (major == 1 && minor == 6)
+        {
+            return API_1_6;
+        }
+        else if (major == 1 && minor == 5)
+        {
+            return API_1_5;
+        }
+        else if (major == 1 && minor == 4)
+        {
+            return API_1_4;
+        }
+        else if (major == 1 && minor == 3)
+        {
+            return API_1_3;
+        }
+        else if (major == 1 && minor == 2)
+        {
+            return API_1_2;
+        }
+        else if (major == 1 && minor == 1)
+        {
+            return API_1_1;
+        }
+        else
+        {
+            return UNKNOWN;
+        }
+    }
+
+    @Override
+    public String toString()
+    {
+        switch (this)
+        {
+        case API_1_1:
+            return "1.1";
+        case API_1_2:
+            return "1.2";
+        case API_1_3:
+            return "1.3";
+        case API_1_4:
+            return "1.4";
+        case API_1_5:
+            return "1.5";
+        case API_1_6:
+            return "1.6";
+        case API_1_7:
+            return "1.7";
+        case API_1_8:
+            return "1.8";
+        case API_1_9:
+            return "1.9";
+        case API_1_10:
+            return "1.10";
+        default:
+            return "Unknown";
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2ce2645c/deps/XenServerJava/src/com/xensource/xenapi/Auth.java
----------------------------------------------------------------------
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Auth.java b/deps/XenServerJava/src/com/xensource/xenapi/Auth.java
new file mode 100644
index 0000000..fd84390
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Auth.java
@@ -0,0 +1,114 @@
+/*
+ * 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;
+
+/**
+ * Management of remote authentication services
+ *
+ * @author Citrix Systems, Inc.
+ */
+public class Auth extends XenAPIObject {
+
+
+    public String toWireString() {
+        return null;
+    }
+
+    /**
+     * This call queries the external directory service to obtain the subject_identifier as a string from the human-readable subject_name
+     *
+     * @param subjectName The human-readable subject_name, such as a username or a groupname
+     * @return the subject_identifier obtained from the external directory service
+     */
+    public static String getSubjectIdentifier(Connection c, String subjectName) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "auth.get_subject_identifier";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(subjectName)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toString(result);
+    }
+
+    /**
+     * This call queries the external directory service to obtain the user information (e.g. username, organization etc) from the specified subject_identifier
+     *
+     * @param subjectIdentifier A string containing the subject_identifier, unique in the external directory service
+     * @return key-value pairs containing at least a key called subject_name
+     */
+    public static Map<String, String> getSubjectInformationFromIdentifier(Connection c, String subjectIdentifier) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "auth.get_subject_information_from_identifier";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(subjectIdentifier)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toMapOfStringString(result);
+    }
+
+    /**
+     * This calls queries the external directory service to obtain the transitively-closed set of groups that the the subject_identifier is member of.
+     *
+     * @param subjectIdentifier A string containing the subject_identifier, unique in the external directory service
+     * @return set of subject_identifiers that provides the group membership of subject_identifier passed as argument, it contains, recursively, all groups a subject_identifier is member of.
+     */
+    public static Set<String> getGroupMembership(Connection c, String subjectIdentifier) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "auth.get_group_membership";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(subjectIdentifier)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toSetOfString(result);
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2ce2645c/deps/XenServerJava/src/com/xensource/xenapi/Blob.java
----------------------------------------------------------------------
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Blob.java b/deps/XenServerJava/src/com/xensource/xenapi/Blob.java
new file mode 100644
index 0000000..eeff12e
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Blob.java
@@ -0,0 +1,446 @@
+/*
+ * 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 placeholder for a binary blob
+ *
+ * @author Citrix Systems, Inc.
+ */
+public class Blob extends XenAPIObject {
+
+    /**
+     * The XenAPI reference (OpaqueRef) to this object.
+     */
+    protected final String ref;
+
+    /**
+     * For internal use only.
+     */
+    Blob(String ref) {
+       this.ref = ref;
+    }
+
+    /**
+     * @return The XenAPI reference (OpaqueRef) to this object.
+     */
+    public String toWireString() {
+       return this.ref;
+    }
+
+    /**
+     * If obj is a Blob, compares XenAPI references for equality.
+     */
+    @Override
+    public boolean equals(Object obj)
+    {
+        if (obj != null && obj instanceof Blob)
+        {
+            Blob other = (Blob) obj;
+            return other.ref.equals(this.ref);
+        } else
+        {
+            return false;
+        }
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return ref.hashCode();
+    }
+
+    /**
+     * Represents all the fields in a Blob
+     */
+    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", "size", this.size);
+            print.printf("%1$20s: %2$s\n", "_public", this._public);
+            print.printf("%1$20s: %2$s\n", "lastUpdated", this.lastUpdated);
+            print.printf("%1$20s: %2$s\n", "mimeType", this.mimeType);
+            return writer.toString();
+        }
+
+        /**
+         * Convert a blob.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("size", this.size == null ? 0 : this.size);
+            map.put("public", this._public == null ? false : this._public);
+            map.put("last_updated", this.lastUpdated == null ? new Date(0) : this.lastUpdated);
+            map.put("mime_type", this.mimeType == null ? "" : this.mimeType);
+            return map;
+        }
+
+        /**
+         * Unique identifier/object reference
+         */
+        public String uuid;
+        /**
+         * a human-readable name
+         */
+        public String nameLabel;
+        /**
+         * a notes field containing human-readable description
+         */
+        public String nameDescription;
+        /**
+         * Size of the binary data, in bytes
+         */
+        public Long size;
+        /**
+         * True if the blob is publicly accessible
+         */
+        public Boolean _public;
+        /**
+         * Time at which the data in the blob was last updated
+         */
+        public Date lastUpdated;
+        /**
+         * The mime type associated with this object. Defaults to 'application/octet-stream' if the empty string is supplied
+         */
+        public String mimeType;
+    }
+
+    /**
+     * Get a record containing the current state of the given blob.
+     *
+     * @return all fields from the object
+     */
+    public Blob.Record getRecord(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.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.toBlobRecord(result);
+    }
+
+    /**
+     * Get a reference to the blob instance with the specified UUID.
+     *
+     * @param uuid UUID of object to return
+     * @return reference to the object
+     */
+    public static Blob getByUuid(Connection c, String uuid) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.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.toBlob(result);
+    }
+
+    /**
+     * Get all the blob instances with the given label.
+     *
+     * @param label label of object to return
+     * @return references to objects with matching names
+     */
+    public static Set<Blob> getByNameLabel(Connection c, String label) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.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.toSetOfBlob(result);
+    }
+
+    /**
+     * Get the uuid field of the given blob.
+     *
+     * @return value of the field
+     */
+    public String getUuid(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.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 blob.
+     *
+     * @return value of the field
+     */
+    public String getNameLabel(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.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 blob.
+     *
+     * @return value of the field
+     */
+    public String getNameDescription(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.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 size field of the given blob.
+     *
+     * @return value of the field
+     */
+    public Long getSize(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.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 public field of the given blob.
+     *
+     * @return value of the field
+     */
+    public Boolean getPublic(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.get_public";
+        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 blob.
+     *
+     * @return value of the field
+     */
+    public Date getLastUpdated(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.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 mime_type field of the given blob.
+     *
+     * @return value of the field
+     */
+    public String getMimeType(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.get_mime_type";
+        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);
+    }
+
+    /**
+     * Set the name/label field of the given blob.
+     *
+     * @param label New value to set
+     */
+    public void setNameLabel(Connection c, String label) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.set_name_label";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(label)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Set the name/description field of the given blob.
+     *
+     * @param description New value to set
+     */
+    public void setNameDescription(Connection c, String description) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.set_name_description";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(description)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Set the public field of the given blob.
+     *
+     * @param _public New value to set
+     */
+    public void setPublic(Connection c, Boolean _public) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.set_public";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(_public)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Create a placeholder for a binary blob
+     *
+     * @param mimeType The mime-type of the blob. Defaults to 'application/octet-stream' if the empty string is supplied
+     * @param _public True if the blob should be publicly available
+     * @return The reference to the created blob
+     */
+    public static Blob create(Connection c, String mimeType, Boolean _public) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.create";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(mimeType), Marshalling.toXMLRPC(_public)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toBlob(result);
+    }
+
+    /**
+     *
+     *
+     */
+    public void destroy(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.destroy";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Return a list of all the blobs known to the system.
+     *
+     * @return references to all objects
+     */
+    public static Set<Blob> getAll(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.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.toSetOfBlob(result);
+    }
+
+    /**
+     * Return a map of blob references to blob records for all blobs known to the system.
+     *
+     * @return records of all objects
+     */
+    public static Map<Blob, Blob.Record> getAllRecords(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "blob.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.toMapOfBlobBlobRecord(result);
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2ce2645c/deps/XenServerJava/src/com/xensource/xenapi/Bond.java
----------------------------------------------------------------------
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Bond.java b/deps/XenServerJava/src/com/xensource/xenapi/Bond.java
new file mode 100644
index 0000000..d9d3045
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Bond.java
@@ -0,0 +1,564 @@
+/*
+ * 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;
+
+/**
+ *
+ *
+ * @author Citrix Systems, Inc.
+ */
+public class Bond extends XenAPIObject {
+
+    /**
+     * The XenAPI reference (OpaqueRef) to this object.
+     */
+    protected final String ref;
+
+    /**
+     * For internal use only.
+     */
+    Bond(String ref) {
+       this.ref = ref;
+    }
+
+    /**
+     * @return The XenAPI reference (OpaqueRef) to this object.
+     */
+    public String toWireString() {
+       return this.ref;
+    }
+
+    /**
+     * If obj is a Bond, compares XenAPI references for equality.
+     */
+    @Override
+    public boolean equals(Object obj)
+    {
+        if (obj != null && obj instanceof Bond)
+        {
+            Bond other = (Bond) obj;
+            return other.ref.equals(this.ref);
+        } else
+        {
+            return false;
+        }
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return ref.hashCode();
+    }
+
+    /**
+     * Represents all the fields in a Bond
+     */
+    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", "master", this.master);
+            print.printf("%1$20s: %2$s\n", "slaves", this.slaves);
+            print.printf("%1$20s: %2$s\n", "otherConfig", this.otherConfig);
+            print.printf("%1$20s: %2$s\n", "primarySlave", this.primarySlave);
+            print.printf("%1$20s: %2$s\n", "mode", this.mode);
+            print.printf("%1$20s: %2$s\n", "properties", this.properties);
+            print.printf("%1$20s: %2$s\n", "linksUp", this.linksUp);
+            return writer.toString();
+        }
+
+        /**
+         * Convert a Bond.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("master", this.master == null ? new PIF("OpaqueRef:NULL") : this.master);
+            map.put("slaves", this.slaves == null ? new LinkedHashSet<PIF>() : this.slaves);
+            map.put("other_config", this.otherConfig == null ? new HashMap<String, String>() : this.otherConfig);
+            map.put("primary_slave", this.primarySlave == null ? new PIF("OpaqueRef:NULL") : this.primarySlave);
+            map.put("mode", this.mode == null ? Types.BondMode.UNRECOGNIZED : this.mode);
+            map.put("properties", this.properties == null ? new HashMap<String, String>() : this.properties);
+            map.put("links_up", this.linksUp == null ? 0 : this.linksUp);
+            return map;
+        }
+
+        /**
+         * Unique identifier/object reference
+         */
+        public String uuid;
+        /**
+         * The bonded interface
+         */
+        public PIF master;
+        /**
+         * The interfaces which are part of this bond
+         */
+        public Set<PIF> slaves;
+        /**
+         * additional configuration
+         */
+        public Map<String, String> otherConfig;
+        /**
+         * The 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
+         */
+        public PIF primarySlave;
+        /**
+         * The algorithm used to distribute traffic among the bonded NICs
+         */
+        public Types.BondMode mode;
+        /**
+         * Additional configuration properties specific to the bond mode.
+         */
+        public Map<String, String> properties;
+        /**
+         * Number of links up in this bond
+         */
+        public Long linksUp;
+    }
+
+    /**
+     * Get a record containing the current state of the given Bond.
+     *
+     * @return all fields from the object
+     */
+    public Bond.Record getRecord(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.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.toBondRecord(result);
+    }
+
+    /**
+     * Get a reference to the Bond instance with the specified UUID.
+     *
+     * @param uuid UUID of object to return
+     * @return reference to the object
+     */
+    public static Bond getByUuid(Connection c, String uuid) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.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.toBond(result);
+    }
+
+    /**
+     * Get the uuid field of the given Bond.
+     *
+     * @return value of the field
+     */
+    public String getUuid(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.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 master field of the given Bond.
+     *
+     * @return value of the field
+     */
+    public PIF getMaster(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.get_master";
+        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.toPIF(result);
+    }
+
+    /**
+     * Get the slaves field of the given Bond.
+     *
+     * @return value of the field
+     */
+    public Set<PIF> getSlaves(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.get_slaves";
+        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.toSetOfPIF(result);
+    }
+
+    /**
+     * Get the other_config field of the given Bond.
+     *
+     * @return value of the field
+     */
+    public Map<String, String> getOtherConfig(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.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);
+    }
+
+    /**
+     * Get the primary_slave field of the given Bond.
+     *
+     * @return value of the field
+     */
+    public PIF getPrimarySlave(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.get_primary_slave";
+        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.toPIF(result);
+    }
+
+    /**
+     * Get the mode field of the given Bond.
+     *
+     * @return value of the field
+     */
+    public Types.BondMode getMode(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.get_mode";
+        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.toBondMode(result);
+    }
+
+    /**
+     * Get the properties field of the given Bond.
+     *
+     * @return value of the field
+     */
+    public Map<String, String> getProperties(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.get_properties";
+        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);
+    }
+
+    /**
+     * Get the links_up field of the given Bond.
+     *
+     * @return value of the field
+     */
+    public Long getLinksUp(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.get_links_up";
+        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);
+    }
+
+    /**
+     * Set the other_config field of the given Bond.
+     *
+     * @param otherConfig New value to set
+     */
+    public void setOtherConfig(Connection c, Map<String, String> otherConfig) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.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 Bond.
+     *
+     * @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 = "Bond.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 Bond.  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 = "Bond.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;
+    }
+
+    /**
+     * Create an interface bond
+     *
+     * @param network Network to add the bonded PIF to
+     * @param members PIFs to add to this bond
+     * @param MAC The MAC address to use on the bond itself. If this parameter is the empty string then the bond will inherit its MAC address from the primary slave.
+     * @param mode Bonding mode to use for the new bond
+     * @param properties Additional configuration parameters specific to the bond mode
+     * @return Task
+     */
+    public static Task createAsync(Connection c, Network network, Set<PIF> members, String MAC, Types.BondMode mode, Map<String, String> properties) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Async.Bond.create";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(network), Marshalling.toXMLRPC(members), Marshalling.toXMLRPC(MAC), Marshalling.toXMLRPC(mode), Marshalling.toXMLRPC(properties)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+        return Types.toTask(result);
+    }
+
+    /**
+     * Create an interface bond
+     *
+     * @param network Network to add the bonded PIF to
+     * @param members PIFs to add to this bond
+     * @param MAC The MAC address to use on the bond itself. If this parameter is the empty string then the bond will inherit its MAC address from the primary slave.
+     * @param mode Bonding mode to use for the new bond
+     * @param properties Additional configuration parameters specific to the bond mode
+     * @return The reference of the created Bond object
+     */
+    public static Bond create(Connection c, Network network, Set<PIF> members, String MAC, Types.BondMode mode, Map<String, String> properties) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.create";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(network), Marshalling.toXMLRPC(members), Marshalling.toXMLRPC(MAC), Marshalling.toXMLRPC(mode), Marshalling.toXMLRPC(properties)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toBond(result);
+    }
+
+    /**
+     * Destroy an interface bond
+     *
+     * @return Task
+     */
+    public Task destroyAsync(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Async.Bond.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 an interface bond
+     *
+     */
+    public void destroy(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.destroy";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Change the bond mode
+     *
+     * @param value The new bond mode
+     * @return Task
+     */
+    public Task setModeAsync(Connection c, Types.BondMode value) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Async.Bond.set_mode";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+        return Types.toTask(result);
+    }
+
+    /**
+     * Change the bond mode
+     *
+     * @param value The new bond mode
+     */
+    public void setMode(Connection c, Types.BondMode value) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.set_mode";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Set the value of a property of the bond
+     *
+     * @param name The property name
+     * @param value The property value
+     * @return Task
+     */
+    public Task setPropertyAsync(Connection c, String name, String value) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Async.Bond.set_property";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(value)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+        return Types.toTask(result);
+    }
+
+    /**
+     * Set the value of a property of the bond
+     *
+     * @param name The property name
+     * @param value The property value
+     */
+    public void setProperty(Connection c, String name, String value) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.set_property";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(value)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Return a list of all the Bonds known to the system.
+     *
+     * @return references to all objects
+     */
+    public static Set<Bond> getAll(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.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.toSetOfBond(result);
+    }
+
+    /**
+     * Return a map of Bond references to Bond records for all Bonds known to the system.
+     *
+     * @return records of all objects
+     */
+    public static Map<Bond, Bond.Record> getAllRecords(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Bond.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.toMapOfBondBondRecord(result);
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2ce2645c/deps/XenServerJava/src/com/xensource/xenapi/Connection.java
----------------------------------------------------------------------
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Connection.java b/deps/XenServerJava/src/com/xensource/xenapi/Connection.java
new file mode 100644
index 0000000..805ddd0
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Connection.java
@@ -0,0 +1,380 @@
+/* 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.net.URL;
+import java.util.Map;
+import java.util.TimeZone;
+
+import org.apache.xmlrpc.XmlRpcException;
+import org.apache.xmlrpc.client.XmlRpcClient;
+import org.apache.xmlrpc.client.XmlRpcClientConfig;
+import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
+import org.apache.xmlrpc.client.XmlRpcHttpClientConfig;
+
+import com.xensource.xenapi.Types.BadServerResponse;
+import com.xensource.xenapi.Types.SessionAuthenticationFailed;
+import com.xensource.xenapi.Types.XenAPIException;
+
+/**
+ * Represents a connection to a XenServer. Creating a new instance of this class initialises a new XmlRpcClient that is
+ * then used by all method calls: each method call in xenapi takes a Connection as a parameter, composes an XMLRPC
+ * method call, and dispatches it on the Connection's client via the dispatch method.
+ */
+public class Connection
+{
+    /**
+     * The version of the bindings that this class belongs to.
+     */
+    public static final String BINDINGS_VERSION = "6.1.0-1";
+
+    /**
+     * true if the connection is to the Rio edition of XenServer. Certain function calls are not allowed.
+     *
+     * @deprecated Use getAPIVersion() instead.
+     */
+    @Deprecated
+    public Boolean rioConnection = false;
+
+    private APIVersion apiVersion;
+
+    /**
+     * Updated when Session.login_with_password() is called.
+     */
+    public APIVersion getAPIVersion()
+    {
+        return apiVersion;
+    }
+
+    /**
+     * The opaque reference to the session used by this connection
+     */
+    private String sessionReference;
+
+    /**
+     * As seen by the xmlrpc library. From our point of view it's a server.
+     */
+    private final XmlRpcClient client;
+
+    private final boolean deprecatedConstructorUsed;
+
+    /**
+     * Creates a connection to a particular server using a given username and password. This object can then be passed
+     * in to any other API calls.
+     *
+     * This constructor calls Session.loginWithPassword, passing itself as the first parameter.
+     *
+     * When this constructor is used, a call to dispose() (also called in the Connection's finalizer) will attempt a
+     * Session.logout on this connection.
+     *
+     * @deprecated Use a constructor that takes a URL as the first parameter instead.
+     */
+    @Deprecated
+    public Connection(String client, String username, String password) throws java.net.MalformedURLException,
+        XmlRpcException, BadServerResponse, SessionAuthenticationFailed, XenAPIException
+    {
+        deprecatedConstructorUsed = true;
+
+        // To login normally we call login_with_password(username, password, "1.X").  On rio this call fails and we
+        // should use login_with_password(username,password) instead, and note that we are talking to a rio host so that we
+        // can refuse to make certain miami-specific calls
+        final String ApiVersion = APIVersion.latest().toString();
+        this.client = getClientFromURL(new URL(client));
+        try
+        {
+            //first try to login the modern way
+            this.sessionReference = loginWithPassword(this.client, username, password, ApiVersion);
+        } catch (BadServerResponse e)
+        {
+            //oops, something went wrong
+            String[] errDesc = e.errorDescription;
+            //was the problem that the host was running rio? If so it will have complained that it got three parameters
+            //instead of two. Let us carefully verify the details of this complaint
+            if (0 == errDesc[0].compareTo("MESSAGE_PARAMETER_COUNT_MISMATCH")
+                    && 0 == errDesc[1].compareTo("session.login_with_password")
+                    && 0 == errDesc[2].compareTo("2")
+                    && 0 == errDesc[3].compareTo("3"))
+            {
+                //and if so, we can have another go, using the older login method, and see how that goes.
+                this.sessionReference = loginWithPassword(this.client, username, password);
+                //success!. Note that we are talking to an old host on this connection
+                this.rioConnection = true;
+            } else
+            {
+                //Hmm... Can't solve this here. Let upstairs know about the problem.
+                throw e;
+            }
+        }
+
+        try
+        {
+            setAPIVersion(new Session(sessionReference));
+        }
+        catch (XenAPIException exn)
+        {
+            dispose();
+            throw exn;
+        }
+        catch (XmlRpcException exn)
+        {
+            dispose();
+            throw exn;
+        }
+    }
+
+    /**
+     * Creates a connection to a particular server using a given username and password. This object can then be passed
+     * in to any other API calls.
+     *
+     * Note this constructor does NOT call Session.loginWithPassword; the programmer is responsible for calling it,
+     * passing the Connection as a parameter. No attempt to connect to the server is made until login is called.
+     *
+     * When this constructor is used, a call to dispose() will do nothing. The programmer is responsible for manually
+     * logging out the Session.
+     */
+    public Connection(URL url)
+    {
+        deprecatedConstructorUsed = false;
+
+        this.client = getClientFromURL(url);
+    }
+
+    /**
+     * Creates a connection to a particular server using a given username and password. This object can then be passed
+     * in to any other API calls.
+     *
+     * The additional sessionReference parameter must be a reference to a logged-in Session. Any method calls on this
+     * Connection will use it. This constructor does not call Session.loginWithPassword, and dispose() on the resulting
+     * Connection object does not call Session.logout. The programmer is responsible for ensuring the Session is logged
+     * in and out correctly.
+     */
+    public Connection(URL url, String sessionReference)
+    {
+        deprecatedConstructorUsed = false;
+
+        this.client = getClientFromURL(url);
+        this.sessionReference = sessionReference;
+    }
+
+    protected void finalize() throws Throwable
+    {
+        dispose();
+        super.finalize();
+    }
+
+    /**
+     * Nothrow guarantee.
+     */
+    public void dispose()
+    {
+        if (!deprecatedConstructorUsed)
+        {
+            // We only need to do the Session.logout if they used the old deprecated constructor.
+            return;
+        }
+
+        try
+        {
+            if (sessionReference != null)
+            {
+                String method_call = "session.logout";
+                Object[] method_params = { Marshalling.toXMLRPC(this.sessionReference) };
+                client.execute(method_call, method_params);
+                sessionReference = null;
+            }
+        }
+        catch (XmlRpcException exn)
+        {
+        }
+    }
+
+    /**
+     * @deprecated The programmer is now responsible for calling login/logout themselves.
+     */
+    @Deprecated
+    private static String loginWithPassword(XmlRpcClient client, String username, String password)
+            throws BadServerResponse, XmlRpcException, SessionAuthenticationFailed
+    {
+        String method_call = "session.login_with_password";
+        Object[] method_params = { Marshalling.toXMLRPC(username), Marshalling.toXMLRPC(password) };
+        Map response = (Map) client.execute(method_call, method_params);
+        if (response.get("Status").equals("Success"))
+        {
+            return (String) response.get("Value");
+        } else if (response.get("Status").equals("Failure"))
+        {
+            Object[] error = (Object[]) response.get("ErrorDescription");
+            if (error[0].equals("SESSION_AUTHENTICATION_FAILED"))
+            {
+                throw new SessionAuthenticationFailed();
+            }
+        }
+        throw new BadServerResponse(response);
+    }
+
+    /**
+     * @deprecated The programmer is now responsible for calling login/logout themselves.
+     */
+    @Deprecated
+    private static String loginWithPassword(XmlRpcClient client, String username, String password, String ApiVersion)
+            throws BadServerResponse, XmlRpcException, SessionAuthenticationFailed
+    {
+        String method_call = "session.login_with_password";
+        Object[] method_params = { Marshalling.toXMLRPC(username), Marshalling.toXMLRPC(password),
+                Marshalling.toXMLRPC(ApiVersion) };
+        Map response = (Map) client.execute(method_call, method_params);
+        if (response.get("Status").equals("Success"))
+        {
+            return (String) response.get("Value");
+        } else if (response.get("Status").equals("Failure"))
+        {
+            Object[] error = (Object[]) response.get("ErrorDescription");
+            if (error[0].equals("SESSION_AUTHENTICATION_FAILED"))
+            {
+                throw new SessionAuthenticationFailed();
+            }
+        }
+        throw new BadServerResponse(response);
+    }
+
+    private XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
+
+    public XmlRpcClientConfigImpl getConfig()
+    {
+	return config;
+    }
+    private XmlRpcClient getClientFromURL(URL url)
+    {
+        config.setTimeZone(TimeZone.getTimeZone("UTC"));
+        config.setServerURL(url);
+        XmlRpcClient client = new XmlRpcClient();
+        client.setConfig(config);
+        return client;
+    }
+
+    /*
+     * Because the binding calls are constructing their own parameter lists, they need to be able to get to
+     * the session reference directly. This is all rather ugly and needs redone
+     * Changed to public to allow easier integration with HTTP-level streaming interface,
+     * see CA-15447
+     */
+    public String getSessionReference()
+    {
+        return this.sessionReference;
+    }
+
+    /**
+     * The (auto-generated parts of) the bindings dispatch XMLRPC calls on this Connection's client through this method.
+     */
+    Map dispatch(String method_call, Object[] method_params) throws XmlRpcException, XenAPIException
+    {
+        Map response = (Map) client.execute(method_call, method_params);
+
+        if (!deprecatedConstructorUsed)
+        {
+            // We are using the new-style constructor which doesn't perform login.
+            // Set this Connection's Session reference from the value returned on the wire.
+            if (method_call.equals("session.login_with_password") &&
+                response.get("Status").equals("Success"))
+            {
+                // Store the Session reference and ask the server what the
+                // API version it's using is.
+                Session session = Types.toSession(response.get("Value"));
+                sessionReference = session.ref;
+                setAPIVersion(session);
+            }
+            else if (method_call.equals("session.slave_local_login_with_password") &&
+                     response.get("Status").equals("Success"))
+            {
+                // Store the Session reference and assume the latest API version.
+                sessionReference = Types.toSession(response.get("Value")).ref;
+                apiVersion = APIVersion.latest();
+            }
+            else if (method_call.equals("session.logout"))
+            {
+                // Work around a bug in XenServer 5.0 and below.
+                // session.login_with_password should have rejected us with
+                // HOST_IS_SLAVE, but instead we don't find out until later.
+                // We don't want to leak the session, so we need to log out
+                // this session from the master instead.
+                if (response.get("Status").equals("Failure"))
+                {
+                    Object[] error = (Object[]) response.get("ErrorDescription");
+                    if (error.length == 2 && error[0].equals("HOST_IS_SLAVE"))
+                    {
+                        try
+                        {
+                            URL client_url =
+                                ((XmlRpcHttpClientConfig)client.getClientConfig()).getServerURL();
+                            Connection tmp_conn =
+                                new Connection(new URL(client_url.getProtocol(),
+                                                       (String)error[1],
+                                                       client_url.getPort(),
+                                                       client_url.getFile()));
+                            tmp_conn.sessionReference = sessionReference;
+                            try
+                            {
+                                Session.logout(tmp_conn);
+                            }
+                            finally
+                            {
+                                tmp_conn.dispose();
+                            }
+                        }
+                        catch (Exception exn2)
+                        {
+                            // Ignore -- we're going to throw HostIsSlave anyway.
+                        }
+                    }
+                }
+
+                // Clear the stored Session reference.
+                this.sessionReference = null;
+            }
+        }
+
+        return Types.checkResponse(response);
+    }
+
+
+    private void setAPIVersion(Session session) throws XenAPIException, XmlRpcException
+    {
+        try
+        {
+            long major = session.getThisHost(this).getAPIVersionMajor(this);
+            long minor = session.getThisHost(this).getAPIVersionMinor(this);
+            apiVersion = APIVersion.fromMajorMinor(major, minor);
+        }
+        catch (BadServerResponse exn)
+        {
+            apiVersion = APIVersion.API_1_1;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2ce2645c/deps/XenServerJava/src/com/xensource/xenapi/Console.java
----------------------------------------------------------------------
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Console.java b/deps/XenServerJava/src/com/xensource/xenapi/Console.java
new file mode 100644
index 0000000..c734a83
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Console.java
@@ -0,0 +1,419 @@
+/*
+ * 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 console
+ *
+ * @author Citrix Systems, Inc.
+ */
+public class Console extends XenAPIObject {
+
+    /**
+     * The XenAPI reference (OpaqueRef) to this object.
+     */
+    protected final String ref;
+
+    /**
+     * For internal use only.
+     */
+    Console(String ref) {
+       this.ref = ref;
+    }
+
+    /**
+     * @return The XenAPI reference (OpaqueRef) to this object.
+     */
+    public String toWireString() {
+       return this.ref;
+    }
+
+    /**
+     * If obj is a Console, compares XenAPI references for equality.
+     */
+    @Override
+    public boolean equals(Object obj)
+    {
+        if (obj != null && obj instanceof Console)
+        {
+            Console other = (Console) obj;
+            return other.ref.equals(this.ref);
+        } else
+        {
+            return false;
+        }
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return ref.hashCode();
+    }
+
+    /**
+     * Represents all the fields in a Console
+     */
+    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", "protocol", this.protocol);
+            print.printf("%1$20s: %2$s\n", "location", this.location);
+            print.printf("%1$20s: %2$s\n", "VM", this.VM);
+            print.printf("%1$20s: %2$s\n", "otherConfig", this.otherConfig);
+            return writer.toString();
+        }
+
+        /**
+         * Convert a console.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("protocol", this.protocol == null ? Types.ConsoleProtocol.UNRECOGNIZED : this.protocol);
+            map.put("location", this.location == null ? "" : this.location);
+            map.put("VM", this.VM == null ? new VM("OpaqueRef:NULL") : this.VM);
+            map.put("other_config", this.otherConfig == null ? new HashMap<String, String>() : this.otherConfig);
+            return map;
+        }
+
+        /**
+         * Unique identifier/object reference
+         */
+        public String uuid;
+        /**
+         * the protocol used by this console
+         */
+        public Types.ConsoleProtocol protocol;
+        /**
+         * URI for the console service
+         */
+        public String location;
+        /**
+         * VM to which this console is attached
+         */
+        public VM VM;
+        /**
+         * additional configuration
+         */
+        public Map<String, String> otherConfig;
+    }
+
+    /**
+     * Get a record containing the current state of the given console.
+     *
+     * @return all fields from the object
+     */
+    public Console.Record getRecord(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "console.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.toConsoleRecord(result);
+    }
+
+    /**
+     * Get a reference to the console instance with the specified UUID.
+     *
+     * @param uuid UUID of object to return
+     * @return reference to the object
+     */
+    public static Console getByUuid(Connection c, String uuid) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "console.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.toConsole(result);
+    }
+
+    /**
+     * Create a new console instance, and return its handle.
+     *
+     * @param record All constructor arguments
+     * @return Task
+     */
+    public static Task createAsync(Connection c, Console.Record record) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Async.console.create";
+        String session = c.getSessionReference();
+        Map<String, Object> record_map = record.toMap();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(record_map)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+        return Types.toTask(result);
+    }
+
+    /**
+     * Create a new console instance, and return its handle.
+     *
+     * @param record All constructor arguments
+     * @return reference to the newly created object
+     */
+    public static Console create(Connection c, Console.Record record) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "console.create";
+        String session = c.getSessionReference();
+        Map<String, Object> record_map = record.toMap();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(record_map)};
+        Map response = c.dispatch(method_call, method_params);
+        Object result = response.get("Value");
+            return Types.toConsole(result);
+    }
+
+    /**
+     * Destroy the specified console instance.
+     *
+     * @return Task
+     */
+    public Task destroyAsync(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "Async.console.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 console instance.
+     *
+     */
+    public void destroy(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "console.destroy";
+        String session = c.getSessionReference();
+        Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+        Map response = c.dispatch(method_call, method_params);
+        return;
+    }
+
+    /**
+     * Get the uuid field of the given console.
+     *
+     * @return value of the field
+     */
+    public String getUuid(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "console.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 protocol field of the given console.
+     *
+     * @return value of the field
+     */
+    public Types.ConsoleProtocol getProtocol(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "console.get_protocol";
+        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.toConsoleProtocol(result);
+    }
+
+    /**
+     * Get the location field of the given console.
+     *
+     * @return value of the field
+     */
+    public String getLocation(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "console.get_location";
+        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 VM field of the given console.
+     *
+     * @return value of the field
+     */
+    public VM getVM(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "console.get_VM";
+        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.toVM(result);
+    }
+
+    /**
+     * Get the other_config field of the given console.
+     *
+     * @return value of the field
+     */
+    public Map<String, String> getOtherConfig(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "console.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 console.
+     *
+     * @param otherConfig New value to set
+     */
+    public void setOtherConfig(Connection c, Map<String, String> otherConfig) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "console.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 console.
+     *
+     * @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 = "console.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 console.  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 = "console.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 consoles known to the system.
+     *
+     * @return references to all objects
+     */
+    public static Set<Console> getAll(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "console.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.toSetOfConsole(result);
+    }
+
+    /**
+     * Return a map of console references to console records for all consoles known to the system.
+     *
+     * @return records of all objects
+     */
+    public static Map<Console, Console.Record> getAllRecords(Connection c) throws
+       BadServerResponse,
+       XenAPIException,
+       XmlRpcException {
+        String method_call = "console.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.toMapOfConsoleConsoleRecord(result);
+    }
+
+}
\ No newline at end of file