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
|
// persist template_store_ref entry
|
||||||
TemplateObject templateOnStore = (TemplateObject)store.create(template);
|
TemplateObject templateOnStore = (TemplateObject)store.create(template);
|
||||||
// update template_store_ref and template state
|
// update template_store_ref and template state
|
||||||
try {
|
try{
|
||||||
templateOnStore.processEvent(ObjectInDataStoreStateMachine.Event.CreateOnlyRequested);
|
templateOnStore.processEvent(ObjectInDataStoreStateMachine.Event.CreateOnlyRequested);
|
||||||
templateOnStore.stateTransit(TemplateEvent.CreateRequested);
|
} catch (Exception e) {
|
||||||
} catch (NoTransitionException e) {
|
|
||||||
s_logger.debug("Failed to transit state", e);
|
|
||||||
TemplateApiResult result = new TemplateApiResult(templateOnStore);
|
TemplateApiResult result = new TemplateApiResult(templateOnStore);
|
||||||
result.setResult(e.toString());
|
result.setResult(e.toString());
|
||||||
result.setSucess(false);
|
result.setSucess(false);
|
||||||
@ -463,12 +461,7 @@ public class TemplateServiceImpl implements TemplateService {
|
|||||||
TemplateApiResult result = new TemplateApiResult(template);
|
TemplateApiResult result = new TemplateApiResult(template);
|
||||||
CreateCmdResult callbackResult = callback.getResult();
|
CreateCmdResult callbackResult = callback.getResult();
|
||||||
if (callbackResult.isFailed()) {
|
if (callbackResult.isFailed()) {
|
||||||
try {
|
|
||||||
template.processEvent(ObjectInDataStoreStateMachine.Event.OperationFailed);
|
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());
|
result.setResult(callbackResult.getResult());
|
||||||
parentCallback.complete(result);
|
parentCallback.complete(result);
|
||||||
return null;
|
return null;
|
||||||
@ -476,9 +469,7 @@ public class TemplateServiceImpl implements TemplateService {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
template.processEvent(ObjectInDataStoreStateMachine.Event.OperationSuccessed);
|
template.processEvent(ObjectInDataStoreStateMachine.Event.OperationSuccessed);
|
||||||
template.stateTransit(TemplateEvent.OperationSucceeded);
|
} catch (Exception e) {
|
||||||
} catch (NoTransitionException e) {
|
|
||||||
s_logger.debug("Failed to transit state", e);
|
|
||||||
result.setResult(e.toString());
|
result.setResult(e.toString());
|
||||||
parentCallback.complete(result);
|
parentCallback.complete(result);
|
||||||
return null;
|
return null;
|
||||||
@ -494,13 +485,6 @@ public class TemplateServiceImpl implements TemplateService {
|
|||||||
TemplateObject to = (TemplateObject) template;
|
TemplateObject to = (TemplateObject) template;
|
||||||
// update template_store_ref status
|
// update template_store_ref status
|
||||||
to.processEvent(ObjectInDataStoreStateMachine.Event.DestroyRequested);
|
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>();
|
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) {
|
public Void deleteTemplateCallback(AsyncCallbackDispatcher<TemplateServiceImpl, CommandResult> callback, TemplateOpContext<TemplateApiResult> context) {
|
||||||
CommandResult result = callback.getResult();
|
CommandResult result = callback.getResult();
|
||||||
TemplateObject vo = context.getTemplate();
|
TemplateObject vo = context.getTemplate();
|
||||||
// we can only update state in template_store_ref table
|
|
||||||
if (result.isSuccess()) {
|
if (result.isSuccess()) {
|
||||||
vo.processEvent(Event.OperationSuccessed);
|
vo.processEvent(Event.OperationSuccessed);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -41,6 +41,8 @@ public class ImageDataManagerImpl implements ImageDataManager {
|
|||||||
stateMachine.addTransition(TemplateState.Destroying, TemplateEvent.DestroyRequested, TemplateState.Destroying);
|
stateMachine.addTransition(TemplateState.Destroying, TemplateEvent.DestroyRequested, TemplateState.Destroying);
|
||||||
stateMachine.addTransition(TemplateState.Destroying, TemplateEvent.OperationFailed, TemplateState.Destroying);
|
stateMachine.addTransition(TemplateState.Destroying, TemplateEvent.OperationFailed, TemplateState.Destroying);
|
||||||
stateMachine.addTransition(TemplateState.Destroying, TemplateEvent.OperationSucceeded, TemplateState.Destroyed);
|
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
|
@Override
|
||||||
|
|||||||
@ -178,6 +178,8 @@ public class TemplateObject implements TemplateInfo {
|
|||||||
TemplateEvent templEvent = null;
|
TemplateEvent templEvent = null;
|
||||||
if (event == ObjectInDataStoreStateMachine.Event.CreateOnlyRequested) {
|
if (event == ObjectInDataStoreStateMachine.Event.CreateOnlyRequested) {
|
||||||
templEvent = TemplateEvent.CreateRequested;
|
templEvent = TemplateEvent.CreateRequested;
|
||||||
|
} else if (event == ObjectInDataStoreStateMachine.Event.DestroyRequested){
|
||||||
|
templEvent = TemplateEvent.DestroyRequested;
|
||||||
} else if (event == ObjectInDataStoreStateMachine.Event.OperationSuccessed) {
|
} else if (event == ObjectInDataStoreStateMachine.Event.OperationSuccessed) {
|
||||||
templEvent = TemplateEvent.OperationSucceeded;
|
templEvent = TemplateEvent.OperationSucceeded;
|
||||||
} else if (event == ObjectInDataStoreStateMachine.Event.OperationFailed) {
|
} else if (event == ObjectInDataStoreStateMachine.Event.OperationFailed) {
|
||||||
@ -229,6 +231,8 @@ public class TemplateObject implements TemplateInfo {
|
|||||||
TemplateEvent templEvent = null;
|
TemplateEvent templEvent = null;
|
||||||
if (event == ObjectInDataStoreStateMachine.Event.CreateOnlyRequested) {
|
if (event == ObjectInDataStoreStateMachine.Event.CreateOnlyRequested) {
|
||||||
templEvent = TemplateEvent.CreateRequested;
|
templEvent = TemplateEvent.CreateRequested;
|
||||||
|
} else if (event == ObjectInDataStoreStateMachine.Event.DestroyRequested){
|
||||||
|
templEvent = TemplateEvent.DestroyRequested;
|
||||||
} else if (event == ObjectInDataStoreStateMachine.Event.OperationSuccessed) {
|
} else if (event == ObjectInDataStoreStateMachine.Event.OperationSuccessed) {
|
||||||
templEvent = TemplateEvent.OperationSucceeded;
|
templEvent = TemplateEvent.OperationSucceeded;
|
||||||
} else if (event == ObjectInDataStoreStateMachine.Event.OperationFailed) {
|
} else if (event == ObjectInDataStoreStateMachine.Event.OperationFailed) {
|
||||||
|
|||||||
@ -108,6 +108,9 @@ public class ObjectInDataStoreManagerImpl implements ObjectInDataStoreManager {
|
|||||||
State.Destroyed);
|
State.Destroyed);
|
||||||
stateMachines.addTransition(State.Destroying, Event.OperationFailed,
|
stateMachines.addTransition(State.Destroying, Event.OperationFailed,
|
||||||
State.Destroying);
|
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
|
@Override
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user