[Libguestfs] nbdkit design: varying the rate limit parameter
Richard W.M. Jones
rjones at redhat.com
Thu Mar 28 18:47:08 UTC 2019
On Thu, Mar 28, 2019 at 11:45:06AM -0500, Eric Blake wrote:
> On 3/26/19 11:13 AM, Richard W.M. Jones wrote:
> > I think our options are:
> >
> > * One-time hack in the rate filter.
> >
> > * One-time hack in the rate filter, but make it compatible with a
> > possible future revision of parameter handling. eg: If we decided
> > that "rate:file" would in future mean "read ‘rate’ parameter from a
> > file" then we could add this as a simple parameter now but
> > systematize it in future.
>
> So if I understand the proposal, we'd use "name:type" (where :type is
> optional and defaults to :string), so that in the future we can define
> other valid types (:file meaning to read from a file, and pay attention
> to whether that file changes at runtime). It would also mean we could
> add types such as :int or :size to get nbdkit to do sanity checking that
> a string is indeed parseable as a particular type of integer, or :bool
> to automatically use nbdkit_parse_bool, rather than having to open-code
> those checks in each plugin/filter using a parameter with those types.
I didn't necessarily mean it would have to be that exact scheme, I
meant any scheme as long as it could plausibly be implemented properly
in future while preserving back-compat. If you can think of something
better ...
> > * Systematize parameters. This would require a great deal of work and
> > likely another version of the API. (I pushed a note into the TODO
> > file for this.)
>
> Have we documented any restrictions on what forms a valid parameter
> name? If we don't allow ':' in current parameter names, that's nicer
> (because we can add the extension of 'name:type') than if our new
> interpretation of ':' could interfere with existing plugin's parameter
> names. Then again, abusing 'name:type' instead of having an actual
> struct may be a reason why a v3 protocol that uses an actual struct
> could be easier to work with.
The code only allows [-A-Za-z0-9._]+ (server/main.c:is_config_key) and
this is also documented in the manual. So ':' is currently not
permitted in keys.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v
More information about the Libguestfs
mailing list