From a0357a6af0d30a1ef399c27282e90f7727dae661 Mon Sep 17 00:00:00 2001 From: anthony Date: Mon, 16 May 2011 15:59:13 -0700 Subject: [PATCH] multiple secondary storage local secondary storage should work, didn't test yet --- .../LocalSecondaryStorageResource.java | 30 +++++++++++++++---- .../storage/download/DownloadListener.java | 5 ++-- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/core/src/com/cloud/storage/resource/LocalSecondaryStorageResource.java b/core/src/com/cloud/storage/resource/LocalSecondaryStorageResource.java index 0833279caa7..cee6b2a67ee 100644 --- a/core/src/com/cloud/storage/resource/LocalSecondaryStorageResource.java +++ b/core/src/com/cloud/storage/resource/LocalSecondaryStorageResource.java @@ -20,6 +20,7 @@ package com.cloud.storage.resource; import java.util.HashMap; import java.util.Map; + import javax.naming.ConfigurationException; import org.apache.log4j.Logger; @@ -35,6 +36,8 @@ import com.cloud.agent.api.ReadyCommand; import com.cloud.agent.api.SecStorageSetupCommand; import com.cloud.agent.api.StartupCommand; import com.cloud.agent.api.StartupStorageCommand; +import com.cloud.agent.api.storage.ListTemplateAnswer; +import com.cloud.agent.api.storage.ListTemplateCommand; import com.cloud.agent.api.storage.ssCommand; import com.cloud.agent.api.storage.DownloadCommand; import com.cloud.agent.api.storage.DownloadProgressCommand; @@ -48,6 +51,7 @@ import com.cloud.storage.template.DownloadManager; import com.cloud.storage.template.DownloadManagerImpl; import com.cloud.storage.template.TemplateInfo; import com.cloud.utils.component.ComponentLocator; +import com.cloud.utils.exception.CloudRuntimeException; public class LocalSecondaryStorageResource extends ServerResourceBase implements SecondaryStorageResource { private static final Logger s_logger = Logger.getLogger(LocalSecondaryStorageResource.class); @@ -68,6 +72,17 @@ public class LocalSecondaryStorageResource extends ServerResourceBase implements public void disconnected() { } + + @Override + public String getRootDir(ssCommand cmd){ + return getRootDir(); + + } + + public String getRootDir() { + return _parent; + } + @Override public Answer executeRequest(Command cmd) { if (cmd instanceof DownloadProgressCommand) { @@ -80,10 +95,18 @@ public class LocalSecondaryStorageResource extends ServerResourceBase implements return new Answer(cmd, true, "success"); } else if (cmd instanceof ReadyCommand) { return new ReadyAnswer((ReadyCommand)cmd); + } else if (cmd instanceof ListTemplateCommand){ + return execute((ListTemplateCommand)cmd); } else { return Answer.createUnsupportedCommandAnswer(cmd); } } + + private Answer execute(ListTemplateCommand cmd) { + String root = getRootDir(); + Map templateInfos = _dlMgr.gatherTemplateInfo(root); + return new ListTemplateAnswer(cmd.getSecUrl(), templateInfos); + } @Override public Type getType() { @@ -95,12 +118,7 @@ public class LocalSecondaryStorageResource extends ServerResourceBase implements return new PingStorageCommand(Host.Type.Storage, id, new HashMap()); } - @Override - public String getRootDir(ssCommand cmd){ - return null; - - } - + @Override @SuppressWarnings("unchecked") public boolean configure(String name, Map params) throws ConfigurationException { diff --git a/server/src/com/cloud/storage/download/DownloadListener.java b/server/src/com/cloud/storage/download/DownloadListener.java index 1ecf2de530f..4eef22bb663 100644 --- a/server/src/com/cloud/storage/download/DownloadListener.java +++ b/server/src/com/cloud/storage/download/DownloadListener.java @@ -283,9 +283,10 @@ public class DownloadListener implements Listener { downloadMonitor.handleSysTemplateDownload(agent); } else if ( cmd instanceof StartupStorageCommand) { StartupStorageCommand storage = (StartupStorageCommand)cmd; - if( storage.getResourceType() == Storage.StorageResourceType.SECONDARY_STORAGE ) { + if( storage.getResourceType() == Storage.StorageResourceType.SECONDARY_STORAGE || + storage.getResourceType() == Storage.StorageResourceType.LOCAL_SECONDARY_STORAGE ) { downloadMonitor.addSystemVMTemplatesToHost(agent, storage.getTemplateInfo()); - downloadMonitor.handleTemplateSync(agent.getId()); + downloadMonitor.handleTemplateSync(agent); } } else if ( cmd instanceof StartupSecondaryStorageCommand ) { downloadMonitor.handleTemplateSync(agent.getDataCenterId());