Updated Branches: refs/heads/object_store e8259e38c -> 0b9e0c0f3
Override getRootDir in LocalNfsSecondaryStorageResource to make mount successfully on MS side. Now S3 is working. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/0b9e0c0f Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/0b9e0c0f Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/0b9e0c0f Branch: refs/heads/object_store Commit: 0b9e0c0f3acd50362f355642e02f9735fdb24376 Parents: e8259e3 Author: Min Chen <min.c...@citrix.com> Authored: Sun May 12 17:38:33 2013 -0700 Committer: Min Chen <min.c...@citrix.com> Committed: Sun May 12 17:41:44 2013 -0700 ---------------------------------------------------------------------- engine/storage/pom.xml | 5 +++ .../cloudstack/storage/LocalHostEndpoint.java | 2 +- .../storage/datastore/PrimaryDataStoreImpl.java | 1 + .../com/cloud/storage/upload/UploadListener.java | 6 ++++ .../resource/LocalNfsSecondaryStorageResource.java | 22 +++++++++++++++ .../resource/NfsSecondaryStorageResource.java | 2 +- 6 files changed, 36 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0b9e0c0f/engine/storage/pom.xml ---------------------------------------------------------------------- diff --git a/engine/storage/pom.xml b/engine/storage/pom.xml index 519f6ba..a82b3ea 100644 --- a/engine/storage/pom.xml +++ b/engine/storage/pom.xml @@ -56,6 +56,11 @@ <version>${project.version}</version> </dependency> <dependency> + <groupId>org.apache.cloudstack</groupId> + <artifactId>cloud-secondary-storage</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${cs.mysql.version}</version> http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0b9e0c0f/engine/storage/src/org/apache/cloudstack/storage/LocalHostEndpoint.java ---------------------------------------------------------------------- diff --git a/engine/storage/src/org/apache/cloudstack/storage/LocalHostEndpoint.java b/engine/storage/src/org/apache/cloudstack/storage/LocalHostEndpoint.java index 5a4aaa6..525a507 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/LocalHostEndpoint.java +++ b/engine/storage/src/org/apache/cloudstack/storage/LocalHostEndpoint.java @@ -11,7 +11,7 @@ // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the +// KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. package org.apache.cloudstack.storage; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0b9e0c0f/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java ---------------------------------------------------------------------- diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java index b7db243..cea30ba 100644 --- a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java +++ b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java @@ -82,6 +82,7 @@ public class PrimaryDataStoreImpl implements PrimaryDataStore { @Inject StoragePoolHostDao poolHostDao; + @Inject private VolumeDao volumeDao; public PrimaryDataStoreImpl() { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0b9e0c0f/server/src/com/cloud/storage/upload/UploadListener.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/upload/UploadListener.java b/server/src/com/cloud/storage/upload/UploadListener.java index d3b7af9..c6f273b 100755 --- a/server/src/com/cloud/storage/upload/UploadListener.java +++ b/server/src/com/cloud/storage/upload/UploadListener.java @@ -43,6 +43,7 @@ import com.cloud.agent.api.Answer; import com.cloud.agent.api.Command; import com.cloud.agent.api.StartupCommand; import com.cloud.agent.api.StartupStorageCommand; +import com.cloud.agent.api.storage.DownloadAnswer; import com.cloud.agent.api.storage.UploadAnswer; import com.cloud.agent.api.storage.UploadCommand; import com.cloud.agent.api.storage.UploadProgressCommand; @@ -56,6 +57,7 @@ import com.cloud.storage.Upload.Status; import com.cloud.storage.Upload.Type; import com.cloud.storage.UploadVO; import com.cloud.storage.dao.UploadDao; +import com.cloud.storage.download.DownloadListener; import com.cloud.storage.upload.UploadState.UploadEvent; import com.cloud.utils.exception.CloudRuntimeException; @@ -475,6 +477,10 @@ public class UploadListener implements Listener { @Override public void complete(Answer answer) { listener.processAnswers(id, -1, new Answer[] {answer}); + if (listener instanceof DownloadListener) { + DownloadListener dwldListener = (DownloadListener)listener; + dwldListener.getCallback().complete((DownloadAnswer)answer); + } } } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0b9e0c0f/services/secondary-storage/src/org/apache/cloudstack/storage/resource/LocalNfsSecondaryStorageResource.java ---------------------------------------------------------------------- diff --git a/services/secondary-storage/src/org/apache/cloudstack/storage/resource/LocalNfsSecondaryStorageResource.java b/services/secondary-storage/src/org/apache/cloudstack/storage/resource/LocalNfsSecondaryStorageResource.java index 53c96dd..d783cdd 100644 --- a/services/secondary-storage/src/org/apache/cloudstack/storage/resource/LocalNfsSecondaryStorageResource.java +++ b/services/secondary-storage/src/org/apache/cloudstack/storage/resource/LocalNfsSecondaryStorageResource.java @@ -6,12 +6,14 @@ import static java.util.Arrays.asList; import java.io.File; import java.io.InputStream; +import java.net.InetAddress; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import java.util.concurrent.Executors; import org.apache.cloudstack.storage.command.DownloadSystemTemplateCommand; @@ -113,6 +115,26 @@ public class LocalNfsSecondaryStorageResource extends NfsSecondaryStorageResourc } @Override + synchronized public String getRootDir(String secUrl) { + try { + URI uri = new URI(secUrl); + String nfsHost = uri.getHost(); + + InetAddress nfsHostAddr = InetAddress.getByName(nfsHost); + String nfsHostIp = nfsHostAddr.getHostAddress(); + String nfsPath = nfsHostIp + ":" + uri.getPath(); + String dir = UUID.nameUUIDFromBytes(nfsPath.getBytes()).toString(); + String root = _parent + "/" + dir; + mount(root, nfsPath); + return root; + } catch (Exception e) { + String msg = "GetRootDir for " + secUrl + " failed due to " + e.toString(); + s_logger.error(msg, e); + throw new CloudRuntimeException(msg); + } + } + + @Override protected String mount(String root, String nfsPath) { File file = new File(root); if (!file.exists()) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0b9e0c0f/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java ---------------------------------------------------------------------- diff --git a/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java b/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java index 1d5e076..fcd3481 100755 --- a/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java +++ b/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java @@ -158,7 +158,7 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S private String _storageNetmask; private String _storageGateway; private final List<String> nfsIps = new ArrayList<String>(); - private String _parent = "/mnt/SecStorage"; + protected String _parent = "/mnt/SecStorage"; final private String _tmpltDir = "/var/cloudstack/template"; final private String _tmpltpp = "template.properties"; private String createTemplateFromSnapshotXenScript;