mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Register template, delete template and create instance from registered
template are working on NFS.
This commit is contained in:
parent
ac7be218d5
commit
f8edb55497
@ -156,11 +156,9 @@ public class TemplateServiceImpl implements TemplateService {
|
||||
// persist template_store_ref entry
|
||||
TemplateObject templateOnStore = (TemplateObject)store.create(template);
|
||||
// update template_store_ref and template state
|
||||
try {
|
||||
try{
|
||||
templateOnStore.processEvent(ObjectInDataStoreStateMachine.Event.CreateOnlyRequested);
|
||||
templateOnStore.stateTransit(TemplateEvent.CreateRequested);
|
||||
} catch (NoTransitionException e) {
|
||||
s_logger.debug("Failed to transit state", e);
|
||||
} catch (Exception e) {
|
||||
TemplateApiResult result = new TemplateApiResult(templateOnStore);
|
||||
result.setResult(e.toString());
|
||||
result.setSucess(false);
|
||||
@ -463,12 +461,7 @@ public class TemplateServiceImpl implements TemplateService {
|
||||
TemplateApiResult result = new TemplateApiResult(template);
|
||||
CreateCmdResult callbackResult = callback.getResult();
|
||||
if (callbackResult.isFailed()) {
|
||||
try {
|
||||
template.processEvent(ObjectInDataStoreStateMachine.Event.OperationFailed);
|
||||
template.stateTransit(TemplateEvent.OperationFailed);
|
||||
} catch (NoTransitionException e) {
|
||||
s_logger.debug("Failed to update template state", e);
|
||||
}
|
||||
result.setResult(callbackResult.getResult());
|
||||
parentCallback.complete(result);
|
||||
return null;
|
||||
@ -476,9 +469,7 @@ public class TemplateServiceImpl implements TemplateService {
|
||||
|
||||
try {
|
||||
template.processEvent(ObjectInDataStoreStateMachine.Event.OperationSuccessed);
|
||||
template.stateTransit(TemplateEvent.OperationSucceeded);
|
||||
} catch (NoTransitionException e) {
|
||||
s_logger.debug("Failed to transit state", e);
|
||||
} catch (Exception e) {
|
||||
result.setResult(e.toString());
|
||||
parentCallback.complete(result);
|
||||
return null;
|
||||
@ -494,13 +485,6 @@ 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>();
|
||||
|
||||
@ -514,7 +498,6 @@ public class TemplateServiceImpl implements TemplateService {
|
||||
public Void deleteTemplateCallback(AsyncCallbackDispatcher<TemplateServiceImpl, CommandResult> callback, TemplateOpContext<TemplateApiResult> context) {
|
||||
CommandResult result = callback.getResult();
|
||||
TemplateObject vo = context.getTemplate();
|
||||
// we can only update state in template_store_ref table
|
||||
if (result.isSuccess()) {
|
||||
vo.processEvent(Event.OperationSuccessed);
|
||||
} else {
|
||||
|
||||
@ -41,6 +41,8 @@ public class ImageDataManagerImpl implements ImageDataManager {
|
||||
stateMachine.addTransition(TemplateState.Destroying, TemplateEvent.DestroyRequested, TemplateState.Destroying);
|
||||
stateMachine.addTransition(TemplateState.Destroying, TemplateEvent.OperationFailed, TemplateState.Destroying);
|
||||
stateMachine.addTransition(TemplateState.Destroying, TemplateEvent.OperationSucceeded, TemplateState.Destroyed);
|
||||
//TODO: this should not be needed, but it happened during testing where multiple success event is sent to callback
|
||||
stateMachine.addTransition(TemplateState.Ready, TemplateEvent.OperationSucceeded, TemplateState.Ready);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -178,6 +178,8 @@ public class TemplateObject implements TemplateInfo {
|
||||
TemplateEvent templEvent = null;
|
||||
if (event == ObjectInDataStoreStateMachine.Event.CreateOnlyRequested) {
|
||||
templEvent = TemplateEvent.CreateRequested;
|
||||
} else if (event == ObjectInDataStoreStateMachine.Event.DestroyRequested){
|
||||
templEvent = TemplateEvent.DestroyRequested;
|
||||
} else if (event == ObjectInDataStoreStateMachine.Event.OperationSuccessed) {
|
||||
templEvent = TemplateEvent.OperationSucceeded;
|
||||
} else if (event == ObjectInDataStoreStateMachine.Event.OperationFailed) {
|
||||
@ -229,6 +231,8 @@ public class TemplateObject implements TemplateInfo {
|
||||
TemplateEvent templEvent = null;
|
||||
if (event == ObjectInDataStoreStateMachine.Event.CreateOnlyRequested) {
|
||||
templEvent = TemplateEvent.CreateRequested;
|
||||
} else if (event == ObjectInDataStoreStateMachine.Event.DestroyRequested){
|
||||
templEvent = TemplateEvent.DestroyRequested;
|
||||
} else if (event == ObjectInDataStoreStateMachine.Event.OperationSuccessed) {
|
||||
templEvent = TemplateEvent.OperationSucceeded;
|
||||
} else if (event == ObjectInDataStoreStateMachine.Event.OperationFailed) {
|
||||
|
||||
@ -108,6 +108,9 @@ public class ObjectInDataStoreManagerImpl implements ObjectInDataStoreManager {
|
||||
State.Destroyed);
|
||||
stateMachines.addTransition(State.Destroying, Event.OperationFailed,
|
||||
State.Destroying);
|
||||
//TODO: further investigate why an extra event is sent when it is alreay Ready
|
||||
stateMachines.addTransition(State.Ready, Event.OperationSuccessed,
|
||||
State.Ready);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user