diff --git a/api/src/com/cloud/storage/StoragePool.java b/api/src/com/cloud/storage/StoragePool.java index 497523d7e38..4b7fe3a5c1a 100644 --- a/api/src/com/cloud/storage/StoragePool.java +++ b/api/src/com/cloud/storage/StoragePool.java @@ -103,4 +103,14 @@ public interface StoragePool { int getPort(); Long getPodId(); + + /** + * @return + */ + String getStorageProvider(); + + /** + * @return + */ + String getStorageType(); } diff --git a/api/src/com/cloud/storage/StoragePoolStatus.java b/api/src/com/cloud/storage/StoragePoolStatus.java index 0c949614412..94dd686a8f0 100644 --- a/api/src/com/cloud/storage/StoragePoolStatus.java +++ b/api/src/com/cloud/storage/StoragePoolStatus.java @@ -17,6 +17,7 @@ package com.cloud.storage; public enum StoragePoolStatus { + Creating, Up, PrepareForMaintenance, ErrorInMaintenance, diff --git a/core/src/com/cloud/storage/StoragePoolVO.java b/core/src/com/cloud/storage/StoragePoolVO.java index 5fecefb756d..f6bb210871b 100644 --- a/core/src/com/cloud/storage/StoragePoolVO.java +++ b/core/src/com/cloud/storage/StoragePoolVO.java @@ -50,7 +50,7 @@ public class StoragePoolVO implements StoragePool, Identity { @Column(name="pool_type", updatable=false, nullable=false, length=32) @Enumerated(value=EnumType.STRING) - private StoragePoolType poolType; + private StoragePoolType protocol; @Column(name=GenericDao.CREATED_COLUMN) Date created; @@ -78,6 +78,12 @@ public class StoragePoolVO implements StoragePool, Identity { @Enumerated(value=EnumType.STRING) private StoragePoolStatus status; + @Column(name="storage_provider", updatable=true, nullable=false) + private String storageProvider; + + @Column(name="storage_type", nullable=false) + private String storageType; + @Override public long getId() { return id; @@ -104,7 +110,7 @@ public class StoragePoolVO implements StoragePool, Identity { @Override public StoragePoolType getPoolType() { - return poolType; + return protocol; } @Override @@ -130,6 +136,24 @@ public class StoragePoolVO implements StoragePool, Identity { public long getAvailableBytes() { return availableBytes; } + + @Override + public String getStorageProvider() { + return storageProvider; + } + + public void setStorageProvider(String provider) { + storageProvider = provider; + } + + @Override + public String getStorageType() { + return storageType; + } + + public void setStorageType(String type) { + storageType = type; + } @Override public long getCapacityBytes() { @@ -189,7 +213,7 @@ public class StoragePoolVO implements StoragePool, Identity { this.name = name; this.id = poolId; this.uuid = uuid; - this.poolType = type; + this.protocol = type; this.dataCenterId = dataCenterId; this.availableBytes = availableBytes; this.capacityBytes = capacityBytes; @@ -197,29 +221,29 @@ public class StoragePoolVO implements StoragePool, Identity { this.path = hostPath; this.port = port; this.podId = podId; - this.setStatus(StoragePoolStatus.Up); + this.setStatus(StoragePoolStatus.Creating); } public StoragePoolVO(StoragePoolVO that) { - this(that.id, that.name, that.uuid, that.poolType, that.dataCenterId, that.podId, that.availableBytes, that.capacityBytes, that.hostAddress, that.port, that.path); + this(that.id, that.name, that.uuid, that.protocol, that.dataCenterId, that.podId, that.availableBytes, that.capacityBytes, that.hostAddress, that.port, that.path); } public StoragePoolVO(StoragePoolType type, String hostAddress, int port, String path) { - this.poolType = type; + this.protocol = type; this.hostAddress = hostAddress; this.port = port; this.path = path; - this.setStatus(StoragePoolStatus.Up); + this.setStatus(StoragePoolStatus.Creating); this.uuid = UUID.randomUUID().toString(); } public StoragePoolVO(StoragePoolType type, String hostAddress, int port, String path, String userInfo) { - this.poolType = type; + this.protocol = type; this.hostAddress = hostAddress; this.port = port; this.path = path; this.userInfo = userInfo; - this.setStatus(StoragePoolStatus.Up); + this.setStatus(StoragePoolStatus.Creating); this.uuid = UUID.randomUUID().toString(); } @@ -259,12 +283,12 @@ public class StoragePoolVO implements StoragePool, Identity { @Override public boolean isShared() { - return poolType.isShared(); + return protocol.isShared(); } @Override public boolean isLocal() { - return !poolType.isShared(); + return !protocol.isShared(); } @Transient @@ -315,6 +339,6 @@ public class StoragePoolVO implements StoragePool, Identity { @Override public String toString() { - return new StringBuilder("Pool[").append(id).append("|").append(poolType).append("]").toString(); + return new StringBuilder("Pool[").append(id).append("|").append(protocol).append("]").toString(); } } diff --git a/platform/api/.classpath b/platform/api/.classpath index 1275c985df6..c9142940461 100755 --- a/platform/api/.classpath +++ b/platform/api/.classpath @@ -1,8 +1,7 @@ - - - - - + + + + diff --git a/platform/api/.project b/platform/api/.project index 6515efe79b0..af79ee699af 100755 --- a/platform/api/.project +++ b/platform/api/.project @@ -10,8 +10,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature diff --git a/platform/api/pom.xml b/platform/api/pom.xml index 9d59e0bc143..fadb9afb253 100644 --- a/platform/api/pom.xml +++ b/platform/api/pom.xml @@ -1,13 +1,24 @@ - + 4.0.0 - cloudstack cloud-platform-api - 0.0.1-SNAPSHOT + Apache CloudStack platform API + + com.cloud + cloud-parent + 4.0.0-SNAPSHOT + ../../parent/pom.xml + - - com.cloud - cloud-api - 4.0.0-SNAPSHOT - + + com.cloud + cloud-api + ${project.version} + + + install + src + + \ No newline at end of file diff --git a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStore.java b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStore.java index c21c6138e32..899f17f6558 100644 --- a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStore.java +++ b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStore.java @@ -39,11 +39,14 @@ public interface DataStore { String getURI(); String getUUID(); + long getCluterId(); + long getPodId(); + long getZoneId(); StoreType getType(); StoreScope getScope(); Long getId(); DataStoreDriver getDataStoreDriver(); - void setEndPointSelector(DataStoreEndPointSelector selector); + DataStoreEndPointSelector getEndPointSelector(); FileSystem getFileSystem(); VolumeStrategy getVolumeStrategy(); SnapshotStrategy getSnapshotStrategy(); diff --git a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreDriver.java b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreDriver.java index f8987f71508..1b285bb71a2 100644 --- a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreDriver.java +++ b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreDriver.java @@ -18,11 +18,15 @@ */ package org.apache.cloudstack.platform.subsystem.api.storage; +import com.cloud.agent.api.Answer; +import com.cloud.agent.api.Command; + public interface DataStoreDriver { String getDriverType(); DataObject create(DataObject obj); DataObject copy(DataObject src, DataStore dest); DataObject copy(DataObject src, DataObject dest); DataObject move(DataObject src, DataObject dest); + Answer sendMessage(DataStoreEndPoint dsep, Command cmd); boolean delete(DataObject obj); } diff --git a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreEndPoint.java b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreEndPoint.java index 06bde0d843d..92f431a1923 100644 --- a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreEndPoint.java +++ b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreEndPoint.java @@ -1,5 +1,19 @@ package org.apache.cloudstack.platform.subsystem.api.storage; -public interface DataStoreEndPoint { - +public class DataStoreEndPoint { + protected long hostId; + protected String privIp; + + public DataStoreEndPoint(long host, String ip) { + hostId = host; + privIp = ip; + } + + public long getHostId() { + return hostId; + } + + public String getPrivateIp() { + return privIp; + } } diff --git a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreEndPointSelector.java b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreEndPointSelector.java index 6493baa2d5a..df6d96c8653 100644 --- a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreEndPointSelector.java +++ b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreEndPointSelector.java @@ -3,5 +3,5 @@ package org.apache.cloudstack.platform.subsystem.api.storage; import java.util.List; public interface DataStoreEndPointSelector { - List getEndPoints(DataStore ds); + List getEndPoints(); } diff --git a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreLifeCycle.java b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreLifeCycle.java index 6d2294e013e..46be5f5fc95 100644 --- a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreLifeCycle.java +++ b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataStoreLifeCycle.java @@ -5,7 +5,7 @@ public interface DataStoreLifeCycle { HOSTUP, HOSTDOWN, } - void create(); + void add(); void delete(); void enable(); void disable(); diff --git a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/StorageProvider.java b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/StorageProvider.java index 0372f303d5f..95391c30826 100644 --- a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/StorageProvider.java +++ b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/StorageProvider.java @@ -7,13 +7,14 @@ import org.apache.cloudstack.platform.subsystem.api.storage.DataStore.StoreType; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.storage.StoragePool; +import com.cloud.utils.component.Adapter; -public interface StorageProvider { +public interface StorageProvider extends Adapter { List supportedHypervisors(); String getProviderName(); StoreType supportedStoreType(); void configure(Map storeProviderInfo); - DataStore createDataStore(HypervisorType hypervisor, DataStoreConfigurator dsc); + DataStore addDataStore(StoragePool sp, String uri, Map params); DataStore getDataStore(StoragePool pool); Map> getDataStoreConfigs(); } diff --git a/platform/storage/pom.xml b/platform/storage/pom.xml index 49cf6b74891..852c7d7f035 100644 --- a/platform/storage/pom.xml +++ b/platform/storage/pom.xml @@ -1,6 +1,38 @@ 4.0.0 - com.cloud cloud-platform-storage - 0.0.1-SNAPSHOT + Apache CloudStack Platform Storage + + com.cloud + cloud-parent + 4.0.0-SNAPSHOT + ../../parent/pom.xml + + + + com.cloud + cloud-api + ${project.version} + + + com.cloud + cloud-core + ${project.version} + + + com.cloud + cloud-server + ${project.version} + + + com.cloud + cloud-platform-api + ${project.version} + + + + install + src + + \ No newline at end of file diff --git a/platform/storage/src/org/apache/cloudstack/storage/DefaultPrimaryStorageProvider.java b/platform/storage/src/org/apache/cloudstack/storage/DefaultPrimaryStorageProvider.java index f7ae5dd6baf..ea2dfe35458 100644 --- a/platform/storage/src/org/apache/cloudstack/storage/DefaultPrimaryStorageProvider.java +++ b/platform/storage/src/org/apache/cloudstack/storage/DefaultPrimaryStorageProvider.java @@ -7,8 +7,11 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.naming.ConfigurationException; + import org.apache.cloudstack.platform.subsystem.api.storage.DataStore; import org.apache.cloudstack.platform.subsystem.api.storage.DataStoreConfigurator; +import org.apache.cloudstack.platform.subsystem.api.storage.DataStoreLifeCycle; import org.apache.cloudstack.platform.subsystem.api.storage.StorageProvider; import org.apache.cloudstack.platform.subsystem.api.storage.DataStore.StoreType; import org.apache.cloudstack.storage.datastoreconfigurator.NfsDataStoreConfigurator; @@ -31,13 +34,8 @@ import com.cloud.utils.component.Inject; public class DefaultPrimaryStorageProvider implements StorageProvider { private String _name = DefaultPrimaryStorageProvider.class.toString(); static Map> _supportedProtocols; - - @Inject - protected DataCenterDao _dcDao; @Inject protected ClusterDao _clusterDao; - @Inject - protected StoragePoolDao _storagePoolDao; public List supportedHypervisors() { List hypervisors = new ArrayList(); @@ -61,61 +59,6 @@ public class DefaultPrimaryStorageProvider implements StorageProvider { // TODO Auto-generated method stub } - - public DataStore createDataStore(HypervisorType hypervisor, - long dcId, - long podId, - long clusterId, - String name, - String url, - Map extra) { - URI uri; - try { - uri = new URI(url); - } catch (URISyntaxException e) { - throw new InvalidParameterValueException("invalide url" + url); - } - - String protocol = uri.getScheme(); - if (protocol == null) { - throw new InvalidParameterValueException("the protocol can't be null"); - } - - Map dscs = _supportedProtocols.get(hypervisor); - if (dscs.isEmpty()) { - throw new InvalidParameterValueException("Doesn't support this hypervisor"); - } - - DataStoreConfigurator dsc = dscs.get(protocol); - if (dsc == null) { - throw new InvalidParameterValueException("Doesn't support this protocol"); - } - - Map configs = dsc.getConfigs(uri, extra); - dsc.validate(configs); - StoragePoolVO spool = (StoragePoolVO)dsc.getStoragePool(configs); - DataCenterVO zone = _dcDao.findById(dcId); - if (zone == null) { - throw new InvalidParameterValueException("unable to find zone by id " + dcId); - } - StoragePoolVO existingPool = _storagePoolDao.findPoolByUUID(spool.getUuid()); - if (existingPool != null) { - throw new InvalidParameterValueException("The same storage pool was added already"); - } - - long poolId = _storagePoolDao.getNextInSequence(Long.class, "id"); - spool.setId(poolId); - spool.setDataCenterId(dcId); - spool.setPodId(podId); - spool.setName(name); - spool.setClusterId(clusterId); - spool.setStatus(StoragePoolStatus.Up); - spool = _storagePoolDao.persist(spool, extra); - - DataStore ds = dsc.getDataStore(spool); - - return ds; - } public Map> getDataStoreConfigs() { return _supportedProtocols; @@ -130,7 +73,7 @@ public class DefaultPrimaryStorageProvider implements StorageProvider { // TODO Auto-generated method stub return null; } - + public DataStore getDataStore(StoragePool pool) { ClusterVO clu = _clusterDao.findById(pool.getClusterId()); HypervisorType hy = clu.getHypervisorType(); @@ -139,4 +82,56 @@ public class DefaultPrimaryStorageProvider implements StorageProvider { return dsc.getDataStore(pool); } + public boolean configure(String name, Map params) throws ConfigurationException { + // TODO Auto-generated method stub + return false; + } + + public String getName() { + // TODO Auto-generated method stub + return null; + } + + public boolean start() { + // TODO Auto-generated method stub + return false; + } + + public boolean stop() { + // TODO Auto-generated method stub + return false; + } + + public DataStore addDataStore(StoragePool spool, String url, Map params) { + URI uri; + try { + uri = new URI(url); + } catch (URISyntaxException e) { + throw new InvalidParameterValueException("invalide url" + url); + } + + String protocol = uri.getScheme(); + if (protocol == null) { + throw new InvalidParameterValueException("the protocol can't be null"); + } + + ClusterVO cluster = _clusterDao.findById(spool.getClusterId()); + + Map dscs = _supportedProtocols.get(cluster.getHypervisorType()); + if (dscs.isEmpty()) { + throw new InvalidParameterValueException("Doesn't support this hypervisor"); + } + + DataStoreConfigurator dsc = dscs.get(protocol); + if (dsc == null) { + throw new InvalidParameterValueException("Doesn't support this protocol"); + } + + Map configs = dsc.getConfigs(uri, params); + dsc.validate(configs); + DataStore ds = dsc.getDataStore(spool); + + return ds; + } + } diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastore/XenDataStoreDriver.java b/platform/storage/src/org/apache/cloudstack/storage/datastore/XenDataStoreDriver.java index 479b9500e67..0c2ee37f094 100644 --- a/platform/storage/src/org/apache/cloudstack/storage/datastore/XenDataStoreDriver.java +++ b/platform/storage/src/org/apache/cloudstack/storage/datastore/XenDataStoreDriver.java @@ -5,7 +5,11 @@ import org.apache.cloudstack.platform.subsystem.api.storage.DataStore; import org.apache.cloudstack.platform.subsystem.api.storage.DataStoreDriver; public class XenDataStoreDriver implements DataStoreDriver { - + protected DataStore _ds; + public XenDataStoreDriver(DataStore ds) { + _ds = ds; + } + public String getDriverType() { // TODO Auto-generated method stub return null; diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastoreconfigurator/NfsDataStoreConfigurator.java b/platform/storage/src/org/apache/cloudstack/storage/datastoreconfigurator/NfsDataStoreConfigurator.java index c154bd07ad6..6a01834dd16 100644 --- a/platform/storage/src/org/apache/cloudstack/storage/datastoreconfigurator/NfsDataStoreConfigurator.java +++ b/platform/storage/src/org/apache/cloudstack/storage/datastoreconfigurator/NfsDataStoreConfigurator.java @@ -10,6 +10,7 @@ import java.util.UUID; import org.apache.cloudstack.platform.subsystem.api.storage.DataStore; import org.apache.cloudstack.platform.subsystem.api.storage.DataStoreConfigurator; +import com.cloud.exception.InvalidParameterValueException; import com.cloud.storage.StoragePool; import com.cloud.storage.StoragePoolVO; import com.cloud.storage.Storage.StoragePoolType; @@ -48,19 +49,12 @@ public abstract class NfsDataStoreConfigurator implements DataStoreConfigurator } public boolean validate(Map configs) { - // TODO Auto-generated method stub - return false; - } - - public StoragePoolVO getStoragePool(Map configs) { - String nfsServer = configs.get(NfsConfigName.SERVER.toString()); - String nfsPath = configs.get(NfsConfigName.PATH.toString()); - String uuid = UUID.nameUUIDFromBytes(new String(nfsServer + nfsPath).getBytes()).toString(); - StoragePoolVO pool = new StoragePoolVO(StoragePoolType.NetworkFilesystem, - nfsServer, -1, - nfsPath); - pool.setUuid(uuid); - return pool; + String uriHost = configs.get(NfsConfigName.SERVER.toString()); + String uriPath = configs.get(NfsConfigName.PATH.toString()); + if (uriHost == null || uriPath == null || uriHost.trim().isEmpty() || uriPath.trim().isEmpty()) { + throw new InvalidParameterValueException("host or path is null, should be nfs://hostname/path"); + } + return true; } public DataStore getDataStore(StoragePool pool) { diff --git a/platform/storage/src/org/apache/cloudstack/storage/datastoreconfigurator/XenNfsDataStoreConfigurator.java b/platform/storage/src/org/apache/cloudstack/storage/datastoreconfigurator/XenNfsDataStoreConfigurator.java index dd240d808e7..beed2627035 100644 --- a/platform/storage/src/org/apache/cloudstack/storage/datastoreconfigurator/XenNfsDataStoreConfigurator.java +++ b/platform/storage/src/org/apache/cloudstack/storage/datastoreconfigurator/XenNfsDataStoreConfigurator.java @@ -1,12 +1,14 @@ package org.apache.cloudstack.storage.datastoreconfigurator; +import java.util.Map; + import org.apache.cloudstack.platform.subsystem.api.storage.DataStore; import org.apache.cloudstack.platform.subsystem.api.storage.DataStore.StoreType; import org.apache.cloudstack.storage.datastore.DefaultDataStore; import org.apache.cloudstack.storage.datastore.XenDataStoreDriver; import org.apache.cloudstack.storage.epselector.DefaultPrimaryEndpointSelector; import org.apache.cloudstack.storage.filesystem.DefaultFileSystem; -import org.apache.cloudstack.storage.lifecycle.DefaultDataStoreLifeCycle; +import org.apache.cloudstack.storage.lifecycle.DefaultPrimaryDataStoreLifeCycle; import org.apache.cloudstack.storage.strategy.XenBackupStrategy; import org.apache.cloudstack.storage.strategy.XenSnapshotStrategy; import org.apache.cloudstack.storage.strategy.XenVolumeStrategy; @@ -17,17 +19,21 @@ public class XenNfsDataStoreConfigurator extends NfsDataStoreConfigurator { @Override public DataStore getDataStore(StoragePool pool) { DefaultDataStore ds = new DefaultDataStore(); - ds.setBackupStrategy(new XenBackupStrategy()); - ds.setVolumeStrategy(new XenVolumeStrategy()); - ds.setSnapshotStrategy(new XenSnapshotStrategy()); - ds.setEndPointSelector(new DefaultPrimaryEndpointSelector()); - ds.setFileSystem(new DefaultFileSystem()); + ds.setEndPointSelector(new DefaultPrimaryEndpointSelector(ds)); ds.setId(pool.getId()); ds.setType(StoreType.Primary); ds.setURI(pool.getHostAddress() + "/" + pool.getPath()); ds.setUUID(pool.getUuid()); - ds.setDataStoreDriver(new XenDataStoreDriver()); - ds.setLifeCycle(new DefaultDataStoreLifeCycle(ds)); + ds.setDataStoreDriver(new XenDataStoreDriver(ds)); + ds.setBackupStrategy(new XenBackupStrategy(ds)); + ds.setVolumeStrategy(new XenVolumeStrategy(ds)); + ds.setSnapshotStrategy(new XenSnapshotStrategy(ds)); + ds.setLifeCycle(new DefaultPrimaryDataStoreLifeCycle(ds)); return ds; } + + public StoragePool getStoragePool(Map configs) { + // TODO Auto-generated method stub + return null; + } } diff --git a/platform/storage/src/org/apache/cloudstack/storage/epselector/DefaultPrimaryEndpointSelector.java b/platform/storage/src/org/apache/cloudstack/storage/epselector/DefaultPrimaryEndpointSelector.java index 9b18f2c47f0..97d7375db38 100644 --- a/platform/storage/src/org/apache/cloudstack/storage/epselector/DefaultPrimaryEndpointSelector.java +++ b/platform/storage/src/org/apache/cloudstack/storage/epselector/DefaultPrimaryEndpointSelector.java @@ -1,17 +1,34 @@ package org.apache.cloudstack.storage.epselector; +import java.util.ArrayList; import java.util.List; import org.apache.cloudstack.platform.subsystem.api.storage.DataStore; import org.apache.cloudstack.platform.subsystem.api.storage.DataStoreEndPoint; import org.apache.cloudstack.platform.subsystem.api.storage.DataStoreEndPointSelector; +import com.cloud.host.Host; +import com.cloud.host.HostVO; +import com.cloud.resource.ResourceManager; +import com.cloud.utils.component.Inject; + public class DefaultPrimaryEndpointSelector implements DataStoreEndPointSelector { - - public List getEndPoints(DataStore ds) { - // TODO Auto-generated method stub - return null; + protected DataStore _ds; + + @Inject + protected ResourceManager _resourceMgr; + + public DefaultPrimaryEndpointSelector(DataStore ds) { + _ds = ds; + } + + public List getEndPoints() { + List allHosts = _resourceMgr.listAllUpAndEnabledHosts(Host.Type.Routing, _ds.getCluterId(), _ds.getPodId(), _ds.getZoneId()); + List dseps = new ArrayList(); + for (HostVO host : allHosts) { + dseps.add(new DataStoreEndPoint(host.getId(), host.getPrivateIpAddress())); + } + return dseps; } - } diff --git a/platform/storage/src/org/apache/cloudstack/storage/lifecycle/DefaultDataStoreLifeCycle.java b/platform/storage/src/org/apache/cloudstack/storage/lifecycle/DefaultDataStoreLifeCycle.java deleted file mode 100644 index 723c5507a4a..00000000000 --- a/platform/storage/src/org/apache/cloudstack/storage/lifecycle/DefaultDataStoreLifeCycle.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.apache.cloudstack.storage.lifecycle; - -import org.apache.cloudstack.platform.subsystem.api.storage.DataStore; -import org.apache.cloudstack.platform.subsystem.api.storage.DataStoreLifeCycle; - -public class DefaultDataStoreLifeCycle implements DataStoreLifeCycle { - private DataStore _ds; - public DefaultDataStoreLifeCycle(DataStore ds) { - this._ds = ds; - } - - - public void create() { - // TODO Auto-generated method stub - - } - - public void delete() { - // TODO Auto-generated method stub - - } - - public void enable() { - // TODO Auto-generated method stub - - } - - public void disable() { - // TODO Auto-generated method stub - - } - - public void processEvent(DataStoreEvent event, Object... objs) { - // TODO Auto-generated method stub - - } - -} diff --git a/platform/storage/src/org/apache/cloudstack/storage/strategy/XenBackupStrategy.java b/platform/storage/src/org/apache/cloudstack/storage/strategy/XenBackupStrategy.java index acf125d4f2d..5ac839d00e3 100644 --- a/platform/storage/src/org/apache/cloudstack/storage/strategy/XenBackupStrategy.java +++ b/platform/storage/src/org/apache/cloudstack/storage/strategy/XenBackupStrategy.java @@ -1,7 +1,11 @@ package org.apache.cloudstack.storage.strategy; import org.apache.cloudstack.platform.subsystem.api.storage.BackupStrategy; +import org.apache.cloudstack.platform.subsystem.api.storage.DataStore; public class XenBackupStrategy implements BackupStrategy { - + protected DataStore _ds; + public XenBackupStrategy(DataStore ds) { + _ds = ds; + } } diff --git a/platform/storage/src/org/apache/cloudstack/storage/strategy/XenSnapshotStrategy.java b/platform/storage/src/org/apache/cloudstack/storage/strategy/XenSnapshotStrategy.java index c78b99ed63a..1b938806605 100644 --- a/platform/storage/src/org/apache/cloudstack/storage/strategy/XenSnapshotStrategy.java +++ b/platform/storage/src/org/apache/cloudstack/storage/strategy/XenSnapshotStrategy.java @@ -1,7 +1,11 @@ package org.apache.cloudstack.storage.strategy; +import org.apache.cloudstack.platform.subsystem.api.storage.DataStore; import org.apache.cloudstack.platform.subsystem.api.storage.SnapshotStrategy; public class XenSnapshotStrategy implements SnapshotStrategy { - + protected DataStore _ds; + public XenSnapshotStrategy(DataStore ds) { + _ds = ds; + } } diff --git a/platform/storage/src/org/apache/cloudstack/storage/strategy/XenVolumeStrategy.java b/platform/storage/src/org/apache/cloudstack/storage/strategy/XenVolumeStrategy.java index 48e7b1a4d31..4015fec88b1 100644 --- a/platform/storage/src/org/apache/cloudstack/storage/strategy/XenVolumeStrategy.java +++ b/platform/storage/src/org/apache/cloudstack/storage/strategy/XenVolumeStrategy.java @@ -1,12 +1,17 @@ package org.apache.cloudstack.storage.strategy; +import org.apache.cloudstack.platform.subsystem.api.storage.DataStore; import org.apache.cloudstack.platform.subsystem.api.storage.Snapshot; import org.apache.cloudstack.platform.subsystem.api.storage.Template; import org.apache.cloudstack.platform.subsystem.api.storage.Volume; import org.apache.cloudstack.platform.subsystem.api.storage.VolumeStrategy; public class XenVolumeStrategy implements VolumeStrategy { - + protected DataStore _ds; + public XenVolumeStrategy(DataStore ds) { + _ds = ds; + } + public Volume createVolume(Volume vol) { // TODO Auto-generated method stub return null;