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;
}