[ovirt-devel] add a ***Command for a button

Martin Perina mperina at redhat.com
Fri Aug 8 10:22:29 UTC 2014



----- Original Message -----
> From: "力波 王" <wlbleaboy at 126.com>
> To: "Martin Perina" <mperina at redhat.com>
> Cc: "Oved Ourfali" <oourfali at redhat.com>, devel at ovirt.org
> 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" <mperina at redhat.com> 写入:
> 
> >Hi
> >
> >----- Original Message -----
> >> From: "力波 王" <wlbleaboy at 126.com>
> >> To: "Oved Ourfali" <oourfali at redhat.com>
> >> Cc: devel at 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 < oourfali at redhat.com >
> >> 日期: Fri, 8 Aug 2014 04:20:58 -0400 (EDT)
> >> 至: 力波 王 < wlbleaboy at 126.com >
> >> 抄送: < devel at 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==?= <
> >>wlbleaboy at 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 at ovirt.org http://lists.ovirt.org/mailman/listinfo/devel
> >> 
> >> _______________________________________________
> >> Devel mailing list
> >> Devel at ovirt.org
> >> http://lists.ovirt.org/mailman/listinfo/devel
> 
> 
> 
> 



More information about the Devel mailing list