mogadm host modify...
Brad Fitzpatrick
brad at danga.com
Tue Nov 14 01:03:50 UTC 2006
Good find! Thanks!
On Mon, 13 Nov 2006, Saunders, Newton wrote:
> Hi,
>
> I looked at Getopt::Long a bit more and I've found the problem. The
> Getopt::Long configuration is fine, however, cmd_host_modify needs to
> shift the $name from @ARGV instead of from the copy of @ARGV that is
> passed in via $cmdsub->(@ARGV) .
>
> sub cmd_host_modify {
> - my $name = shift;
> + my $name = shift @ARGV;
> cmd_help_die() unless $name;
> ...
> }
>
> The problem is that GetOptions operates directly on @ARGV, and with the
> require_order and pass_through options enabled, "options processing will
> terminate at the first unrecognized option, or non-option, whichever
> comes first" (from the Perldoc). Unless we shift $name directly from
> @ARGV, GetOptions will terminate on the hostname argument (in the call
> "host modify hostname --status=alive").
>
> It appears as though cmd_host_modify is the only command sub that
> doesn't shift directly from @ARGV before calling GetOptions.
>
>
> Regards,
>
> Newton
>
>
>
> -----Original Message-----
> From: Brad Fitzpatrick [mailto:brad at danga.com]
> Sent: Monday, November 13, 2006 2:50 PM
> To: Saunders, Newton
> Cc: mogilefs at lists.danga.com
> Subject: Re: mogadm host modify...
>
> I'm not sure that's entirely correct. I spent a bit of time yesterday
> fighting this.
>
> Basically we want strict argument checking both before the verb, and
> after
> the verb's options:
>
> mogadm --someoptions verb modify --verb-options=foo --bogus-option
>
> And have --bogus-option fail, as well as any bogus options before the
> verb.
>
> I wasn't able to figure it out quick enough and moved on. Do you know
> how
> to accomplish that?
>
> I thought 'no_require_order' was the default? I'm wondering why we set
> any Configure() options at all if the default was doing what we wanted.
>
>
>
> On Mon, 13 Nov 2006, Saunders, Newton wrote:
>
> > Hi,
> >
> >
> >
> > I just updated to the latest version of MogileFS in subversion and am
> > having some trouble with the mogadm utility. I am unable to change a
> > host's status or http_port. The following call does not cause an
> error,
> > however, it also does not modify the host:
> >
> >
> >
> > mogadm --trackers=<tracker_host>:<tracker_port> host modify
> > <storage_node_host> --status=alive --port=22675
> >
> >
> >
> >
> >
> > The issue lies with the GetOpt::Long configuration. This change fixes
> > the problem:
> >
> >
> >
> > [newton] ~/mogilefs > svn diff utils/mogadm
> >
> > Index: utils/mogadm
> >
> > ===================================================================
> >
> > --- utils/mogadm (revision 458)
> >
> > +++ utils/mogadm (working copy)
> >
> > @@ -135,7 +135,7 @@
> >
> > "help" => \$opts{help},
> >
> > "verbose" => \$opts{verbose},
> >
> > ) or abortWithUsage();
> >
> > -Getopt::Long::Configure("require_order");
> >
> > +Getopt::Long::Configure("no_require_order");
> >
> >
> >
> > # bail for help
> >
> > abortWithUsage() if $opts{help};
> >
> > [newton] ~/mogilefs >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > Thanks,
> >
> >
> >
> > Newton
> >
> >
>
>
More information about the mogilefs
mailing list