2626import com .cloud .agent .api .to .NfsTO ;
2727import com .cloud .storage .Storage ;
2828import com .cloud .storage .VMTemplateStorageResourceAssoc ;
29- import com .cloud .storage .VMTemplateVO ;
30- import com .cloud .storage .VolumeVO ;
3129import com .cloud .storage .dao .VMTemplateDao ;
3230import com .cloud .storage .dao .VolumeDao ;
3331import org .apache .cloudstack .engine .subsystem .api .storage .CreateCmdResult ;
3432import org .apache .cloudstack .engine .subsystem .api .storage .DataObject ;
3533import org .apache .cloudstack .engine .subsystem .api .storage .DataStore ;
36- import org .apache .cloudstack .engine .subsystem .api .storage .ObjectInDataStoreStateMachine ;
3734import org .apache .cloudstack .framework .async .AsyncCallbackDispatcher ;
3835import org .apache .cloudstack .framework .async .AsyncCompletionCallback ;
39- import org .apache .cloudstack .framework .async .AsyncRpcContext ;
4036import org .apache .cloudstack .storage .datastore .db .TemplateDataStoreDao ;
41- import org .apache .cloudstack .storage .datastore .db .TemplateDataStoreVO ;
4237import org .apache .cloudstack .storage .datastore .db .VolumeDataStoreDao ;
43- import org .apache .cloudstack .storage .datastore .db .VolumeDataStoreVO ;
4438import org .apache .cloudstack .storage .image .BaseImageStoreDriverImpl ;
4539import org .apache .cloudstack .storage .image .store .ImageStoreImpl ;
46- import org .apache .cloudstack .storage .to .TemplateObjectTO ;
47- import org .apache .cloudstack .storage .to .VolumeObjectTO ;
4840
4941import javax .inject .Inject ;
50- import java .util .Date ;
42+ import java .util .UUID ;
5143
5244public class SimulatorImageStoreDriverImpl extends BaseImageStoreDriverImpl {
5345
@@ -69,82 +61,46 @@ public DataStoreTO getStoreTO(DataStore store) {
6961 return nfsTO ;
7062 }
7163
72- class CreateContext <T > extends AsyncRpcContext <T > {
73- final DataObject data ;
7464
75- public CreateContext (AsyncCompletionCallback <T > callback , DataObject data ) {
76- super (callback );
77- this .data = data ;
78- }
79- }
8065
8166 public String createEntityExtractUrl (DataStore store , String installPath , Storage .ImageFormat format ) {
8267 return null ;
8368 }
8469
8570 @ Override
86- public void createAsync (DataObject data , AsyncCompletionCallback <CreateCmdResult > callback ) {
87- CreateContext <CreateCmdResult > context = new CreateContext <CreateCmdResult >(callback , data );
88- AsyncCallbackDispatcher <SimulatorImageStoreDriverImpl , DownloadAnswer > caller = AsyncCallbackDispatcher
89- .create (this );
90- caller .setContext (context );
71+ public void createAsync (DataStore store , DataObject data , AsyncCompletionCallback <CreateCmdResult > callback ) {
9172 if (data .getType () == DataObjectType .TEMPLATE ) {
92- this .createTemplateAsyncCallback ( caller , context );
73+ this .createTemplate ( data , callback );
9374 } else if (data .getType () == DataObjectType .VOLUME ) {
94- this .createVolumeAsyncCallback ( caller , context );
75+ this .createVolume ( data , callback );
9576 }
9677 }
9778
98- protected Void createTemplateAsyncCallback (AsyncCallbackDispatcher <SimulatorImageStoreDriverImpl , DownloadAnswer > callback ,
99- CreateContext <CreateCmdResult > context ) {
100- DataObject obj = context .data ;
101- DataStore store = obj .getDataStore ();
102- TemplateObjectTO templateTO = (TemplateObjectTO )context .data .getTO ();
103-
104- TemplateDataStoreVO tmpltStoreVO = _templateStoreDao .findByStoreTemplate (store .getId (), obj .getId ());
105- if (tmpltStoreVO != null ) {
106- TemplateDataStoreVO updateBuilder = _templateStoreDao .createForUpdate ();
107- updateBuilder .setDownloadPercent (100 );
108- updateBuilder .setDownloadState (VMTemplateStorageResourceAssoc .Status .DOWNLOADED );
109- updateBuilder .setLastUpdated (new Date ());
110- updateBuilder .setSize (new Long (5 * 1024L * 1024L ));
111- updateBuilder .setPhysicalSize (new Long (5 * 1024L * 1024L ));
112- updateBuilder .setDownloadUrl (templateTO .getOrigUrl ());
113- updateBuilder .setInstallPath (templateTO .getPath ());
114- updateBuilder .setTemplateId (templateTO .getId ());
115- updateBuilder .setState (ObjectInDataStoreStateMachine .State .Ready );
116- _templateStoreDao .update (tmpltStoreVO .getId (), updateBuilder );
117- // update size in vm_template table
118- VMTemplateVO tmlptUpdater = _templateDao .createForUpdate ();
119- tmlptUpdater .setSize (new Long (5 * 1024l * 1024l ));
120- _templateDao .update (obj .getId (), tmlptUpdater );
121- }
122- return null ;
79+ protected void createTemplate (DataObject data , AsyncCompletionCallback <CreateCmdResult > callback ) {
80+ CreateContext <CreateCmdResult > context = new CreateContext <CreateCmdResult >(callback , data );
81+ AsyncCallbackDispatcher <SimulatorImageStoreDriverImpl , DownloadAnswer > caller = AsyncCallbackDispatcher
82+ .create (this );
83+ caller .setContext (context );
84+ caller .setCallback (caller .getTarget ().createTemplateAsyncCallback (null , null ));
85+ String path = UUID .randomUUID ().toString ();
86+ Long size = new Long (5 * 1024L * 1024L );
87+ DownloadAnswer answer = new DownloadAnswer (null , 100 , null , VMTemplateStorageResourceAssoc .Status .DOWNLOADED ,
88+ path , path , size , size , null );
89+ caller .complete (answer );
90+ return ;
12391 }
12492
125- protected Void createVolumeAsyncCallback (AsyncCallbackDispatcher <SimulatorImageStoreDriverImpl , DownloadAnswer > callback ,
126- CreateContext <CreateCmdResult > context ) {
127- DataObject obj = context .data ;
128- DataStore store = obj .getDataStore ();
129- VolumeObjectTO volumeTO = (VolumeObjectTO ) context .data .getTO ();
130-
131- VolumeDataStoreVO volStoreVO = _volumeStoreDao .findByStoreVolume (store .getId (), obj .getId ());
132- if (volStoreVO != null ) {
133- VolumeDataStoreVO updateBuilder = _volumeStoreDao .createForUpdate ();
134- updateBuilder .setDownloadPercent (100 );
135- updateBuilder .setDownloadState (VMTemplateStorageResourceAssoc .Status .DOWNLOADED );
136- updateBuilder .setLastUpdated (new Date ());
137- updateBuilder .setInstallPath (volumeTO .getPath ());
138- updateBuilder .setVolumeId (volumeTO .getVolumeId ());
139- updateBuilder .setSize (volumeTO .getSize ());
140- updateBuilder .setPhysicalSize (volumeTO .getSize ());
141- updateBuilder .setState (ObjectInDataStoreStateMachine .State .Ready );
142- _volumeStoreDao .update (volStoreVO .getId (), updateBuilder );
143- // update size in volume table
144- VolumeVO volUpdater = _volumeDao .createForUpdate ();
145- volUpdater .setSize (volumeTO .getSize ());
146- _volumeDao .update (obj .getId (), volUpdater );
147- }
148- return null ;
93+ protected void createVolume (DataObject data , AsyncCompletionCallback <CreateCmdResult > callback ) {
94+ CreateContext <CreateCmdResult > context = new CreateContext <CreateCmdResult >(callback , data );
95+ AsyncCallbackDispatcher <SimulatorImageStoreDriverImpl , DownloadAnswer > caller = AsyncCallbackDispatcher
96+ .create (this );
97+ caller .setContext (context );
98+ caller .setCallback (caller .getTarget ().createVolumeAsyncCallback (null , null ));
99+ String path = UUID .randomUUID ().toString ();
100+ Long size = new Long (5 * 1024L * 1024L );
101+ DownloadAnswer answer = new DownloadAnswer (null , 100 , null , VMTemplateStorageResourceAssoc .Status .DOWNLOADED ,
102+ path , path , size , size , null );
103+ caller .complete (answer );
104+ return ;
149105 }
150106}
0 commit comments