diff --git a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreTO.java b/api/src/com/cloud/agent/api/to/DataStoreTO.java similarity index 92% rename from engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreTO.java rename to api/src/com/cloud/agent/api/to/DataStoreTO.java index 5886bdec366..9014f8e2b81 100644 --- a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreTO.java +++ b/api/src/com/cloud/agent/api/to/DataStoreTO.java @@ -16,7 +16,10 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.cloudstack.engine.subsystem.api.storage; +package com.cloud.agent.api.to; + +import com.cloud.storage.DataStoreRole; + public interface DataStoreTO { public DataStoreRole getRole(); diff --git a/api/src/com/cloud/agent/api/to/S3TO.java b/api/src/com/cloud/agent/api/to/S3TO.java index d556cb6d05d..10207288185 100644 --- a/api/src/com/cloud/agent/api/to/S3TO.java +++ b/api/src/com/cloud/agent/api/to/S3TO.java @@ -18,9 +18,10 @@ package com.cloud.agent.api.to; import java.util.Date; +import com.cloud.storage.DataStoreRole; import com.cloud.utils.S3Utils; -public final class S3TO implements S3Utils.ClientOptions { +public final class S3TO implements S3Utils.ClientOptions, DataStoreTO { private Long id; private String uuid; @@ -249,4 +250,10 @@ public final class S3TO implements S3Utils.ClientOptions { this.created = created; } + @Override + public DataStoreRole getRole() { + return DataStoreRole.Image; + } + + } diff --git a/api/src/com/cloud/agent/api/to/SwiftTO.java b/api/src/com/cloud/agent/api/to/SwiftTO.java index 32742c7d0e3..e1697f91041 100644 --- a/api/src/com/cloud/agent/api/to/SwiftTO.java +++ b/api/src/com/cloud/agent/api/to/SwiftTO.java @@ -16,7 +16,9 @@ // under the License. package com.cloud.agent.api.to; -public class SwiftTO { +import com.cloud.storage.DataStoreRole; + +public class SwiftTO implements DataStoreTO { Long id; String url; String account; @@ -54,5 +56,11 @@ public class SwiftTO { return key; } + @Override + public DataStoreRole getRole() { + return DataStoreRole.Image; + } + + } diff --git a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreRole.java b/api/src/com/cloud/storage/DataStoreRole.java similarity index 96% rename from engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreRole.java rename to api/src/com/cloud/storage/DataStoreRole.java index a45ca7a6c8e..0448d29e75e 100644 --- a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreRole.java +++ b/api/src/com/cloud/storage/DataStoreRole.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.cloudstack.engine.subsystem.api.storage; +package com.cloud.storage; import com.cloud.utils.exception.CloudRuntimeException; diff --git a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStore.java b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStore.java index d20167bbba0..c0570a9148d 100644 --- a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStore.java +++ b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStore.java @@ -16,6 +16,9 @@ // under the License. package org.apache.cloudstack.engine.subsystem.api.storage; +import com.cloud.agent.api.to.DataStoreTO; +import com.cloud.storage.DataStoreRole; + public interface DataStore { DataStoreDriver getDriver(); DataStoreRole getRole(); diff --git a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreDriver.java b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreDriver.java index f79d349ff0d..e4986d675e0 100644 --- a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreDriver.java +++ b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreDriver.java @@ -22,6 +22,8 @@ import java.util.Set; import org.apache.cloudstack.framework.async.AsyncCompletionCallback; +import com.cloud.agent.api.to.DataStoreTO; + public interface DataStoreDriver { public String grantAccess(DataObject data, EndPoint ep); public boolean revokeAccess(DataObject data, EndPoint ep); @@ -32,4 +34,5 @@ public interface DataStoreDriver { public boolean canCopy(DataObject srcData, DataObject destData); public void resize(DataObject data, AsyncCompletionCallback callback); public DataTO getTO(DataObject data); + public DataStoreTO getStoreTO(DataStore store); } diff --git a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreManager.java b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreManager.java index 1a36c8ca45d..096a1fd1497 100644 --- a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreManager.java +++ b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreManager.java @@ -21,6 +21,8 @@ package org.apache.cloudstack.engine.subsystem.api.storage; import java.util.List; import java.util.Map; +import com.cloud.storage.DataStoreRole; + public interface DataStoreManager { public DataStore getDataStore(long storeId, DataStoreRole role); diff --git a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataTO.java b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataTO.java index cd437459d84..9e268943865 100644 --- a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataTO.java +++ b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataTO.java @@ -18,6 +18,8 @@ */ package org.apache.cloudstack.engine.subsystem.api.storage; +import com.cloud.agent.api.to.DataStoreTO; + public interface DataTO { public DataObjectType getObjectType(); public DataStoreTO getDataStore(); diff --git a/engine/api/src/org/apache/cloudstack/storage/datastore/db/ImageStoreVO.java b/engine/api/src/org/apache/cloudstack/storage/datastore/db/ImageStoreVO.java index 5503df069dd..39b74d00e77 100644 --- a/engine/api/src/org/apache/cloudstack/storage/datastore/db/ImageStoreVO.java +++ b/engine/api/src/org/apache/cloudstack/storage/datastore/db/ImageStoreVO.java @@ -28,10 +28,10 @@ import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.TableGenerator; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.ImageStore; import com.cloud.storage.ScopeType; import com.cloud.utils.db.GenericDao; diff --git a/engine/storage/image/src/org/apache/cloudstack/storage/image/ImageDataFactoryImpl.java b/engine/storage/image/src/org/apache/cloudstack/storage/image/ImageDataFactoryImpl.java index a7b9c42eec0..37204bf0386 100644 --- a/engine/storage/image/src/org/apache/cloudstack/storage/image/ImageDataFactoryImpl.java +++ b/engine/storage/image/src/org/apache/cloudstack/storage/image/ImageDataFactoryImpl.java @@ -25,7 +25,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectType; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.ImageDataFactory; import org.apache.cloudstack.engine.subsystem.api.storage.TemplateInfo; import org.apache.cloudstack.storage.datastore.ObjectInDataStoreManager; @@ -33,6 +32,7 @@ import org.apache.cloudstack.storage.image.store.TemplateObject; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.VMTemplateStoragePoolVO; import com.cloud.storage.VMTemplateVO; import com.cloud.storage.dao.VMTemplateDao; diff --git a/engine/storage/image/src/org/apache/cloudstack/storage/image/manager/ImageStoreProviderManagerImpl.java b/engine/storage/image/src/org/apache/cloudstack/storage/image/manager/ImageStoreProviderManagerImpl.java index a1096d31fad..c14e2d91af6 100644 --- a/engine/storage/image/src/org/apache/cloudstack/storage/image/manager/ImageStoreProviderManagerImpl.java +++ b/engine/storage/image/src/org/apache/cloudstack/storage/image/manager/ImageStoreProviderManagerImpl.java @@ -28,7 +28,6 @@ import javax.inject.Inject; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProviderManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.ImageStoreProvider; import org.apache.cloudstack.engine.subsystem.api.storage.Scope; import org.apache.cloudstack.engine.subsystem.api.storage.ZoneScope; @@ -41,6 +40,7 @@ import org.apache.cloudstack.storage.image.store.ImageStoreImpl; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.ScopeType; import com.cloud.storage.dao.VMTemplateDao; import com.cloud.utils.db.SearchCriteria.Op; diff --git a/engine/storage/image/src/org/apache/cloudstack/storage/image/store/ImageStoreImpl.java b/engine/storage/image/src/org/apache/cloudstack/storage/image/store/ImageStoreImpl.java index 4cd70caa311..4989b2629a2 100644 --- a/engine/storage/image/src/org/apache/cloudstack/storage/image/store/ImageStoreImpl.java +++ b/engine/storage/image/src/org/apache/cloudstack/storage/image/store/ImageStoreImpl.java @@ -18,14 +18,13 @@ */ package org.apache.cloudstack.storage.image.store; +import java.util.Date; import java.util.Set; import javax.inject.Inject; import org.apache.cloudstack.engine.subsystem.api.storage.DataObject; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreDriver; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreTO; import org.apache.cloudstack.engine.subsystem.api.storage.ImageStoreProvider; import org.apache.cloudstack.engine.subsystem.api.storage.Scope; import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotInfo; @@ -37,6 +36,8 @@ import org.apache.cloudstack.storage.datastore.db.ImageStoreVO; import org.apache.cloudstack.storage.image.ImageStoreDriver; import org.apache.cloudstack.storage.image.datastore.ImageStoreEntity; +import com.cloud.agent.api.to.DataStoreTO; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.dao.VMTemplateDao; import com.cloud.utils.component.ComponentContext; import com.cloud.utils.storage.encoding.EncodingType; @@ -132,6 +133,11 @@ public class ImageStoreImpl implements ImageStoreEntity { return this.imageDataStoreVO.getUuid(); } + public Date getCreated(){ + return this.imageDataStoreVO.getCreated(); + } + + @Override public DataObject create(DataObject obj) { DataObject object = objectInStoreMgr.create(obj, this); @@ -165,6 +171,8 @@ public class ImageStoreImpl implements ImageStoreEntity { return imageDataStoreVO.getProtocol(); } + + @Override public DataStoreTO getTO() { return null; 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 ca641057290..64d2143ba8c 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 @@ -36,7 +36,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreLifeCycle; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProviderManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint; import org.apache.cloudstack.engine.subsystem.api.storage.EndPointSelector; import org.apache.cloudstack.engine.subsystem.api.storage.ImageDataFactory; @@ -73,6 +72,7 @@ import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.org.Cluster.ClusterType; import com.cloud.org.Managed.ManagedState; import com.cloud.resource.ResourceState; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.ScopeType; import com.cloud.storage.Storage; import com.cloud.storage.Storage.StoragePoolType; diff --git a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotDataFactoryImpl.java b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotDataFactoryImpl.java index 6a7edc2302c..ff96a1957a5 100644 --- a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotDataFactoryImpl.java +++ b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotDataFactoryImpl.java @@ -25,7 +25,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectType; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotDataFactory; import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotInfo; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeDataFactory; @@ -33,6 +32,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo; import org.apache.cloudstack.storage.datastore.ObjectInDataStoreManager; import org.springframework.stereotype.Component; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.Snapshot; import com.cloud.storage.SnapshotVO; import com.cloud.storage.dao.SnapshotDao; diff --git a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/strategy/AncientSnapshotStrategy.java b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/strategy/AncientSnapshotStrategy.java index ce2786b80b9..944c477d2c7 100644 --- a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/strategy/AncientSnapshotStrategy.java +++ b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/strategy/AncientSnapshotStrategy.java @@ -30,7 +30,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectType; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine; import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.Event; import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver; @@ -58,6 +57,7 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.host.HostVO; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.resource.ResourceManager; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.Snapshot; import com.cloud.storage.SnapshotVO; import com.cloud.storage.StoragePool; diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreManagerImpl.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreManagerImpl.java index adc7250cc73..fb1460400b9 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreManagerImpl.java +++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/DataStoreManagerImpl.java @@ -25,12 +25,12 @@ import javax.inject.Inject; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.Scope; import org.apache.cloudstack.engine.subsystem.api.storage.ZoneScope; import org.apache.cloudstack.storage.image.datastore.ImageStoreProviderManager; import org.springframework.stereotype.Component; +import com.cloud.storage.DataStoreRole; import com.cloud.utils.exception.CloudRuntimeException; @Component diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/ObjectInDataStoreManager.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/ObjectInDataStoreManager.java index 26321438404..876a06694b5 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/datastore/ObjectInDataStoreManager.java +++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/ObjectInDataStoreManager.java @@ -20,10 +20,10 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataObject; import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectType; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.Event; import com.cloud.agent.api.Answer; +import com.cloud.storage.DataStoreRole; import com.cloud.utils.fsm.NoTransitionException; public interface ObjectInDataStoreManager { diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/ObjectInDataStoreManagerImpl.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/ObjectInDataStoreManagerImpl.java index 632860d7b94..69db87232c5 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/datastore/ObjectInDataStoreManagerImpl.java +++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/ObjectInDataStoreManagerImpl.java @@ -23,7 +23,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectType; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.ImageDataFactory; import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.Event; import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.State; @@ -42,6 +41,7 @@ import org.apache.log4j.Logger; import org.springframework.stereotype.Component; import com.cloud.agent.api.Answer; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.VMTemplateStoragePoolVO; import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; import com.cloud.storage.dao.VMTemplatePoolDao; diff --git a/engine/storage/src/org/apache/cloudstack/storage/db/ObjectInDataStoreVO.java b/engine/storage/src/org/apache/cloudstack/storage/db/ObjectInDataStoreVO.java index 7b44de0ce91..fb8c93ceedc 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/db/ObjectInDataStoreVO.java +++ b/engine/storage/src/org/apache/cloudstack/storage/db/ObjectInDataStoreVO.java @@ -31,9 +31,9 @@ import javax.persistence.TemporalType; import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectType; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.Storage; import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; import com.cloud.utils.db.GenericDaoBase; diff --git a/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java b/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java index ab5c5521a9e..2d03c44b972 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java +++ b/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java @@ -28,7 +28,6 @@ import javax.inject.Inject; import org.apache.cloudstack.engine.subsystem.api.storage.DataObject; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint; import org.apache.cloudstack.engine.subsystem.api.storage.EndPointSelector; import org.apache.cloudstack.engine.subsystem.api.storage.Scope; @@ -40,6 +39,7 @@ import org.springframework.stereotype.Component; import com.cloud.host.HostVO; import com.cloud.host.Status; import com.cloud.host.dao.HostDao; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.ScopeType; import com.cloud.utils.db.DB; import com.cloud.utils.db.SearchCriteria2; diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/datastore/ImageStoreHelper.java b/engine/storage/src/org/apache/cloudstack/storage/image/datastore/ImageStoreHelper.java index a4d3db93718..64f85910a3e 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/image/datastore/ImageStoreHelper.java +++ b/engine/storage/src/org/apache/cloudstack/storage/image/datastore/ImageStoreHelper.java @@ -23,13 +23,13 @@ import java.util.Map; import javax.inject.Inject; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.storage.datastore.db.ImageStoreDao; import org.apache.cloudstack.storage.datastore.db.ImageStoreDetailVO; import org.apache.cloudstack.storage.datastore.db.ImageStoreDetailsDao; import org.apache.cloudstack.storage.datastore.db.ImageStoreVO; import org.springframework.stereotype.Component; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.ImageStore; import com.cloud.storage.ScopeType; import com.cloud.utils.exception.CloudRuntimeException; diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageStoreDaoImpl.java b/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageStoreDaoImpl.java index ee0782217b8..2300649bd86 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageStoreDaoImpl.java +++ b/engine/storage/src/org/apache/cloudstack/storage/image/db/ImageStoreDaoImpl.java @@ -24,7 +24,6 @@ import java.util.Map; import javax.naming.ConfigurationException; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.Scope; import org.apache.cloudstack.engine.subsystem.api.storage.ZoneScope; import org.apache.cloudstack.storage.datastore.db.ImageStoreDao; @@ -32,6 +31,7 @@ import org.apache.cloudstack.storage.datastore.db.ImageStoreVO; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.ScopeType; import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.SearchBuilder; diff --git a/engine/storage/src/org/apache/cloudstack/storage/to/ImageStoreTO.java b/engine/storage/src/org/apache/cloudstack/storage/to/ImageStoreTO.java index 5224e2e6ccb..a9d95e812e1 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/to/ImageStoreTO.java +++ b/engine/storage/src/org/apache/cloudstack/storage/to/ImageStoreTO.java @@ -16,26 +16,32 @@ // under the License. package org.apache.cloudstack.storage.to; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreTO; import org.apache.cloudstack.storage.image.datastore.ImageStoreInfo; +import com.cloud.agent.api.to.DataStoreTO; +import com.cloud.storage.DataStoreRole; + public class ImageStoreTO implements DataStoreTO { - private final String type; - private final String uri; - private final String providerName; - private final DataStoreRole role; + private String type; + private String uri; + private String providerName; + private DataStoreRole role; + + public ImageStoreTO(){ + + } + public ImageStoreTO(ImageStoreInfo dataStore) { this.type = dataStore.getType(); this.uri = dataStore.getUri(); this.providerName = null; this.role = dataStore.getRole(); } - + public String getType() { return this.type; } - + public String getUri() { return this.uri; } @@ -47,8 +53,26 @@ public class ImageStoreTO implements DataStoreTO { return providerName; } + + public void setType(String type) { + this.type = type; + } + + public void setUri(String uri) { + this.uri = uri; + } + + public void setProviderName(String providerName) { + this.providerName = providerName; + } + + public void setRole(DataStoreRole role) { + this.role = role; + } + @Override public DataStoreRole getRole() { return this.role; } + } diff --git a/engine/storage/src/org/apache/cloudstack/storage/to/PrimaryDataStoreTO.java b/engine/storage/src/org/apache/cloudstack/storage/to/PrimaryDataStoreTO.java index b410dd6f4e4..cf9448bd73a 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/to/PrimaryDataStoreTO.java +++ b/engine/storage/src/org/apache/cloudstack/storage/to/PrimaryDataStoreTO.java @@ -16,10 +16,11 @@ // under the License. package org.apache.cloudstack.storage.to; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreTO; import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo; +import com.cloud.agent.api.to.DataStoreTO; +import com.cloud.storage.DataStoreRole; + public class PrimaryDataStoreTO implements DataStoreTO { private final String uuid; private final String name; diff --git a/engine/storage/src/org/apache/cloudstack/storage/to/TemplateObjectTO.java b/engine/storage/src/org/apache/cloudstack/storage/to/TemplateObjectTO.java index 76f0d036e29..513a1dd1b8f 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/to/TemplateObjectTO.java +++ b/engine/storage/src/org/apache/cloudstack/storage/to/TemplateObjectTO.java @@ -17,12 +17,13 @@ package org.apache.cloudstack.storage.to; import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectType; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreTO; import org.apache.cloudstack.engine.subsystem.api.storage.DataTO; import org.apache.cloudstack.engine.subsystem.api.storage.TemplateInfo; import org.apache.cloudstack.engine.subsystem.api.storage.disktype.DiskFormat; import org.apache.cloudstack.storage.image.datastore.ImageStoreInfo; +import com.cloud.agent.api.to.DataStoreTO; + public class TemplateObjectTO implements DataTO { private final String path; private final String uuid; diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/datastore/PrimaryDataStoreHelper.java b/engine/storage/src/org/apache/cloudstack/storage/volume/datastore/PrimaryDataStoreHelper.java index c5f7a1b2352..d131008d65e 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/volume/datastore/PrimaryDataStoreHelper.java +++ b/engine/storage/src/org/apache/cloudstack/storage/volume/datastore/PrimaryDataStoreHelper.java @@ -25,7 +25,6 @@ import javax.inject.Inject; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.HostScope; import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreParameters; import org.apache.cloudstack.storage.command.AttachPrimaryDataStoreCmd; @@ -41,6 +40,7 @@ import com.cloud.alert.AlertManager; import com.cloud.capacity.Capacity; import com.cloud.capacity.CapacityVO; import com.cloud.capacity.dao.CapacityDao; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.ScopeType; import com.cloud.storage.StorageManager; import com.cloud.storage.StoragePool; diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java index 836f9d4a5ed..0feefd0528c 100644 --- a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java +++ b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java @@ -28,8 +28,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataObject; import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectType; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreDriver; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreTO; import org.apache.cloudstack.engine.subsystem.api.storage.HostScope; import org.apache.cloudstack.engine.subsystem.api.storage.ImageDataFactory; import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine; @@ -47,8 +45,10 @@ import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; import org.apache.cloudstack.storage.volume.VolumeObject; import org.apache.log4j.Logger; +import com.cloud.agent.api.to.DataStoreTO; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.storage.Storage.StoragePoolType; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.ScopeType; import com.cloud.storage.StoragePoolHostVO; import com.cloud.storage.StoragePoolStatus; diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/provider/DefaultHostListener.java b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/provider/DefaultHostListener.java index f2cb1c45c82..fcb5c323183 100644 --- a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/provider/DefaultHostListener.java +++ b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/provider/DefaultHostListener.java @@ -21,7 +21,6 @@ package org.apache.cloudstack.storage.datastore.provider; import javax.inject.Inject; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.HypervisorHostListener; import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; @@ -32,6 +31,7 @@ import com.cloud.agent.api.Answer; import com.cloud.agent.api.ModifyStoragePoolAnswer; import com.cloud.agent.api.ModifyStoragePoolCommand; import com.cloud.alert.AlertManager; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.StoragePool; import com.cloud.storage.StoragePoolHostVO; import com.cloud.storage.dao.StoragePoolHostDao; diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeDataFactoryImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeDataFactoryImpl.java index 3019cf2e64a..2929d3881e5 100644 --- a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeDataFactoryImpl.java +++ b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeDataFactoryImpl.java @@ -24,12 +24,12 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataObject; import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectType; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeDataFactory; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo; import org.apache.cloudstack.storage.datastore.ObjectInDataStoreManager; import org.springframework.stereotype.Component; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.VolumeVO; import com.cloud.storage.dao.VolumeDao; 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 67f75b085fb..34e080d5d52 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 @@ -23,7 +23,6 @@ import javax.inject.Inject; import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectType; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.DataTO; import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo; @@ -34,6 +33,7 @@ import org.apache.log4j.Logger; import com.cloud.agent.api.Answer; import com.cloud.hypervisor.Hypervisor.HypervisorType; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.Volume; import com.cloud.storage.VolumeVO; import com.cloud.storage.dao.VolumeDao; diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageResource.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageResource.java index b629377a4d8..1cd53351185 100644 --- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageResource.java +++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageResource.java @@ -31,8 +31,6 @@ import java.util.Set; import java.util.UUID; import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectType; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreTO; import org.apache.cloudstack.engine.subsystem.api.storage.DataTO; import org.apache.cloudstack.storage.command.AttachPrimaryDataStoreAnswer; import org.apache.cloudstack.storage.command.AttachPrimaryDataStoreCmd; @@ -62,7 +60,9 @@ import com.cloud.agent.api.Command; import com.cloud.agent.api.storage.DeleteVolumeCommand; import com.cloud.agent.api.storage.PrimaryStorageDownloadAnswer; import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand; +import com.cloud.agent.api.to.DataStoreTO; import com.cloud.hypervisor.xen.resource.CitrixResourceBase.SRType; +import com.cloud.storage.DataStoreRole; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.storage.encoding.DecodedDataObject; import com.cloud.utils.storage.encoding.DecodedDataStore; diff --git a/plugins/storage/image/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java b/plugins/storage/image/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java index 692aded957c..af6a3b63492 100644 --- a/plugins/storage/image/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java +++ b/plugins/storage/image/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackImageStoreDriverImpl.java @@ -35,7 +35,9 @@ import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo; import org.apache.cloudstack.framework.async.AsyncCompletionCallback; import org.apache.cloudstack.framework.async.AsyncRpcConext; import org.apache.cloudstack.storage.image.ImageStoreDriver; +import org.apache.cloudstack.storage.image.store.ImageStoreImpl; import org.apache.cloudstack.storage.image.store.TemplateObject; +import org.apache.cloudstack.storage.to.ImageStoreTO; import org.apache.cloudstack.storage.volume.VolumeObject; import org.apache.log4j.Logger; @@ -43,10 +45,12 @@ import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; import com.cloud.agent.api.DeleteSnapshotBackupCommand; import com.cloud.agent.api.storage.DeleteVolumeCommand; +import com.cloud.agent.api.to.DataStoreTO; import com.cloud.agent.api.to.S3TO; import com.cloud.agent.api.to.SwiftTO; import com.cloud.host.HostVO; import com.cloud.host.dao.HostDao; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.RegisterVolumePayload; import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.SnapshotVO; @@ -92,12 +96,23 @@ public class CloudStackImageStoreDriverImpl implements ImageStoreDriver { // TODO Auto-generated method stub return null; } - + @Override public DataTO getTO(DataObject data) { return null; } + + @Override + public DataStoreTO getStoreTO(DataStore store) { + ImageStoreImpl nfsStore = (ImageStoreImpl)store; + ImageStoreTO nfsTO = new ImageStoreTO(); + nfsTO.setProviderName("CloudStack"); + nfsTO.setRole(DataStoreRole.Image); + nfsTO.setUri(nfsStore.getUri()); + return nfsTO; + } + @Override public boolean revokeAccess(DataObject data, EndPoint ep) { // TODO Auto-generated method stub diff --git a/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/driver/S3ImageStoreDriverImpl.java b/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/driver/S3ImageStoreDriverImpl.java index c5574d3bc0b..5f33a492027 100644 --- a/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/driver/S3ImageStoreDriverImpl.java +++ b/plugins/storage/image/s3/src/org/apache/cloudstack/storage/datastore/driver/S3ImageStoreDriverImpl.java @@ -19,10 +19,12 @@ package org.apache.cloudstack.storage.datastore.driver; import java.util.List; +import java.util.Map; import java.util.Set; import javax.inject.Inject; +import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.engine.subsystem.api.storage.CommandResult; import org.apache.cloudstack.engine.subsystem.api.storage.CopyCommandResult; import org.apache.cloudstack.engine.subsystem.api.storage.CreateCmdResult; @@ -34,7 +36,9 @@ import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo; import org.apache.cloudstack.framework.async.AsyncCompletionCallback; import org.apache.cloudstack.framework.async.AsyncRpcConext; +import org.apache.cloudstack.storage.datastore.db.ImageStoreDetailsDao; import org.apache.cloudstack.storage.image.ImageStoreDriver; +import org.apache.cloudstack.storage.image.store.ImageStoreImpl; import org.apache.cloudstack.storage.image.store.TemplateObject; import org.apache.cloudstack.storage.volume.VolumeObject; import org.apache.log4j.Logger; @@ -43,6 +47,7 @@ import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; import com.cloud.agent.api.DeleteSnapshotBackupCommand; import com.cloud.agent.api.storage.DeleteVolumeCommand; +import com.cloud.agent.api.to.DataStoreTO; import com.cloud.agent.api.to.S3TO; import com.cloud.agent.api.to.SwiftTO; import com.cloud.host.HostVO; @@ -77,6 +82,8 @@ public class S3ImageStoreDriverImpl implements ImageStoreDriver { @Inject DownloadMonitor _downloadMonitor; @Inject VMTemplateHostDao _vmTemplateHostDao; + @Inject + ImageStoreDetailsDao _imageStoreDetailsDao; @Inject VolumeDao volumeDao; @Inject VolumeHostDao volumeHostDao; @Inject HostDao hostDao; @@ -92,12 +99,29 @@ public class S3ImageStoreDriverImpl implements ImageStoreDriver { // TODO Auto-generated method stub return null; } - + @Override public DataTO getTO(DataObject data) { return null; } + + @Override + public DataStoreTO getStoreTO(DataStore store) { + ImageStoreImpl imgStore = (ImageStoreImpl)store; + Map details = _imageStoreDetailsDao.getDetails(imgStore.getId()); + return new S3TO(imgStore.getId(), imgStore.getUuid(), details.get(ApiConstants.S3_ACCESS_KEY), + details.get(ApiConstants.S3_SECRET_KEY), + details.get(ApiConstants.S3_END_POINT), + details.get(ApiConstants.S3_BUCKET_NAME), + Boolean.parseBoolean(details.get(ApiConstants.S3_HTTPS_FLAG)), + Integer.valueOf(details.get(ApiConstants.S3_CONNECTION_TIMEOUT)), + Integer.valueOf(details.get(ApiConstants.S3_MAX_ERROR_RETRY)), + Integer.valueOf(details.get(ApiConstants.S3_SOCKET_TIMEOUT)), + imgStore.getCreated()); + + } + @Override public boolean revokeAccess(DataObject data, EndPoint ep) { // TODO Auto-generated method stub diff --git a/plugins/storage/image/sample/src/org/apache/cloudstack/storage/datastore/driver/SampleImageStoreDriverImpl.java b/plugins/storage/image/sample/src/org/apache/cloudstack/storage/datastore/driver/SampleImageStoreDriverImpl.java index 4d535201b2f..acf679679dc 100644 --- a/plugins/storage/image/sample/src/org/apache/cloudstack/storage/datastore/driver/SampleImageStoreDriverImpl.java +++ b/plugins/storage/image/sample/src/org/apache/cloudstack/storage/datastore/driver/SampleImageStoreDriverImpl.java @@ -36,6 +36,7 @@ import org.apache.cloudstack.storage.command.CreateObjectAnswer; import org.apache.cloudstack.storage.command.CreateObjectCommand; import org.apache.cloudstack.storage.image.ImageStoreDriver; +import com.cloud.agent.api.to.DataStoreTO; import com.cloud.storage.dao.VMTemplateDao; //http-read-only based image store @@ -46,12 +47,19 @@ public class SampleImageStoreDriverImpl implements ImageStoreDriver { VMTemplateDao imageDataDao; public SampleImageStoreDriverImpl() { } - + @Override public DataTO getTO(DataObject data) { return null; } + + @Override + public DataStoreTO getStoreTO(DataStore store) { + // TODO Auto-generated method stub + return null; + } + @Override public String grantAccess(DataObject data, EndPoint ep) { return data.getUri(); @@ -79,7 +87,7 @@ public class SampleImageStoreDriverImpl implements ImageStoreDriver { callback.complete(result); return; } - + if (data.getSize() == null && data.getType() == DataObjectType.TEMPLATE) { //the template size is unknown during registration, need to find out the size of template EndPoint ep = selector.select(data); @@ -92,14 +100,14 @@ public class SampleImageStoreDriverImpl implements ImageStoreDriver { CreateObjectAnswer answer = (CreateObjectAnswer)ep.sendMessage(createCmd); if (answer.getResult()) { //update imagestorevo - + result = new CreateCmdResult(answer.getPath(), answer.getSize()); } else { result.setResult(answer.getDetails()); } - + } - + callback.complete(result); } @@ -120,13 +128,13 @@ public class SampleImageStoreDriverImpl implements ImageStoreDriver { public void copyAsync(DataObject srcdata, DataObject destData, AsyncCompletionCallback callback) { // TODO Auto-generated method stub - + } @Override public void resize(DataObject data, AsyncCompletionCallback callback) { // TODO Auto-generated method stub - + } } diff --git a/plugins/storage/image/swift/src/org/apache/cloudstack/storage/datastore/driver/SwiftImageStoreDriverImpl.java b/plugins/storage/image/swift/src/org/apache/cloudstack/storage/datastore/driver/SwiftImageStoreDriverImpl.java index 8504de9a15e..e96bfffa6a2 100644 --- a/plugins/storage/image/swift/src/org/apache/cloudstack/storage/datastore/driver/SwiftImageStoreDriverImpl.java +++ b/plugins/storage/image/swift/src/org/apache/cloudstack/storage/datastore/driver/SwiftImageStoreDriverImpl.java @@ -19,10 +19,12 @@ package org.apache.cloudstack.storage.datastore.driver; import java.util.List; +import java.util.Map; import java.util.Set; import javax.inject.Inject; +import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.engine.subsystem.api.storage.CommandResult; import org.apache.cloudstack.engine.subsystem.api.storage.CopyCommandResult; import org.apache.cloudstack.engine.subsystem.api.storage.CreateCmdResult; @@ -34,7 +36,9 @@ import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo; import org.apache.cloudstack.framework.async.AsyncCompletionCallback; import org.apache.cloudstack.framework.async.AsyncRpcConext; +import org.apache.cloudstack.storage.datastore.db.ImageStoreDetailsDao; import org.apache.cloudstack.storage.image.ImageStoreDriver; +import org.apache.cloudstack.storage.image.store.ImageStoreImpl; import org.apache.cloudstack.storage.image.store.TemplateObject; import org.apache.cloudstack.storage.volume.VolumeObject; import org.apache.log4j.Logger; @@ -43,6 +47,7 @@ import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; import com.cloud.agent.api.DeleteSnapshotBackupCommand; import com.cloud.agent.api.storage.DeleteVolumeCommand; +import com.cloud.agent.api.to.DataStoreTO; import com.cloud.agent.api.to.S3TO; import com.cloud.agent.api.to.SwiftTO; import com.cloud.host.HostVO; @@ -77,6 +82,8 @@ public class SwiftImageStoreDriverImpl implements ImageStoreDriver { @Inject DownloadMonitor _downloadMonitor; @Inject VMTemplateHostDao _vmTemplateHostDao; + @Inject + ImageStoreDetailsDao _imageStoreDetailsDao; @Inject VolumeDao volumeDao; @Inject VolumeHostDao volumeHostDao; @Inject HostDao hostDao; @@ -92,12 +99,22 @@ public class SwiftImageStoreDriverImpl implements ImageStoreDriver { // TODO Auto-generated method stub return null; } - + @Override public DataTO getTO(DataObject data) { return null; } + + @Override + public DataStoreTO getStoreTO(DataStore store) { + ImageStoreImpl imgStore = (ImageStoreImpl)store; + Map details = _imageStoreDetailsDao.getDetails(imgStore.getId()); + return new SwiftTO(imgStore.getId(), imgStore.getUri(), details.get(ApiConstants.ACCOUNT), + details.get(ApiConstants.USERNAME), + details.get(ApiConstants.KEY)); + } + @Override public boolean revokeAccess(DataObject data, EndPoint ep) { // TODO Auto-generated method stub diff --git a/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java b/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java index 412647fb993..2a9217de6c4 100644 --- a/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java +++ b/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java @@ -46,6 +46,7 @@ import com.cloud.agent.api.storage.CreateCommand; import com.cloud.agent.api.storage.DestroyCommand; import com.cloud.agent.api.storage.ResizeVolumeAnswer; import com.cloud.agent.api.storage.ResizeVolumeCommand; +import com.cloud.agent.api.to.DataStoreTO; import com.cloud.agent.api.to.StorageFilerTO; import com.cloud.exception.StorageUnavailableException; import com.cloud.host.HostVO; @@ -91,13 +92,20 @@ public class CloudStackPrimaryDataStoreDriverImpl implements PrimaryDataStoreDri // TODO Auto-generated method stub return null; } - + @Override public DataTO getTO(DataObject data) { return null; } + @Override + public DataStoreTO getStoreTO(DataStore store) { + // TODO Auto-generated method stub + return null; + } + + @Override public boolean revokeAccess(DataObject data, EndPoint ep) { // TODO Auto-generated method stub return false; @@ -148,7 +156,7 @@ public class CloudStackPrimaryDataStoreDriverImpl implements PrimaryDataStoreDri + template.getId() + " " + template.getName()); throw new CloudRuntimeException("cannot find template" - + template.getId() + + template.getId() + template.getName()); } HostVO secondaryStorageHost = hostDao @@ -304,11 +312,11 @@ public class CloudStackPrimaryDataStoreDriverImpl implements PrimaryDataStoreDri parentSnapshotPath = preSnapshotVO.getPath(); } StoragePool srcPool = (StoragePool)volume.getDataStore(); - + ManageSnapshotCommand cmd = new ManageSnapshotCommand(snapshot.getId(), volume.getPath(), srcPool, parentSnapshotPath, snapshot.getName(), vmName); ManageSnapshotAnswer answer = (ManageSnapshotAnswer) this.snapshotMgr.sendToPool(volume, cmd); - + if ((answer != null) && answer.getResult()) { result = new CreateCmdResult(answer.getSnapshotPath(), null); } else { diff --git a/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackPrimaryDataStoreLifeCycleImpl.java b/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackPrimaryDataStoreLifeCycleImpl.java index 4308558bf0c..6875b7a5217 100644 --- a/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackPrimaryDataStoreLifeCycleImpl.java +++ b/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackPrimaryDataStoreLifeCycleImpl.java @@ -30,7 +30,6 @@ import javax.inject.Inject; import org.apache.cloudstack.engine.subsystem.api.storage.ClusterScope; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.HostScope; import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo; import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreLifeCycle; @@ -61,6 +60,7 @@ import com.cloud.resource.ResourceManager; import com.cloud.server.ManagementServer; import com.cloud.storage.OCFS2Manager; import com.cloud.storage.Storage.StoragePoolType; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.ScopeType; import com.cloud.storage.StorageManager; import com.cloud.storage.StoragePool; diff --git a/plugins/storage/volume/sample/src/org/apache/cloudstack/storage/datastore/driver/SamplePrimaryDataStoreDriverImpl.java b/plugins/storage/volume/sample/src/org/apache/cloudstack/storage/datastore/driver/SamplePrimaryDataStoreDriverImpl.java index 99b16ebd5df..fc62a563aba 100644 --- a/plugins/storage/volume/sample/src/org/apache/cloudstack/storage/datastore/driver/SamplePrimaryDataStoreDriverImpl.java +++ b/plugins/storage/volume/sample/src/org/apache/cloudstack/storage/datastore/driver/SamplePrimaryDataStoreDriverImpl.java @@ -41,6 +41,7 @@ import org.apache.cloudstack.storage.datastore.DataObjectManager; import org.apache.log4j.Logger; import com.cloud.agent.api.Answer; +import com.cloud.agent.api.to.DataStoreTO; import com.cloud.storage.dao.StoragePoolHostDao; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.storage.encoding.DecodedDataObject; @@ -56,14 +57,22 @@ public class SamplePrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver @Inject DataObjectManager dataObjMgr; public SamplePrimaryDataStoreDriverImpl() { - + } - + @Override public DataTO getTO(DataObject data) { return null; } - + + + @Override + public DataStoreTO getStoreTO(DataStore store) { + // TODO Auto-generated method stub + return null; + } + + private class CreateVolumeContext extends AsyncRpcConext { private final DataObject volume; /** @@ -73,13 +82,13 @@ public class SamplePrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver super(callback); this.volume = volume; } - + public DataObject getVolume() { return this.volume; } - + } - + public Void createAsyncCallback(AsyncCallbackDispatcher callback, CreateVolumeContext context) { CreateCmdResult result = null; CreateObjectAnswer volAnswer = (CreateObjectAnswer) callback.getResult(); @@ -89,15 +98,15 @@ public class SamplePrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver result = new CreateCmdResult("", null); result.setResult(volAnswer.getDetails()); } - + context.getParentCallback().complete(result); return null; } - + @Override public void deleteAsync(DataObject vo, AsyncCompletionCallback callback) { DeleteCommand cmd = new DeleteCommand(vo.getUri()); - + EndPoint ep = selector.select(vo); AsyncRpcConext context = new AsyncRpcConext(callback); AsyncCallbackDispatcher caller = AsyncCallbackDispatcher.create(this); @@ -105,7 +114,7 @@ public class SamplePrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver .setContext(context); ep.sendMessageAsync(cmd, caller); } - + public Void deleteCallback(AsyncCallbackDispatcher callback, AsyncRpcConext context) { CommandResult result = new CommandResult(); Answer answer = callback.getResult(); @@ -118,16 +127,16 @@ public class SamplePrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver /* private class CreateVolumeFromBaseImageContext extends AsyncRpcConext { private final VolumeObject volume; - + public CreateVolumeFromBaseImageContext(AsyncCompletionCallback callback, VolumeObject volume) { super(callback); this.volume = volume; } - + public VolumeObject getVolume() { return this.volume; } - + } @Override @@ -137,7 +146,7 @@ public class SamplePrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver EndPoint ep = endPoints.get(0); String templateUri = template.getDataStore().grantAccess(template, ep); CreateVolumeFromBaseImageCommand cmd = new CreateVolumeFromBaseImageCommand(vol, templateUri); - + CreateVolumeFromBaseImageContext context = new CreateVolumeFromBaseImageContext(callback, volume); AsyncCallbackDispatcher caller = AsyncCallbackDispatcher.create(this); caller.setContext(context) @@ -169,7 +178,7 @@ public class SamplePrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver AsyncCompletionCallback callback) { EndPoint ep = selector.select(vol); CreateObjectCommand createCmd = new CreateObjectCommand(vol.getUri()); - + CreateVolumeContext context = new CreateVolumeContext(callback, vol); AsyncCallbackDispatcher caller = AsyncCallbackDispatcher.create(this); caller.setContext(context) @@ -181,7 +190,7 @@ public class SamplePrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver @Override public String grantAccess(DataObject object, EndPoint ep) { //StoragePoolHostVO poolHost = storeHostDao.findByPoolHost(object.getDataStore().getId(), ep.getId()); - + String uri = object.getUri(); try { DecodedDataObject obj = Decoder.decode(uri); @@ -197,7 +206,7 @@ public class SamplePrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver throw new CloudRuntimeException("failed to create object" + answer.getDetails()); } } - + return object.getUri(); } catch (URISyntaxException e) { throw new CloudRuntimeException("uri parsed error", e); @@ -220,10 +229,10 @@ public class SamplePrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver public void revertSnapshot(SnapshotInfo snapshot, AsyncCompletionCallback callback) { // TODO Auto-generated method stub - + } - + @Override public boolean canCopy(DataObject srcData, DataObject destData) { @@ -235,21 +244,21 @@ public class SamplePrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver public void copyAsync(DataObject srcdata, DataObject destData, AsyncCompletionCallback callback) { // TODO Auto-generated method stub - + } @Override public void resize(DataObject data, AsyncCompletionCallback callback) { // TODO Auto-generated method stub - + } @Override public void takeSnapshot(SnapshotInfo snapshot, AsyncCompletionCallback callback) { // TODO Auto-generated method stub - + } - + } 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 3916773c7f4..4ec0373316e 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 @@ -29,6 +29,8 @@ import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotInfo; import org.apache.cloudstack.framework.async.AsyncCompletionCallback; +import com.cloud.agent.api.to.DataStoreTO; + public class SolidfirePrimaryDataStoreDriver implements PrimaryDataStoreDriver { @Override @@ -36,12 +38,19 @@ public class SolidfirePrimaryDataStoreDriver implements PrimaryDataStoreDriver { // TODO Auto-generated method stub return null; } - + @Override public DataTO getTO(DataObject data) { return null; } + + @Override + public DataStoreTO getStoreTO(DataStore store) { + // TODO Auto-generated method stub + return null; + } + @Override public boolean revokeAccess(DataObject data, EndPoint ep) { // TODO Auto-generated method stub @@ -57,19 +66,19 @@ public class SolidfirePrimaryDataStoreDriver implements PrimaryDataStoreDriver { @Override public void createAsync(DataObject data, AsyncCompletionCallback callback) { // TODO Auto-generated method stub - + } @Override public void deleteAsync(DataObject data, AsyncCompletionCallback callback) { // TODO Auto-generated method stub - + } @Override public void copyAsync(DataObject srcdata, DataObject destData, AsyncCompletionCallback callback) { // TODO Auto-generated method stub - + } @Override @@ -81,21 +90,21 @@ public class SolidfirePrimaryDataStoreDriver implements PrimaryDataStoreDriver { @Override public void revertSnapshot(SnapshotInfo snapshot, AsyncCompletionCallback callback) { // TODO Auto-generated method stub - + } @Override public void resize(DataObject data, AsyncCompletionCallback callback) { // TODO Auto-generated method stub - + } @Override public void takeSnapshot(SnapshotInfo snapshot, AsyncCompletionCallback callback) { // TODO Auto-generated method stub - + } diff --git a/server/src/com/cloud/resource/ResourceManagerImpl.java b/server/src/com/cloud/resource/ResourceManagerImpl.java index ef567694733..1af3b2f54e6 100755 --- a/server/src/com/cloud/resource/ResourceManagerImpl.java +++ b/server/src/com/cloud/resource/ResourceManagerImpl.java @@ -51,7 +51,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreLifeCycle; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProviderManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.region.dao.RegionDao; import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; @@ -114,6 +113,7 @@ import com.cloud.org.Grouping; import com.cloud.org.Grouping.AllocationState; import com.cloud.org.Managed; import com.cloud.service.ServiceOfferingVO; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.GuestOSCategoryVO; import com.cloud.storage.ImageStore; import com.cloud.storage.S3; diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index 3b1a768f0fe..a5f82a8daef 100755 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -53,7 +53,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreLifeCycle; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProviderManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.HostScope; import org.apache.cloudstack.engine.subsystem.api.storage.HypervisorHostListener; import org.apache.cloudstack.engine.subsystem.api.storage.ImageDataFactory; diff --git a/server/src/com/cloud/storage/StoragePoolAutomationImpl.java b/server/src/com/cloud/storage/StoragePoolAutomationImpl.java index 9bba979b9c0..40017756fd4 100644 --- a/server/src/com/cloud/storage/StoragePoolAutomationImpl.java +++ b/server/src/com/cloud/storage/StoragePoolAutomationImpl.java @@ -27,7 +27,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreLifeCycle; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProviderManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; import org.apache.log4j.Logger; diff --git a/server/src/com/cloud/storage/VolumeManagerImpl.java b/server/src/com/cloud/storage/VolumeManagerImpl.java index ddd6ff00b83..4b870800355 100644 --- a/server/src/com/cloud/storage/VolumeManagerImpl.java +++ b/server/src/com/cloud/storage/VolumeManagerImpl.java @@ -45,7 +45,6 @@ import org.apache.cloudstack.api.command.user.volume.UploadVolumeCmd; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProviderManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.ImageDataFactory; import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo; import org.apache.cloudstack.engine.subsystem.api.storage.Scope; diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java index bdac44d9a0d..7a1984cda4e 100755 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java @@ -30,7 +30,6 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.Scope; import org.apache.log4j.Logger; import org.springframework.context.annotation.Primary; @@ -98,6 +97,7 @@ import com.cloud.resource.ServerResource; import com.cloud.resource.UnableDeleteHostException; import com.cloud.service.ServiceOfferingVO; import com.cloud.service.dao.ServiceOfferingDao; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.ScopeType; import com.cloud.storage.SnapshotVO; import com.cloud.storage.Storage; diff --git a/server/src/com/cloud/template/HypervisorTemplateAdapter.java b/server/src/com/cloud/template/HypervisorTemplateAdapter.java index 06cf6ac7fed..cbffa8ee1ee 100755 --- a/server/src/com/cloud/template/HypervisorTemplateAdapter.java +++ b/server/src/com/cloud/template/HypervisorTemplateAdapter.java @@ -34,7 +34,6 @@ import org.apache.cloudstack.api.command.user.template.RegisterTemplateCmd; import org.apache.cloudstack.engine.subsystem.api.storage.CommandResult; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.ImageDataFactory; import org.apache.cloudstack.engine.subsystem.api.storage.TemplateService; import org.apache.cloudstack.engine.subsystem.api.storage.ZoneScope; @@ -54,6 +53,7 @@ import com.cloud.host.HostVO; import com.cloud.storage.ScopeType; import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.Storage.TemplateType; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.TemplateProfile; import com.cloud.storage.VMTemplateHostVO; import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; diff --git a/server/src/com/cloud/template/TemplateAdapterBase.java b/server/src/com/cloud/template/TemplateAdapterBase.java index 1e79b60f150..05ba35d1c1a 100755 --- a/server/src/com/cloud/template/TemplateAdapterBase.java +++ b/server/src/com/cloud/template/TemplateAdapterBase.java @@ -28,7 +28,6 @@ import org.apache.cloudstack.api.command.user.template.DeleteTemplateCmd; import org.apache.cloudstack.api.command.user.template.RegisterTemplateCmd; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.log4j.Logger; import com.cloud.api.ApiDBUtils; @@ -47,6 +46,7 @@ import com.cloud.org.Grouping; import com.cloud.storage.GuestOS; import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.Storage.TemplateType; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.TemplateProfile; import com.cloud.storage.VMTemplateVO; import com.cloud.storage.dao.VMTemplateDao; diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java b/server/src/com/cloud/template/TemplateManagerImpl.java index aabdaf9b22b..88a4e7f73f7 100755 --- a/server/src/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/com/cloud/template/TemplateManagerImpl.java @@ -56,7 +56,6 @@ import org.apache.cloudstack.api.command.user.template.UpdateTemplatePermissions import org.apache.cloudstack.engine.subsystem.api.storage.CommandResult; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreRole; import org.apache.cloudstack.engine.subsystem.api.storage.ImageDataFactory; import org.apache.cloudstack.engine.subsystem.api.storage.TemplateService; import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotDataFactory; @@ -121,6 +120,7 @@ import com.cloud.storage.Storage; import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.Storage.TemplateType; +import com.cloud.storage.DataStoreRole; import com.cloud.storage.StorageManager; import com.cloud.storage.StoragePool; import com.cloud.storage.StoragePoolHostVO;