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);
+ }
+
+}