----- Original Message ----- > From: "力波 王" <[email protected]> > To: "Martin Perina" <[email protected]> > Cc: "Oved Ourfali" <[email protected]>, [email protected] > Sent: Friday, August 8, 2014 11:40:35 AM > Subject: Re: [ovirt-devel] add a ***Command for a button > > Hi, Oved: > Get the new error : > Error while executing action: A Request to the Server failed: This > application is out of date, please click the refresh button on your > browser. ( The client cannot accept BackupInfo ) >
Can you please post stacktrace of the execption? > In the public VdcReturnValueBase executeAction() > actionAllowed is false > > 在 8/8/14, 16:52, "Martin Perina" <[email protected]> 写入: > > >Hi > > > >----- Original Message ----- > >> From: "力波 王" <[email protected]> > >> To: "Oved Ourfali" <[email protected]> > >> Cc: [email protected] > >> Sent: Friday, August 8, 2014 10:34:38 AM > >> Subject: Re: [ovirt-devel] add a ***Command for a button > >> > >> 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), > > > >Yes > > > >> > >> I don’t know whether is it need a ActionGroup. > > > >You may not need to set ActionGroup for this > > > >More info about oVirt Command architecture you can found at [1]. > > > >Martin Perina > > > >[1] http://www.ovirt.org/Backend_modules_bll > > > >> > >> > >> 发件人: Oved Ourfali < [email protected] > > >> 日期: Fri, 8 Aug 2014 04:20:58 -0400 (EDT) > >> 至: 力波 王 < [email protected] > > >> 抄送: < [email protected] > > >> 主题: 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==?= < > >>[email protected] > > >> 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 > >> [email protected] http://lists.ovirt.org/mailman/listinfo/devel > >> > >> _______________________________________________ > >> Devel mailing list > >> [email protected] > >> http://lists.ovirt.org/mailman/listinfo/devel > > > > _______________________________________________ Devel mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/devel
