You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ed...@apache.org on 2012/12/04 03:35:05 UTC

git commit: add more implementation in volume project

Updated Branches:
  refs/heads/javelin d836b14a6 -> 2c689adce


add more implementation in volume project


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

Branch: refs/heads/javelin
Commit: 2c689adce7aed800e5ab7d83a1bfb160588742bc
Parents: d836b14
Author: Edison Su <su...@gmail.com>
Authored: Mon Dec 3 18:34:40 2012 -0800
Committer: Edison Su <su...@gmail.com>
Committed: Mon Dec 3 18:34:49 2012 -0800

----------------------------------------------------------------------
 .../engine/cloud/entity/api/VolumeEntity.java      |    6 +-
 .../api/storage/PrimaryDataStoreInfo.java          |    1 +
 .../engine/subsystem/api/storage/VolumeInfo.java   |    4 +-
 .../cloudstack/storage/test/volumeServiceTest.java |    4 +-
 engine/storage/pom.xml                             |    1 -
 .../cloudstack/storage/command/DeleteVolume.java   |   40 +++
 .../storage/datastore/PrimaryDataStore.java        |    4 +-
 .../datastore/PrimaryDataStoreEntityImpl.java      |  252 +++++++++++++++
 .../storage/volume/VolumeEntityImpl.java           |   46 +---
 .../cloudstack/storage/volume/VolumeService.java   |    3 +-
 .../cloudstack/storage/volume/db/VolumeDao.java    |    2 +
 .../storage/volume/db/VolumeDaoImpl.java           |   10 +
 .../storage/datastore/DefaultPrimaryDataStore.java |  171 ++++++++++
 .../datastore/DefaultPrimaryDataStoreImpl.java     |  171 ----------
 .../driver/DefaultPrimaryDataStoreDriverImpl.java  |   69 ++--
 .../datastore/driver/PrimaryDataStoreDriver.java   |    4 +
 .../DefaultPrimaryDatastoreProviderImpl.java       |    5 +-
 .../cloudstack/storage/volume/VolumeObject.java    |    4 +-
 .../storage/volume/VolumeServiceImpl.java          |    2 +-
 .../driver/SolidfirePrimaryDataStoreDriver.java    |   12 +
 .../SolidfirePrimaryDataStoreProvider.java         |    4 +-
 21 files changed, 553 insertions(+), 262 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/VolumeEntity.java
----------------------------------------------------------------------
diff --git a/engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/VolumeEntity.java b/engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/VolumeEntity.java
index b9c9db3..4f883c0 100755
--- a/engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/VolumeEntity.java
+++ b/engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/VolumeEntity.java
@@ -76,11 +76,11 @@ public interface VolumeEntity extends CloudStackEntity {
     
     long getSize();
     
-    String getTemplatePath();
-    String getTemplateUuid();
     VolumeDiskType getDiskType();
+    
     VolumeType getType();
+    
     StorageEntity getDataStore();
-    void setPath(String path);
+    
     boolean createVolumeFromTemplate(long dataStoreId, VolumeDiskType diskType, TemplateEntity template);
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/PrimaryDataStoreInfo.java
----------------------------------------------------------------------
diff --git a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/PrimaryDataStoreInfo.java b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/PrimaryDataStoreInfo.java
index 4d0b564..dbdaaed 100644
--- a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/PrimaryDataStoreInfo.java
+++ b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/PrimaryDataStoreInfo.java
@@ -33,4 +33,5 @@ public interface PrimaryDataStoreInfo {
 	public long getAvailableCapacity();
 	public List<EndPoint> getEndPoints();
 	public long getId();
+	public String getUuid();
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/VolumeInfo.java
----------------------------------------------------------------------
diff --git a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/VolumeInfo.java b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/VolumeInfo.java
index 8785bc5..0370d20 100644
--- a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/VolumeInfo.java
+++ b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/VolumeInfo.java
@@ -38,5 +38,7 @@ public interface VolumeInfo {
 	public long getId();
 	public Volume.State getCurrentState();
 	public Volume.State getDesiredState();
-	public Date getCreatedData();
+	public Date getCreatedDate();
+	public Date getUpdatedDate();
+	public String getOwner();
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/volumeServiceTest.java
----------------------------------------------------------------------
diff --git a/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/volumeServiceTest.java b/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/volumeServiceTest.java
index b2f079e..f633dac 100644
--- a/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/volumeServiceTest.java
+++ b/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/volumeServiceTest.java
@@ -44,7 +44,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.type.RootDisk;
 import org.apache.cloudstack.engine.subsystem.api.storage.type.VolumeTypeHelper;
 import org.apache.cloudstack.storage.command.CreateVolumeAnswer;
 import org.apache.cloudstack.storage.command.CreateVolumeFromBaseImageCommand;
-import org.apache.cloudstack.storage.datastore.DefaultPrimaryDataStoreImpl;
+import org.apache.cloudstack.storage.datastore.DefaultPrimaryDataStore;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreVO;
 import org.apache.cloudstack.storage.datastore.lifecycle.PrimaryDataStoreLifeCycle;
@@ -293,7 +293,7 @@ public class volumeServiceTest {
 		DefaultPrimaryDatastoreProviderImpl provider = ComponentInject.inject(DefaultPrimaryDatastoreProviderImpl.class);
 		//assertNotNull(provider.dataStoreDao);
 
-		DefaultPrimaryDataStoreImpl dpdsi = new DefaultPrimaryDataStoreImpl(null, null, null);
+		DefaultPrimaryDataStore dpdsi = new DefaultPrimaryDataStore(null, null, null);
 		ComponentInject.inject(dpdsi);
 		//assertNotNull(dpdsi.volumeDao);
 	}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/pom.xml
----------------------------------------------------------------------
diff --git a/engine/storage/pom.xml b/engine/storage/pom.xml
index b214201..95eeade 100644
--- a/engine/storage/pom.xml
+++ b/engine/storage/pom.xml
@@ -65,6 +65,5 @@
   <build>
     <defaultGoal>install</defaultGoal>
     <sourceDirectory>src</sourceDirectory>
-    <testSourceDirectory>test</testSourceDirectory>
   </build>
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/src/org/apache/cloudstack/storage/command/DeleteVolume.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/command/DeleteVolume.java b/engine/storage/src/org/apache/cloudstack/storage/command/DeleteVolume.java
new file mode 100644
index 0000000..755d7f8
--- /dev/null
+++ b/engine/storage/src/org/apache/cloudstack/storage/command/DeleteVolume.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cloudstack.storage.command;
+
+import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
+
+import com.cloud.agent.api.Command;
+
+public class DeleteVolume extends Command {
+
+    public DeleteVolume(VolumeInfo volume) {
+        
+    }
+    
+    protected DeleteVolume() {
+        
+    }
+    @Override
+    public boolean executeInSequence() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java
index 6ec30d3..b977a79 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStore.java
@@ -32,7 +32,7 @@ public interface PrimaryDataStore extends PrimaryDataStoreInfo {
 
     List<VolumeInfo> getVolumes();
 
-    boolean deleteVolume(long id);
+    boolean deleteVolume(VolumeInfo volume);
 
     VolumeInfo createVolume(VolumeInfo vo, VolumeDiskType diskType);
 
@@ -40,8 +40,6 @@ public interface PrimaryDataStore extends PrimaryDataStoreInfo {
 
     List<EndPoint> getEndPoints();
 
-    PrimaryDataStoreInfo getDataStoreInfo();
-
     boolean exists(VolumeInfo vi);
 
     boolean templateExists(TemplateInfo template);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreEntityImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreEntityImpl.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreEntityImpl.java
new file mode 100644
index 0000000..79a173c
--- /dev/null
+++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreEntityImpl.java
@@ -0,0 +1,252 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cloudstack.storage.datastore;
+
+import java.lang.reflect.Method;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.cloudstack.engine.datacenter.entity.api.StorageEntity;
+import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
+
+import com.cloud.storage.StoragePoolStatus;
+import com.cloud.storage.Storage.StoragePoolType;
+
+public class PrimaryDataStoreEntityImpl implements StorageEntity {
+    private PrimaryDataStoreInfo dataStore;
+    
+    public PrimaryDataStoreEntityImpl(PrimaryDataStoreInfo dataStore) {
+        this.dataStore = dataStore;
+    }
+    
+    @Override
+    public boolean enable() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean disable() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean deactivate() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean reactivate() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public String getUuid() {
+        return this.dataStore.getUuid();
+    }
+
+    @Override
+    public long getId() {
+        return this.dataStore.getId();
+    }
+
+    @Override
+    public String getCurrentState() {
+       return null;
+    }
+
+    @Override
+    public String getDesiredState() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Date getCreatedTime() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Date getLastUpdatedTime() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public String getOwner() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Map<String, String> getDetails(String source) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public List<String> getDetailSources() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public void addDetail(String source, String name, String value) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void delDetail(String source, String name, String value) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void updateDetail(String source, String name, String value) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public List<Method> getApplicableActions() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public State getState() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public String getName() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public StoragePoolType getPoolType() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Date getCreated() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Date getUpdateTime() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public long getDataCenterId() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getCapacityBytes() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getAvailableBytes() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public Long getClusterId() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public String getHostAddress() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public String getPath() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public String getUserInfo() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public boolean isShared() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean isLocal() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public StoragePoolStatus getStatus() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public int getPort() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public Long getPodId() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public String getStorageProvider() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public String getStorageType() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeEntityImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeEntityImpl.java b/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeEntityImpl.java
index d4064d1..0dfa43e 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeEntityImpl.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeEntityImpl.java
@@ -30,6 +30,7 @@ import org.apache.cloudstack.engine.datacenter.entity.api.StorageEntity;
 import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
 import org.apache.cloudstack.engine.subsystem.api.storage.disktype.VolumeDiskType;
 import org.apache.cloudstack.engine.subsystem.api.storage.type.VolumeType;
+import org.apache.cloudstack.storage.datastore.PrimaryDataStoreEntityImpl;
 import org.apache.cloudstack.storage.image.TemplateEntityImpl;
 import org.apache.cloudstack.storage.image.TemplateInfo;
 
@@ -45,10 +46,6 @@ public class VolumeEntityImpl implements VolumeEntity {
         return volumeInfo;
     }
 
-    public void setVolumeInfo(VolumeInfo vi) {
-        this.volumeInfo = vi;
-    }
-
     @Override 
     public String getUuid() {
         return volumeInfo.getUuid();
@@ -76,19 +73,17 @@ public class VolumeEntityImpl implements VolumeEntity {
 
     @Override
     public Date getCreatedTime() {
-        return volumeInfo.getCreatedData();
+        return volumeInfo.getCreatedDate();
     }
 
     @Override
     public Date getLastUpdatedTime() {
-        // TODO Auto-generated method stub
-        return null;
+        return volumeInfo.getUpdatedDate();
     }
 
     @Override
     public String getOwner() {
-        // TODO Auto-generated method stub
-        return null;
+        return volumeInfo.getOwner();
     }
 
     @Override
@@ -171,50 +166,27 @@ public class VolumeEntityImpl implements VolumeEntity {
 
     @Override
     public void destroy() {
-        // TODO Auto-generated method stub
-
+        vs.deleteVolume(volumeInfo);
     }
 
     @Override
     public long getSize() {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    @Override
-    public String getTemplatePath() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public String getTemplateUuid() {
-        // TODO Auto-generated method stub
-        return null;
+        return volumeInfo.getSize();
     }
 
     @Override
     public VolumeDiskType getDiskType() {
-        // TODO Auto-generated method stub
-        return null;
+        return volumeInfo.getDiskType();
     }
 
     @Override
     public VolumeType getType() {
-        // TODO Auto-generated method stub
-        return null;
+        return volumeInfo.getType();
     }
 
     @Override
     public StorageEntity getDataStore() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public void setPath(String path) {
-        // TODO Auto-generated method stub
-
+        return new PrimaryDataStoreEntityImpl(volumeInfo.getDataStore());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeService.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeService.java b/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeService.java
index 36a2256..ab77e99 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeService.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeService.java
@@ -18,7 +18,6 @@
  */
 package org.apache.cloudstack.storage.volume;
 
-import org.apache.cloudstack.engine.cloud.entity.api.TemplateEntity;
 import org.apache.cloudstack.engine.cloud.entity.api.VolumeEntity;
 import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint;
 import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
@@ -48,7 +47,7 @@ public interface VolumeService {
      * @return
      * @throws ConcurrentOperationException
      */
-    boolean deleteVolume(long volumeId);
+    boolean deleteVolume(VolumeInfo volume);
 
     /**
      * 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/src/org/apache/cloudstack/storage/volume/db/VolumeDao.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/db/VolumeDao.java b/engine/storage/src/org/apache/cloudstack/storage/volume/db/VolumeDao.java
index ccc1901..8ee6060 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/volume/db/VolumeDao.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/volume/db/VolumeDao.java
@@ -77,4 +77,6 @@ public interface VolumeDao extends GenericDao<VolumeVO, Long>, StateDao<Volume.S
     List<Long> listPoolIdsByVolumeCount(long dcId, Long podId, Long clusterId, long accountId);
 
     VolumeVO allocVolume(long size, VolumeType type, String volName, Long templateId);
+    
+    VolumeVO findByVolumeIdAndPoolId(long volumeId, long poolId);
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/src/org/apache/cloudstack/storage/volume/db/VolumeDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/db/VolumeDaoImpl.java b/engine/storage/src/org/apache/cloudstack/storage/volume/db/VolumeDaoImpl.java
index 980e4f8..766ed91 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/volume/db/VolumeDaoImpl.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/volume/db/VolumeDaoImpl.java
@@ -46,6 +46,8 @@ import com.cloud.utils.db.SearchBuilder;
 import com.cloud.utils.db.SearchCriteria;
 import com.cloud.utils.db.SearchCriteria.Func;
 import com.cloud.utils.db.SearchCriteria.Op;
+import com.cloud.utils.db.SearchCriteria2;
+import com.cloud.utils.db.SearchCriteriaService;
 import com.cloud.utils.db.Transaction;
 import com.cloud.utils.db.UpdateBuilder;
 import com.cloud.utils.exception.CloudRuntimeException;
@@ -426,4 +428,12 @@ public class VolumeDaoImpl extends GenericDaoBase<VolumeVO, Long> implements Vol
         vol = this.persist(vol);
         return vol;
     }
+
+    @Override
+    public VolumeVO findByVolumeIdAndPoolId(long volumeId, long poolId) {
+        SearchCriteriaService<VolumeVO, VolumeVO> sc = SearchCriteria2.create(VolumeVO.class);
+        sc.addAnd(sc.getEntity().getId(), Op.EQ, volumeId);
+        sc.addAnd(sc.getEntity().getPoolId(), Op.EQ, poolId);
+        return sc.find();
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStore.java
----------------------------------------------------------------------
diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStore.java b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStore.java
new file mode 100644
index 0000000..4a5922d
--- /dev/null
+++ b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStore.java
@@ -0,0 +1,171 @@
+package org.apache.cloudstack.storage.datastore;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint;
+import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
+import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
+import org.apache.cloudstack.engine.subsystem.api.storage.disktype.VolumeDiskType;
+import org.apache.cloudstack.storage.HypervisorHostEndPoint;
+import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreVO;
+import org.apache.cloudstack.storage.datastore.driver.PrimaryDataStoreDriver;
+import org.apache.cloudstack.storage.image.TemplateInfo;
+import org.apache.cloudstack.storage.volume.TemplateOnPrimaryDataStoreInfo;
+import org.apache.cloudstack.storage.volume.TemplatePrimaryDataStoreManager;
+import org.apache.cloudstack.storage.volume.VolumeObject;
+import org.apache.cloudstack.storage.volume.db.VolumeDao;
+import org.apache.cloudstack.storage.volume.db.VolumeVO;
+
+import org.apache.log4j.Logger;
+
+import com.cloud.host.HostVO;
+import com.cloud.host.dao.HostDao;
+import com.cloud.hypervisor.Hypervisor.HypervisorType;
+import com.cloud.utils.component.ComponentInject;
+import edu.emory.mathcs.backport.java.util.Collections;
+
+public class DefaultPrimaryDataStore implements PrimaryDataStore {
+    private static final Logger s_logger = Logger.getLogger(DefaultPrimaryDataStore.class);
+    protected PrimaryDataStoreDriver driver;
+    protected PrimaryDataStoreVO pdsv;
+    protected PrimaryDataStoreInfo pdsInfo;
+    @Inject
+    private VolumeDao volumeDao;
+    @Inject
+    HostDao hostDao;
+    @Inject
+    TemplatePrimaryDataStoreManager templatePrimaryStoreMgr;
+
+    private DefaultPrimaryDataStore(PrimaryDataStoreDriver driver, PrimaryDataStoreVO pdsv, PrimaryDataStoreInfo pdsInfo) {
+        this.driver = driver;
+        this.pdsv = pdsv;
+        this.pdsInfo = pdsInfo;
+    }
+    
+    public static DefaultPrimaryDataStore createDataStore(PrimaryDataStoreDriver driver, PrimaryDataStoreVO pdsv, PrimaryDataStoreInfo pdsInfo) {
+        DefaultPrimaryDataStore dataStore = new DefaultPrimaryDataStore(driver, pdsv, pdsInfo);
+        return ComponentInject.inject(dataStore);
+    }
+
+    @Override
+    public VolumeInfo getVolume(long id) {
+        VolumeVO volumeVO = volumeDao.findById(id);
+        VolumeObject vol = VolumeObject.getVolumeObject(this, volumeVO);
+        return vol;
+    }
+
+    @Override
+    public List<VolumeInfo> getVolumes() {
+        List<VolumeVO> volumes = volumeDao.findByPoolId(this.getId());
+        List<VolumeInfo> volumeInfos = new ArrayList<VolumeInfo>();
+        for (VolumeVO volume : volumes) {
+            volumeInfos.add(VolumeObject.getVolumeObject(this, volume));
+        }
+        return volumeInfos;
+    }
+
+    @Override
+    public boolean deleteVolume(VolumeInfo volume) {
+        return this.driver.deleteVolume((VolumeObject)volume);
+    }
+
+    @Override
+    public List<EndPoint> getEndPoints() {
+        Long clusterId = pdsv.getClusterId();
+        if (clusterId == null) {
+            return null;
+        }
+        List<EndPoint> endpoints = new ArrayList<EndPoint>();
+        List<HostVO> hosts = hostDao.findHypervisorHostInCluster(clusterId);
+        for (HostVO host : hosts) {
+            HypervisorHostEndPoint ep = new HypervisorHostEndPoint(host.getId());
+            ComponentInject.inject(ep);
+            endpoints.add(ep);
+        }
+        Collections.shuffle(endpoints);
+        return endpoints;
+    }
+
+    @Override
+    public boolean isHypervisorSupported(HypervisorType hypervisor) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean isLocalStorageSupported() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean isVolumeDiskTypeSupported(VolumeDiskType diskType) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public long getCapacity() {
+       return this.driver.getCapacity();
+    }
+
+    @Override
+    public long getAvailableCapacity() {
+        return this.driver.getAvailableCapacity();
+    }
+
+    @Override
+    public VolumeObject createVolume(VolumeInfo vi, VolumeDiskType diskType) {
+        if (!pdsInfo.isVolumeDiskTypeSupported(diskType)) {
+            return null;
+        }
+        VolumeObject vo = (VolumeObject) vi;
+        vo.setVolumeDiskType(diskType);
+        this.driver.createVolume(vo);
+        return vo;
+    }
+
+    @Override
+    public boolean exists(VolumeInfo vi) {
+        VolumeVO vol = volumeDao.findByVolumeIdAndPoolId(vi.getId(), this.getId());
+        return (vol != null) ? true : false;
+    }
+
+    @Override
+    public boolean templateExists(TemplateInfo template) {
+        return (templatePrimaryStoreMgr.findTemplateOnPrimaryDataStore(template, this) != null) ? true : false;
+    }
+
+    @Override
+    public VolumeDiskType getDefaultDiskType() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public long getId() {
+        return pdsv.getId();
+    }
+
+    @Override
+    public TemplateOnPrimaryDataStoreInfo getTemplate(TemplateInfo template) {
+        return templatePrimaryStoreMgr.findTemplateOnPrimaryDataStore(template, this);
+    }
+
+    @Override
+    public VolumeInfo createVoluemFromBaseImage(VolumeInfo volume, TemplateOnPrimaryDataStoreInfo template) {
+        VolumeObject vo = (VolumeObject) volume;
+        vo.setVolumeDiskType(template.getTemplate().getDiskType());
+        this.driver.createVolumeFromBaseImage(vo, template);
+        return volume;
+    }
+
+    @Override
+    public boolean installTemplate(TemplateOnPrimaryDataStoreInfo template) {
+        // TODO Auto-generated method stub
+        return true;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
deleted file mode 100644
index 4d94d25..0000000
--- a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/DefaultPrimaryDataStoreImpl.java
+++ /dev/null
@@ -1,171 +0,0 @@
-package org.apache.cloudstack.storage.datastore;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint;
-import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
-import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
-import org.apache.cloudstack.engine.subsystem.api.storage.disktype.VolumeDiskType;
-import org.apache.cloudstack.storage.HypervisorHostEndPoint;
-import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreVO;
-import org.apache.cloudstack.storage.datastore.driver.PrimaryDataStoreDriver;
-import org.apache.cloudstack.storage.image.TemplateInfo;
-import org.apache.cloudstack.storage.volume.TemplateOnPrimaryDataStoreInfo;
-import org.apache.cloudstack.storage.volume.TemplatePrimaryDataStoreManager;
-import org.apache.cloudstack.storage.volume.VolumeObject;
-import org.apache.cloudstack.storage.volume.db.VolumeDao;
-import org.apache.cloudstack.storage.volume.db.VolumeVO;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.host.HostVO;
-import com.cloud.host.dao.HostDao;
-import com.cloud.hypervisor.Hypervisor.HypervisorType;
-import com.cloud.utils.component.ComponentInject;
-import edu.emory.mathcs.backport.java.util.Collections;
-
-public class DefaultPrimaryDataStoreImpl implements PrimaryDataStore {
-    private static final Logger s_logger = Logger.getLogger(DefaultPrimaryDataStoreImpl.class);
-    protected PrimaryDataStoreDriver driver;
-    protected PrimaryDataStoreVO pdsv;
-    protected PrimaryDataStoreInfo pdsInfo;
-    @Inject
-    private VolumeDao volumeDao;
-    @Inject
-    HostDao hostDao;
-    @Inject
-    TemplatePrimaryDataStoreManager templatePrimaryStoreMgr;
-
-    public DefaultPrimaryDataStoreImpl(PrimaryDataStoreDriver driver, PrimaryDataStoreVO pdsv, PrimaryDataStoreInfo pdsInfo) {
-        this.driver = driver;
-        this.pdsv = pdsv;
-        this.pdsInfo = pdsInfo;
-    }
-
-    @Override
-    public VolumeInfo getVolume(long id) {
-        VolumeVO volumeVO = volumeDao.findById(id);
-        VolumeObject vol = VolumeObject.getVolumeObject(this, volumeVO);
-        return vol;
-    }
-
-    @Override
-    public List<VolumeInfo> getVolumes() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public boolean deleteVolume(long id) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    public List<EndPoint> getEndPoints() {
-        Long clusterId = pdsv.getClusterId();
-        if (clusterId == null) {
-            return null;
-        }
-        List<EndPoint> endpoints = new ArrayList<EndPoint>();
-        List<HostVO> hosts = hostDao.findHypervisorHostInCluster(clusterId);
-        for (HostVO host : hosts) {
-            HypervisorHostEndPoint ep = new HypervisorHostEndPoint(host.getId());
-            ComponentInject.inject(ep);
-            endpoints.add(ep);
-        }
-        Collections.shuffle(endpoints);
-        return endpoints;
-    }
-
-    @Override
-    public PrimaryDataStoreInfo getDataStoreInfo() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public boolean isHypervisorSupported(HypervisorType hypervisor) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    public boolean isLocalStorageSupported() {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    public boolean isVolumeDiskTypeSupported(VolumeDiskType diskType) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    public long getCapacity() {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    @Override
-    public long getAvailableCapacity() {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    @Override
-    public VolumeObject createVolume(VolumeInfo vi, VolumeDiskType diskType) {
-        if (!pdsInfo.isVolumeDiskTypeSupported(diskType)) {
-            return null;
-        }
-        VolumeObject vo = (VolumeObject) vi;
-        vo.setVolumeDiskType(diskType);
-        this.driver.createVolume(vo);
-        return vo;
-    }
-
-    @Override
-    public boolean exists(VolumeInfo vi) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    public boolean templateExists(TemplateInfo template) {
-        return (templatePrimaryStoreMgr.findTemplateOnPrimaryDataStore(template, this) != null) ? true : false;
-    }
-
-    @Override
-    public VolumeDiskType getDefaultDiskType() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public long getId() {
-        return pdsv.getId();
-    }
-
-    @Override
-    public TemplateOnPrimaryDataStoreInfo getTemplate(TemplateInfo template) {
-        return templatePrimaryStoreMgr.findTemplateOnPrimaryDataStore(template, this);
-    }
-
-    @Override
-    public VolumeInfo createVoluemFromBaseImage(VolumeInfo volume, TemplateOnPrimaryDataStoreInfo template) {
-        VolumeObject vo = (VolumeObject) volume;
-        vo.setVolumeDiskType(template.getTemplate().getDiskType());
-        this.driver.createVolumeFromBaseImage(vo, template);
-        return volume;
-    }
-
-    @Override
-    public boolean installTemplate(TemplateOnPrimaryDataStoreInfo template) {
-        // TODO Auto-generated method stub
-        return true;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/driver/DefaultPrimaryDataStoreDriverImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/driver/DefaultPrimaryDataStoreDriverImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/driver/DefaultPrimaryDataStoreDriverImpl.java
index c3ecb6e..97b49cb 100644
--- a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/driver/DefaultPrimaryDataStoreDriverImpl.java
+++ b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/driver/DefaultPrimaryDataStoreDriverImpl.java
@@ -2,12 +2,12 @@ package org.apache.cloudstack.storage.datastore.driver;
 
 import java.util.List;
 
-import org.apache.cloudstack.engine.cloud.entity.api.VolumeEntity;
 import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint;
 import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
 import org.apache.cloudstack.storage.command.CreateVolumeAnswer;
 import org.apache.cloudstack.storage.command.CreateVolumeCommand;
 import org.apache.cloudstack.storage.command.CreateVolumeFromBaseImageCommand;
+import org.apache.cloudstack.storage.command.DeleteVolume;
 import org.apache.cloudstack.storage.to.ImageOnPrimayDataStoreTO;
 import org.apache.cloudstack.storage.to.VolumeTO;
 import org.apache.cloudstack.storage.volume.TemplateOnPrimaryDataStoreInfo;
@@ -28,34 +28,22 @@ public class DefaultPrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver
         // The default driver will send createvolume command to one of hosts
         // which can access its datastore
         List<EndPoint> endPoints = vol.getDataStore().getEndPoints();
-        int retries = 3;
         VolumeInfo volInfo = vol;
         CreateVolumeCommand createCmd = new CreateVolumeCommand(new VolumeTO(volInfo));
-        Answer answer = null;
-        int i = 0;
-        boolean result = false;
+        Answer answer = sendOutCommand(createCmd, endPoints);
 
-        for (EndPoint ep : endPoints) {
-            answer = ep.sendMessage(createCmd);
-            if (answer == null) {
-                if (i < retries) {
-                    s_logger.debug("create volume failed, retrying: " + i);
-                }
-                i++;
-            } else {
-                CreateVolumeAnswer volAnswer = (CreateVolumeAnswer) answer;
-                vol.setPath(volAnswer.getVolumeUuid());
-                result = true;
-            }
-        }
-
-        return result;
+        CreateVolumeAnswer volAnswer = (CreateVolumeAnswer) answer;
+        vol.setPath(volAnswer.getVolumeUuid());
+        return true;
     }
 
     @Override
     public boolean deleteVolume(VolumeObject vo) {
-        // TODO Auto-generated method stub
-        return false;
+        DeleteVolume cmd = new DeleteVolume((VolumeInfo)vo);
+        List<EndPoint> endPoints = vo.getDataStore().getEndPoints();
+        sendOutCommand(cmd, endPoints);
+
+        return true;
     }
 
     @Override
@@ -67,7 +55,7 @@ public class DefaultPrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver
     @Override
     public boolean revokeAccess(VolumeObject vol, EndPoint ep) {
         // TODO Auto-generated method stub
-        return false;
+        return true;
     }
 
     protected Answer sendOutCommand(Command cmd, List<EndPoint> endPoints) {
@@ -85,6 +73,15 @@ public class DefaultPrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver
                 break;
             }
         }
+        
+        if (answer == null || answer.getDetails() != null) {
+            if (answer == null) {
+                throw new CloudRuntimeException("Failed to created volume");
+            } else {
+                throw new CloudRuntimeException(answer.getDetails());
+            }
+        }
+        
         return answer;
     }
 
@@ -97,16 +94,20 @@ public class DefaultPrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver
 
         Answer answer = sendOutCommand(cmd, endPoints);
 
-        if (answer == null || answer.getDetails() != null) {
-            if (answer == null) {
-                throw new CloudRuntimeException("Failed to created volume");
-            } else {
-                throw new CloudRuntimeException(answer.getDetails());
-            }
-        } else {
-            CreateVolumeAnswer volAnswer = (CreateVolumeAnswer) answer;
-            volume.setPath(volAnswer.getVolumeUuid());
-            return true;
-        }
+        CreateVolumeAnswer volAnswer = (CreateVolumeAnswer) answer;
+        volume.setPath(volAnswer.getVolumeUuid());
+        return true;
+    }
+
+    @Override
+    public long getCapacity() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getAvailableCapacity() {
+        // TODO Auto-generated method stub
+        return 0;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/driver/PrimaryDataStoreDriver.java
----------------------------------------------------------------------
diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/driver/PrimaryDataStoreDriver.java b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/driver/PrimaryDataStoreDriver.java
index e3ff0b7..271ec38 100644
--- a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/driver/PrimaryDataStoreDriver.java
+++ b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/driver/PrimaryDataStoreDriver.java
@@ -14,4 +14,8 @@ public interface PrimaryDataStoreDriver {
     String grantAccess(VolumeObject vol, EndPoint ep);
 
     boolean revokeAccess(VolumeObject vol, EndPoint ep);
+    
+    long getCapacity();
+    
+    long getAvailableCapacity();
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/provider/DefaultPrimaryDatastoreProviderImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/provider/DefaultPrimaryDatastoreProviderImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/provider/DefaultPrimaryDatastoreProviderImpl.java
index cb2e674..7ea8a69 100644
--- a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/provider/DefaultPrimaryDatastoreProviderImpl.java
+++ b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/provider/DefaultPrimaryDatastoreProviderImpl.java
@@ -5,7 +5,7 @@ import java.util.Map;
 import javax.inject.Inject;
 
 import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
-import org.apache.cloudstack.storage.datastore.DefaultPrimaryDataStoreImpl;
+import org.apache.cloudstack.storage.datastore.DefaultPrimaryDataStore;
 import org.apache.cloudstack.storage.datastore.PrimaryDataStore;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreProviderVO;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreVO;
@@ -40,8 +40,7 @@ public class DefaultPrimaryDatastoreProviderImpl implements PrimaryDataStoreProv
             return null;
         }
 
-        PrimaryDataStore pds = new DefaultPrimaryDataStoreImpl(driver, dsv, null);
-        pds = ComponentInject.inject(pds);
+        PrimaryDataStore pds = DefaultPrimaryDataStore.createDataStore(driver, dsv, null);
         return pds;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java
----------------------------------------------------------------------
diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java
index f0eb1b5..f5e2068 100644
--- a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java
+++ b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java
@@ -68,7 +68,7 @@ public class VolumeObject implements VolumeInfo {
     }
 
     public PrimaryDataStoreInfo getDataStoreInfo() {
-        return dataStore.getDataStoreInfo();
+        return dataStore;
     }
 
     public Volume.State getState() {
@@ -136,7 +136,7 @@ public class VolumeObject implements VolumeInfo {
     }
 
     @Override
-    public Date getCreatedData() {
+    public Date getCreatedDate() {
         // TODO Auto-generated method stub
         return null;
     }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
index edb661a..25d05b2 100644
--- a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
+++ b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
@@ -83,7 +83,7 @@ public class VolumeServiceImpl implements VolumeService {
 
     @DB
     @Override
-    public boolean deleteVolume(long volumeId) {
+    public boolean deleteVolume(VolumeInfo volumeId) {
         return true;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/driver/SolidfirePrimaryDataStoreDriver.java
----------------------------------------------------------------------
diff --git a/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/driver/SolidfirePrimaryDataStoreDriver.java b/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/driver/SolidfirePrimaryDataStoreDriver.java
index 136bec1..bd3844a 100644
--- a/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/driver/SolidfirePrimaryDataStoreDriver.java
+++ b/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/driver/SolidfirePrimaryDataStoreDriver.java
@@ -37,4 +37,16 @@ public class SolidfirePrimaryDataStoreDriver implements PrimaryDataStoreDriver {
 		return false;
 	}
 
+    @Override
+    public long getCapacity() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getAvailableCapacity() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2c689adc/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/provider/SolidfirePrimaryDataStoreProvider.java
----------------------------------------------------------------------
diff --git a/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/provider/SolidfirePrimaryDataStoreProvider.java b/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/provider/SolidfirePrimaryDataStoreProvider.java
index ef63423..883346c 100644
--- a/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/provider/SolidfirePrimaryDataStoreProvider.java
+++ b/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/provider/SolidfirePrimaryDataStoreProvider.java
@@ -2,7 +2,7 @@ package org.apache.cloudstack.storage.datastore.provider;
 
 import javax.inject.Inject;
 
-import org.apache.cloudstack.storage.datastore.DefaultPrimaryDataStoreImpl;
+import org.apache.cloudstack.storage.datastore.DefaultPrimaryDataStore;
 import org.apache.cloudstack.storage.datastore.PrimaryDataStore;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreVO;
@@ -36,7 +36,7 @@ public class SolidfirePrimaryDataStoreProvider extends
             return null;
         }
 
-        PrimaryDataStore pds = new DefaultPrimaryDataStoreImpl(driver, dsv, null);
+        PrimaryDataStore pds = new DefaultPrimaryDataStore(driver, dsv, null);
         pds = ComponentInject.inject(pds);
         return pds;
 	}