Hi ----- Original Message ----- > From: "力波 王" <wlblea...@126.com> > To: "Oved Ourfali" <oourf...@redhat.com> > Cc: devel@ovirt.org > 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 < 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 _______________________________________________ Devel mailing list Devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/devel