hi, Oved: I don’t know how to add a VdcAction, Is this could work: public enum VdcActionType { Unknown(0, QuotaDependency.NONE), Backup(9000, QuotaDependency.NONE),
I don’t know whether is it need a ActionGroup. 发件人: Oved Ourfali <oourf...@redhat.com> 日期: Fri, 8 Aug 2014 04:20:58 -0400 (EDT) 至: 力波 王 <wlblea...@126.com> 抄送: <devel@ovirt.org> 主题: Re: [ovirt-devel] add a ***Command for a button Hi Didn't do a too deep code review, but from a first glance You need to add a new VdcActionType that is called BackupInfo, and use that when you call RunAction. Hope it helps, Oved On Aug 8, 2014 11:11 AM, =?UTF-8?B?5Yqb5rOiIOeOiw==?= <wlblea...@126.com> wrote: Hi, everyone: I added a button on the Template Tab, in the client side, It’s OK, Added the button’s callback like this: ======================================================================= private void backup() { BackupInfoParameters param = new BackupInfoParameters(); Frontend.RunAction(VdcActionType.Unknown, param, new IFrontendActionAsyncCallback() { @Override public void executed(FrontendActionAsyncResult result) { } }); } ======================================================================= The BackupInfoCommand.java is : ======================================================================= package org.ovirt.engine.core.bll; import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.common.action.BackupInfoParameters; import java.io.IOException; import java.util.Collections; import java.util.List; /** * Created by leaboy on 8/7/14. */ public class BackupInfoCommand <T extends BackupInfoParameters> extends CommandBase<T>{ public BackupInfoCommand(T parameters){ super(parameters); } @Override public List<PermissionSubject> getPermissionCheckSubjects() { return Collections.emptyList(); } @Override protected boolean canDoAction() { return true; } @Override protected void executeCommand() { int a; a = 1; try{ Runtime.getRuntime().exec("touch /tmp/tmp.txt"); }catch (IOException e){ e.printStackTrace(); } } } ======================================================================= And the BackupInfoParameters.java is: ======================================================================= package org.ovirt.engine.core.common.action; /** * Created by leaboy on 8/7/14. */ public class BackupInfoParameters extends VdcActionParametersBase implements java.io.Serializable{ private static final long serialVersionUID = -1363077467684414051L; private VdcActionType _actionType; //public BackupInfoParameters(){} public BackupInfoParameters(){_actionType = VdcActionType.Unknown;} public VdcActionType getActionType() { return _actionType; } } ======================================================================= Built the code success, but when I clicked the button, got a dialog with the error info: Error while executing action: A Request to the Server failed with the following Status Code: 500 I debug it , find the error is raised at : protected VdcReturnValueBase evaluateCorrelationId(CommandBase<?> commandBase) { VdcReturnValueBase returnValue = null; // Evaluate and set the correlationId on the parameters, fails on invalid correlation id returnValue = ExecutionHandler.evaluateCorrelationId(commandBase.getParameters()); if (returnValue != null) { log.warnFormat("CanDoAction of action {0} failed. Reasons: {1}", commandBase.getActionType(), StringUtils.join(returnValue.getCanDoActionMessages(), ',')); } // Set the correlation-id on the command commandBase.setCorrelationId(commandBase.getParameters().getCorrelationId()) ; return returnValue; } _______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel
_______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel