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;

Reply via email to