mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	Add state transition for destroy scenario.
This commit is contained in:
		
							parent
							
								
									70f866156f
								
							
						
					
					
						commit
						8984e430ce
					
				| @ -154,9 +154,21 @@ public class TemplateServiceImpl implements TemplateService { | ||||
|     public void createTemplateAsync( | ||||
|             TemplateInfo template, DataStore store, AsyncCompletionCallback<TemplateApiResult> callback) { | ||||
|         // persist template_store_ref entry | ||||
|         DataObject templateOnStore = store.create(template); | ||||
|         // update template_store_ref state | ||||
|         templateOnStore.processEvent(ObjectInDataStoreStateMachine.Event.CreateOnlyRequested); | ||||
|         TemplateObject templateOnStore = (TemplateObject)store.create(template); | ||||
|         // update template_store_ref and template state | ||||
|         try { | ||||
|             templateOnStore.processEvent(ObjectInDataStoreStateMachine.Event.CreateOnlyRequested); | ||||
|             templateOnStore.stateTransit(TemplateEvent.CreateRequested); | ||||
|         } catch (NoTransitionException e) { | ||||
|             s_logger.debug("Failed to transit state", e); | ||||
|             TemplateApiResult result = new TemplateApiResult(templateOnStore); | ||||
|             result.setResult(e.toString()); | ||||
|             result.setSucess(false); | ||||
|             if ( callback != null ){ | ||||
|                 callback.complete(result); | ||||
|             } | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         TemplateOpContext<TemplateApiResult> context = new TemplateOpContext<TemplateApiResult>(callback, | ||||
|                 (TemplateObject)templateOnStore, null); | ||||
| @ -482,6 +494,14 @@ public class TemplateServiceImpl implements TemplateService { | ||||
|         TemplateObject to = (TemplateObject) template; | ||||
|         // update template_store_ref status | ||||
|         to.processEvent(ObjectInDataStoreStateMachine.Event.DestroyRequested); | ||||
|         try { | ||||
|             to.stateTransit(TemplateEvent.DestroyRequested); | ||||
|         } catch (NoTransitionException e) { | ||||
|             s_logger.debug("Failed to transit state", e); | ||||
|             //TODO: not fatal right now, still continue | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         AsyncCallFuture<TemplateApiResult> future = new AsyncCallFuture<TemplateApiResult>(); | ||||
| 
 | ||||
|         TemplateOpContext<TemplateApiResult> context = new TemplateOpContext<TemplateApiResult>(null, to, future); | ||||
|  | ||||
| @ -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.DataStoreManager; | ||||
| import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine; | ||||
| import org.apache.cloudstack.engine.subsystem.api.storage.TemplateEvent; | ||||
| import org.apache.cloudstack.engine.subsystem.api.storage.TemplateState; | ||||
| import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.Event; | ||||
| import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.State; | ||||
| import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotDataFactory; | ||||
| @ -98,6 +100,14 @@ public class ObjectInDataStoreManagerImpl implements ObjectInDataStoreManager { | ||||
|                 State.Ready); | ||||
|         stateMachines.addTransition(State.Copying, Event.OperationFailed, | ||||
|                 State.Ready); | ||||
|         stateMachines.addTransition(State.Ready, Event.DestroyRequested, | ||||
|                 State.Destroying); | ||||
|         stateMachines.addTransition(State.Destroying, Event.DestroyRequested, | ||||
|                 State.Destroying); | ||||
|         stateMachines.addTransition(State.Destroying, Event.OperationSuccessed, | ||||
|                 State.Destroyed); | ||||
|         stateMachines.addTransition(State.Destroying, Event.OperationFailed, | ||||
|                 State.Destroying); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user