You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mc...@apache.org on 2013/07/18 02:32:05 UTC

git commit: updated refs/heads/master to cb2a842

Updated Branches:
  refs/heads/master 1e3e131e1 -> cb2a84241


CLOUDSTACK-3513: [Automation] Failed to copy iso and template between
zones.


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

Branch: refs/heads/master
Commit: cb2a84241b5fd83c449afecdd898f6038ac06208
Parents: 1e3e131
Author: Min Chen <mi...@citrix.com>
Authored: Wed Jul 17 17:24:03 2013 -0700
Committer: Min Chen <mi...@citrix.com>
Committed: Wed Jul 17 17:31:50 2013 -0700

----------------------------------------------------------------------
 .../storage/image/TemplateServiceImpl.java      | 26 ++++++++++++++++++--
 .../com/cloud/template/TemplateManagerImpl.java |  3 ---
 2 files changed, 24 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cb2a8424/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
index b972628..4a7ef53 100644
--- a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
+++ b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
@@ -580,8 +580,8 @@ public class TemplateServiceImpl implements TemplateService {
 
         TemplateOpContext<TemplateApiResult> context = new TemplateOpContext<TemplateApiResult>(null,
                 (TemplateObject) templateOnStore, future);
-        AsyncCallbackDispatcher<TemplateServiceImpl, CopyCommandResult> caller = AsyncCallbackDispatcher.create(this);
-        caller.setCallback(caller.getTarget().copyTemplateCallBack(null, null)).setContext(context);
+        AsyncCallbackDispatcher<TemplateServiceImpl, CreateCmdResult> caller = AsyncCallbackDispatcher.create(this);
+        caller.setCallback(caller.getTarget().copyTemplateCrossZoneCallBack(null, null)).setContext(context);
         destStore.getDriver().createAsync(destStore, templateOnStore, caller);
         return future;
     }
@@ -652,6 +652,28 @@ public class TemplateServiceImpl implements TemplateService {
         return null;
     }
 
+    protected Void copyTemplateCrossZoneCallBack(AsyncCallbackDispatcher<TemplateServiceImpl, CreateCmdResult> callback, TemplateOpContext<TemplateApiResult> context) {
+        TemplateInfo destTemplate = context.getTemplate();
+        CreateCmdResult result = callback.getResult();
+        AsyncCallFuture<TemplateApiResult> future = context.getFuture();
+        TemplateApiResult res = new TemplateApiResult(destTemplate);
+        try {
+            if (result.isFailed()) {
+                res.setResult(result.getResult());
+                destTemplate.processEvent(Event.OperationFailed);
+            } else {
+                destTemplate.processEvent(Event.OperationSuccessed, result.getAnswer());
+            }
+            future.complete(res);
+        } catch (Exception e) {
+            s_logger.debug("Failed to process copy template cross zones callback", e);
+            res.setResult(e.toString());
+            future.complete(res);
+        }
+
+        return null;
+    }
+
     @Override
     public void addSystemVMTemplatesToSecondary(DataStore store) {
         long storeId = store.getId();

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cb2a8424/server/src/com/cloud/template/TemplateManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java b/server/src/com/cloud/template/TemplateManagerImpl.java
index c7cc818..c6446ac 100755
--- a/server/src/com/cloud/template/TemplateManagerImpl.java
+++ b/server/src/com/cloud/template/TemplateManagerImpl.java
@@ -634,9 +634,6 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager,
             createEventType = EventTypes.EVENT_TEMPLATE_CREATE;
         }
 
-        Transaction txn = Transaction.currentTxn();
-        txn.start();
-
         TemplateInfo srcTemplate = this._tmplFactory.getTemplate(template.getId(), srcSecStore);
         // Copy will just find one eligible image store for the destination zone
         // and copy template there, not propagate to all image stores