enable event on XS 6.2 + FOX
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/3f74cb2f Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/3f74cb2f Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/3f74cb2f Branch: refs/heads/4.4-forward Commit: 3f74cb2feb01ccfb1bba28a1dd230ad7b8c68f3b Parents: dbc0a26 Author: Anthony Xu <[email protected]> Authored: Mon Apr 21 14:26:40 2014 -0700 Committer: Anthony Xu <[email protected]> Committed: Mon Apr 21 14:26:40 2014 -0700 ---------------------------------------------------------------------- .../xen/resource/XenServer620Resource.java | 63 +------------------- .../xenserver/XenServerResourceNewBase.java | 62 ++++++++++++++++++- 2 files changed, 62 insertions(+), 63 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3f74cb2f/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer620Resource.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer620Resource.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer620Resource.java index 4c9907b..c10dc1e 100644 --- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer620Resource.java +++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer620Resource.java @@ -19,15 +19,7 @@ import com.xensource.xenapi.Connection; import com.xensource.xenapi.Host; import com.xensource.xenapi.HostPatch; import com.xensource.xenapi.PoolPatch; -/* -import java.util.HashSet; -import com.xensource.xenapi.Event; -import com.xensource.xenapi.Task; -import com.xensource.xenapi.Types; -import com.xensource.xenapi.Types.XenAPIException; -import org.apache.xmlrpc.XmlRpcException; -import java.util.concurrent.TimeoutException; -*/ + import org.apache.cloudstack.hypervisor.xenserver.XenserverConfigs; import java.util.Map; import java.util.Set; @@ -112,58 +104,5 @@ public class XenServer620Resource extends XenServer610Resource { cmd.setHostDetails(details); } -/* - protected void waitForTask(Connection c, Task task, long pollInterval, long timeout) throws XenAPIException, XmlRpcException, TimeoutException { - long beginTime = System.currentTimeMillis(); - if (s_logger.isTraceEnabled()) { - s_logger.trace("Task " + task.getNameLabel(c) + " (" + task.getType(c) + ") sent to " + c.getSessionReference() + " is pending completion with a " + timeout + - "ms timeout"); - } - Set<String> classes = new HashSet<String>(); - classes.add("Task/" + task.toWireString()); - String token = ""; - Double t = new Double(timeout / 1000); - while (true) { - Map<?, ?> map = Event.properFrom(c, classes, token, t); - token = (String)map.get("token"); - @SuppressWarnings("unchecked") - Set<Event.Record> events = (Set<Event.Record>)map.get("events"); - if (events.size() == 0) { - String msg = "No event for task " + task.toString(); - s_logger.warn(msg); - task.cancel(c); - throw new TimeoutException(msg); - } - for (Event.Record rec : events) { - if (!(rec.snapshot instanceof Task.Record)) { - if (s_logger.isDebugEnabled()) { - s_logger.debug("Skipping over " + rec); - } - continue; - } - - Task.Record taskRecord = (Task.Record)rec.snapshot; - - if (taskRecord.status != Types.TaskStatusType.PENDING) { - if (s_logger.isDebugEnabled()) { - s_logger.debug("Task: " + taskRecord.uuid + " is done " + taskRecord.status); - } - return; - } else { - if (s_logger.isDebugEnabled()) { - s_logger.debug("Task: " + taskRecord.uuid + " progress: " + taskRecord.progress); - } - - } - } - if (System.currentTimeMillis() - beginTime > timeout) { - String msg = "Async " + timeout / 1000 + " seconds timeout for task " + task.toString(); - s_logger.warn(msg); - task.cancel(c); - throw new TimeoutException(msg); - } - } - } -*/ } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3f74cb2f/plugins/hypervisors/xen/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/xen/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java b/plugins/hypervisors/xen/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java index b0bbcb9..d11db0d 100644 --- a/plugins/hypervisors/xen/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java +++ b/plugins/hypervisors/xen/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java @@ -23,14 +23,19 @@ import java.util.Map; import java.util.Set; import org.apache.log4j.Logger; -import org.apache.xmlrpc.XmlRpcException; import com.xensource.xenapi.Connection; import com.xensource.xenapi.Host; import com.xensource.xenapi.Pool; import com.xensource.xenapi.Types.XenAPIException; import com.xensource.xenapi.VM; + import com.xensource.xenapi.Event; +import com.xensource.xenapi.Task; +import com.xensource.xenapi.Types; +import org.apache.xmlrpc.XmlRpcException; +import java.util.concurrent.TimeoutException; + import com.cloud.agent.api.Answer; import com.cloud.agent.api.ClusterSyncAnswer; @@ -97,6 +102,60 @@ public class XenServerResourceNewBase extends XenServer620SP1Resource { } + protected void waitForTask(Connection c, Task task, long pollInterval, long timeout) throws XenAPIException, XmlRpcException, TimeoutException { + long beginTime = System.currentTimeMillis(); + if (s_logger.isTraceEnabled()) { + s_logger.trace("Task " + task.getNameLabel(c) + " (" + task.getType(c) + ") sent to " + c.getSessionReference() + " is pending completion with a " + timeout + + "ms timeout"); + } + Set<String> classes = new HashSet<String>(); + classes.add("Task/" + task.toWireString()); + String token = ""; + Double t = new Double(timeout / 1000); + while (true) { + Map<?, ?> map = Event.properFrom(c, classes, token, t); + token = (String)map.get("token"); + @SuppressWarnings("unchecked") + Set<Event.Record> events = (Set<Event.Record>)map.get("events"); + if (events.size() == 0) { + String msg = "No event for task " + task.toWireString(); + s_logger.warn(msg); + task.cancel(c); + throw new TimeoutException(msg); + } + for (Event.Record rec : events) { + if (!(rec.snapshot instanceof Task.Record)) { + if (s_logger.isDebugEnabled()) { + s_logger.debug("Skipping over " + rec); + } + continue; + } + + Task.Record taskRecord = (Task.Record)rec.snapshot; + + if (taskRecord.status != Types.TaskStatusType.PENDING) { + if (s_logger.isDebugEnabled()) { + s_logger.debug("Task, ref:" + task.toWireString() + ", UUID:" + taskRecord.uuid + " is done " + taskRecord.status); + } + return; + } else { + if (s_logger.isDebugEnabled()) { + s_logger.debug("Task: ref:" + task.toWireString() + ", UUID:" + taskRecord.uuid + " progress: " + taskRecord.progress); + } + + } + } + if (System.currentTimeMillis() - beginTime > timeout) { + String msg = "Async " + timeout / 1000 + " seconds timeout for task " + task.toString(); + s_logger.warn(msg); + task.cancel(c); + throw new TimeoutException(msg); + } + } + } + + + @Override protected Answer execute(final ClusterSyncCommand cmd) { if (!_listener.isListening()) { @@ -297,4 +356,5 @@ public class XenServerResourceNewBase extends XenServer620SP1Resource { } } + }
