mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
implement toURI
This commit is contained in:
parent
c4a11b9979
commit
ddc53771bf
@ -45,7 +45,7 @@ public class ImageDataFactoryImpl implements ImageDataFactory {
|
||||
return null;
|
||||
}
|
||||
ImageDataVO templ = imageDataDao.findById(templateId);
|
||||
TemplateObject tmpl = new TemplateObject(templ, store);
|
||||
TemplateObject tmpl = TemplateObject.getTemplate(templ, store);
|
||||
return tmpl;
|
||||
}
|
||||
}
|
||||
|
||||
@ -23,16 +23,15 @@ import java.util.Map;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.apache.cloudstack.storage.datastore.provider.DataStoreProvider;
|
||||
import org.apache.cloudstack.storage.datastore.provider.DataStoreProviderManager;
|
||||
import org.apache.cloudstack.storage.datastore.provider.ImageDataStoreProvider;
|
||||
import org.apache.cloudstack.storage.image.ImageDataStoreDriver;
|
||||
import org.apache.cloudstack.storage.image.datastore.ImageDataStore;
|
||||
import org.apache.cloudstack.storage.image.datastore.ImageDataStoreManager;
|
||||
import org.apache.cloudstack.storage.image.db.ImageDataDao;
|
||||
import org.apache.cloudstack.storage.image.db.ImageDataStoreDao;
|
||||
import org.apache.cloudstack.storage.image.db.ImageDataStoreVO;
|
||||
import org.apache.cloudstack.storage.image.store.ImageDataStoreImpl;
|
||||
import org.apache.cloudstack.storage.volume.PrimaryDataStoreDriver;
|
||||
import org.apache.cloudstack.storage.image.store.HttpDataStoreImpl;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@ -49,9 +48,9 @@ public class ImageDataStoreManagerImpl implements ImageDataStoreManager {
|
||||
public ImageDataStore getImageDataStore(long dataStoreId) {
|
||||
ImageDataStoreVO dataStore = dataStoreDao.findById(dataStoreId);
|
||||
long providerId = dataStore.getProvider();
|
||||
DataStoreProvider provider = providerManager.getDataStoreProviderById(providerId);
|
||||
ImageDataStore imgStore = new ImageDataStoreImpl(dataStore,
|
||||
driverMaps.get(provider.getUuid())
|
||||
ImageDataStoreProvider provider = (ImageDataStoreProvider)providerManager.getDataStoreProviderById(providerId);
|
||||
ImageDataStore imgStore = HttpDataStoreImpl.getDataStore(dataStore,
|
||||
driverMaps.get(provider.getUuid()), provider
|
||||
);
|
||||
// TODO Auto-generated method stub
|
||||
return imgStore;
|
||||
|
||||
@ -25,32 +25,43 @@ 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.EndPoint;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.Scope;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.ZoneScope;
|
||||
import org.apache.cloudstack.storage.datastore.ObjectInDataStoreManager;
|
||||
import org.apache.cloudstack.storage.datastore.provider.ImageDataStoreProvider;
|
||||
import org.apache.cloudstack.storage.image.ImageDataStoreDriver;
|
||||
import org.apache.cloudstack.storage.image.TemplateInfo;
|
||||
import org.apache.cloudstack.storage.image.datastore.ImageDataStore;
|
||||
import org.apache.cloudstack.storage.image.db.ImageDataDao;
|
||||
import org.apache.cloudstack.storage.image.db.ImageDataStoreVO;
|
||||
import org.apache.cloudstack.storage.image.db.ImageDataVO;
|
||||
import org.apache.cloudstack.storage.snapshot.SnapshotInfo;
|
||||
|
||||
import com.cloud.utils.component.ComponentContext;
|
||||
|
||||
public class ImageDataStoreImpl implements ImageDataStore {
|
||||
|
||||
public class HttpDataStoreImpl implements ImageDataStore {
|
||||
@Inject
|
||||
ImageDataDao imageDao;
|
||||
@Inject
|
||||
private ObjectInDataStoreManager objectInStoreMgr;
|
||||
ImageDataStoreDriver driver;
|
||||
ImageDataStoreVO imageDataStoreVO;
|
||||
ImageDataStoreProvider provider;
|
||||
boolean needDownloadToCacheStorage = false;
|
||||
|
||||
public ImageDataStoreImpl(ImageDataStoreVO dataStoreVO, ImageDataStoreDriver imageDataStoreDriver) {
|
||||
private HttpDataStoreImpl(ImageDataStoreVO dataStoreVO, ImageDataStoreDriver imageDataStoreDriver,
|
||||
ImageDataStoreProvider provider) {
|
||||
this.driver = imageDataStoreDriver;
|
||||
this.imageDataStoreVO = dataStoreVO;
|
||||
this.provider = provider;
|
||||
}
|
||||
|
||||
|
||||
public static HttpDataStoreImpl getDataStore(ImageDataStoreVO dataStoreVO, ImageDataStoreDriver imageDataStoreDriver,
|
||||
ImageDataStoreProvider provider) {
|
||||
HttpDataStoreImpl instance = new HttpDataStoreImpl(dataStoreVO, imageDataStoreDriver, provider);
|
||||
return ComponentContext.inject(instance);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<TemplateInfo> listTemplates() {
|
||||
@ -58,12 +69,10 @@ public class ImageDataStoreImpl implements ImageDataStore {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public DataStoreDriver getDriver() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return this.driver;
|
||||
}
|
||||
|
||||
|
||||
@ -71,7 +80,7 @@ public class ImageDataStoreImpl implements ImageDataStore {
|
||||
@Override
|
||||
public DataStoreRole getRole() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return DataStoreRole.Image;
|
||||
}
|
||||
|
||||
|
||||
@ -79,15 +88,14 @@ public class ImageDataStoreImpl implements ImageDataStore {
|
||||
@Override
|
||||
public long getId() {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
return this.imageDataStoreVO.getId();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public String getUri() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return this.imageDataStoreVO.getProtocol() + "://" + "?role=" + this.getRole();
|
||||
}
|
||||
|
||||
|
||||
@ -95,7 +103,7 @@ public class ImageDataStoreImpl implements ImageDataStore {
|
||||
@Override
|
||||
public Scope getScope() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return new ZoneScope(imageDataStoreVO.getDcId());
|
||||
}
|
||||
|
||||
|
||||
@ -126,7 +134,7 @@ public class ImageDataStoreImpl implements ImageDataStore {
|
||||
|
||||
@Override
|
||||
public boolean exists(DataObject object) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
return (objectInStoreMgr.findObject(object.getId(), object.getType(),
|
||||
this.getId(), this.getRole()) != null) ? true : false;
|
||||
}
|
||||
}
|
||||
@ -18,16 +18,21 @@
|
||||
*/
|
||||
package org.apache.cloudstack.storage.image.store;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
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.disktype.DiskFormat;
|
||||
import org.apache.cloudstack.storage.datastore.ObjectInDataStoreManager;
|
||||
import org.apache.cloudstack.storage.db.ObjectInDataStoreVO;
|
||||
import org.apache.cloudstack.storage.image.TemplateEvent;
|
||||
import org.apache.cloudstack.storage.image.TemplateInfo;
|
||||
import org.apache.cloudstack.storage.image.db.ImageDataDao;
|
||||
import org.apache.cloudstack.storage.image.db.ImageDataVO;
|
||||
import org.apache.cloudstack.storage.image.manager.ImageDataManager;
|
||||
import org.apache.cloudstack.storage.volume.ObjectInDataStoreStateMachine;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.utils.component.ComponentContext;
|
||||
@ -41,8 +46,10 @@ public class TemplateObject implements TemplateInfo {
|
||||
ImageDataManager imageMgr;
|
||||
@Inject
|
||||
ImageDataDao imageDao;
|
||||
@Inject
|
||||
ObjectInDataStoreManager ojbectInStoreMgr;
|
||||
|
||||
public TemplateObject(ImageDataVO template, DataStore dataStore) {
|
||||
private TemplateObject(ImageDataVO template, DataStore dataStore) {
|
||||
this.imageVO = template;
|
||||
this.dataStore = dataStore;
|
||||
}
|
||||
@ -78,7 +85,16 @@ public class TemplateObject implements TemplateInfo {
|
||||
|
||||
@Override
|
||||
public String getUri() {
|
||||
return this.dataStore.getUri() + "template/" + this.imageVO.getUrl();
|
||||
if (this.dataStore == null) {
|
||||
return this.imageVO.getUrl();
|
||||
} else {
|
||||
ObjectInDataStoreVO obj = ojbectInStoreMgr.findObject(this.imageVO.getId(), DataObjectType.TEMPLATE, this.dataStore.getId(), this.dataStore.getRole());
|
||||
if (obj.getState() != ObjectInDataStoreStateMachine.State.Ready) {
|
||||
return this.dataStore.getUri() + File.separator + "?type=" + DataObjectType.TEMPLATE + "&size=" + this.imageVO.getSize();
|
||||
} else {
|
||||
return this.dataStore.getUri() + File.separator + "?type=" + DataObjectType.TEMPLATE + "&path=" + obj.getInstallPath();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -54,6 +54,7 @@ public class DefaultPrimaryDataStore implements PrimaryDataStore {
|
||||
protected PrimaryDataStoreDriver driver;
|
||||
protected PrimaryDataStoreVO pdsv;
|
||||
protected PrimaryDataStoreLifeCycle lifeCycle;
|
||||
@Inject
|
||||
private ObjectInDataStoreManager objectInStoreMgr;
|
||||
@Inject
|
||||
ImageDataFactory imageDataFactory;
|
||||
@ -118,8 +119,8 @@ public class DefaultPrimaryDataStore implements PrimaryDataStore {
|
||||
public String getUri() {
|
||||
return this.pdsv.getPoolType() + File.separator
|
||||
+ this.pdsv.getHostAddress() + File.separator
|
||||
+ this.pdsv.getPath();
|
||||
|
||||
+ this.pdsv.getPath() + File.separator
|
||||
+ "?role=" + this.getRole();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -167,9 +167,8 @@ public class DefaultPrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver
|
||||
}
|
||||
|
||||
@Override
|
||||
public String grantAccess(DataObject vol, EndPoint ep) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
public String grantAccess(DataObject object, EndPoint ep) {
|
||||
return object.getUri();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -24,6 +24,8 @@ 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.VolumeInfo;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.disktype.DiskFormat;
|
||||
import org.apache.cloudstack.storage.datastore.ObjectInDataStoreManager;
|
||||
import org.apache.cloudstack.storage.db.ObjectInDataStoreVO;
|
||||
import org.apache.cloudstack.storage.volume.db.VolumeDao2;
|
||||
import org.apache.cloudstack.storage.volume.db.VolumeVO;
|
||||
import org.apache.log4j.Logger;
|
||||
@ -43,14 +45,15 @@ public class VolumeObject implements VolumeInfo {
|
||||
VolumeDao2 volumeDao;
|
||||
@Inject
|
||||
VolumeManager volumeMgr;
|
||||
@Inject
|
||||
ObjectInDataStoreManager ojbectInStoreMgr;
|
||||
|
||||
private VolumeObject(DataStore dataStore, VolumeVO volumeVO) {
|
||||
this.volumeVO = volumeVO;
|
||||
this.dataStore = dataStore;
|
||||
}
|
||||
|
||||
public static VolumeObject getVolumeObject(DataStore dataStore,
|
||||
VolumeVO volumeVO) {
|
||||
public static VolumeObject getVolumeObject(DataStore dataStore, VolumeVO volumeVO) {
|
||||
VolumeObject vo = new VolumeObject(dataStore, volumeVO);
|
||||
vo = ComponentContext.inject(vo);
|
||||
return vo;
|
||||
@ -87,11 +90,9 @@ public class VolumeObject implements VolumeInfo {
|
||||
boolean result = false;
|
||||
_volStateMachine = volumeMgr.getStateMachine();
|
||||
try {
|
||||
result = _volStateMachine.transitTo(volumeVO, event, null,
|
||||
volumeDao);
|
||||
result = _volStateMachine.transitTo(volumeVO, event, null, volumeDao);
|
||||
} catch (NoTransitionException e) {
|
||||
String errorMessage = "Failed to transit volume: "
|
||||
+ this.getVolumeId() + ", due to: " + e.toString();
|
||||
String errorMessage = "Failed to transit volume: " + this.getVolumeId() + ", due to: " + e.toString();
|
||||
s_logger.debug(errorMessage);
|
||||
throw new CloudRuntimeException(errorMessage);
|
||||
}
|
||||
@ -115,8 +116,15 @@ public class VolumeObject implements VolumeInfo {
|
||||
|
||||
@Override
|
||||
public String getUri() {
|
||||
return this.dataStore.getUri() + File.separator + "?type=volume&path="
|
||||
+ this.volumeVO.getPath();
|
||||
if (this.dataStore == null) {
|
||||
throw new CloudRuntimeException("datastore must be set before using this object");
|
||||
}
|
||||
ObjectInDataStoreVO obj = ojbectInStoreMgr.findObject(this.volumeVO.getId(), DataObjectType.VOLUME, this.dataStore.getId(), this.dataStore.getRole());
|
||||
if (obj.getState() != ObjectInDataStoreStateMachine.State.Ready) {
|
||||
return this.dataStore.getUri() + File.separator + "&objType=" + DataObjectType.VOLUME + "&size=" + this.volumeVO.getSize();
|
||||
} else {
|
||||
return this.dataStore.getUri() + File.separator + "&objType=" + DataObjectType.VOLUME + "&path=" + obj.getInstallPath();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -18,10 +18,12 @@ package org.apache.cloudstack.storage.datastore.driver;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
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;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.DataStream;
|
||||
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.EndPoint;
|
||||
import org.apache.cloudstack.framework.async.AsyncCompletionCallback;
|
||||
import org.apache.cloudstack.storage.snapshot.SnapshotInfo;
|
||||
import org.apache.cloudstack.storage.volume.PrimaryDataStoreDriver;
|
||||
@ -29,70 +31,58 @@ import org.apache.cloudstack.storage.volume.PrimaryDataStoreDriver;
|
||||
public class SolidfirePrimaryDataStoreDriver implements PrimaryDataStoreDriver {
|
||||
|
||||
@Override
|
||||
public String grantAccess(DataStream data,
|
||||
org.apache.cloudstack.engine.subsystem.api.storage.EndPoint ep) {
|
||||
public String grantAccess(DataObject data, EndPoint ep) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean revokeAccess(DataStream data,
|
||||
org.apache.cloudstack.engine.subsystem.api.storage.EndPoint ep) {
|
||||
public boolean revokeAccess(DataObject data, EndPoint ep) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<DataStream> listObjects(DataStore store) {
|
||||
public Set<DataObject> listObjects(DataStore store) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createAsync(DataStream data,
|
||||
AsyncCompletionCallback<CreateCmdResult> callback) {
|
||||
public void createAsync(DataObject data, AsyncCompletionCallback<CreateCmdResult> callback) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAsync(
|
||||
DataStream data,
|
||||
AsyncCompletionCallback<org.apache.cloudstack.engine.subsystem.api.storage.CommandResult> callback) {
|
||||
public void deleteAsync(DataObject data, AsyncCompletionCallback<CommandResult> callback) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyAsync(DataStream srcdata, DataStream destData,
|
||||
AsyncCompletionCallback<CopyCommandResult> callback) {
|
||||
public void copyAsync(DataObject srcdata, DataObject destData, AsyncCompletionCallback<CopyCommandResult> callback) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canCopy(DataStream srcData, DataStream destData) {
|
||||
public boolean canCopy(DataObject srcData, DataObject destData) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void takeSnapshot(
|
||||
SnapshotInfo snapshot,
|
||||
AsyncCompletionCallback<org.apache.cloudstack.engine.subsystem.api.storage.CommandResult> callback) {
|
||||
public void takeSnapshot(SnapshotInfo snapshot, AsyncCompletionCallback<CommandResult> callback) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void revertSnapshot(
|
||||
SnapshotInfo snapshot,
|
||||
AsyncCompletionCallback<org.apache.cloudstack.engine.subsystem.api.storage.CommandResult> callback) {
|
||||
public void revertSnapshot(SnapshotInfo snapshot, AsyncCompletionCallback<CommandResult> callback) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user