On Tue, 22 Sep 2015 22:18:10 -0400 Michael Ezzell <mich...@ezzell.net> wrote:
> I don't see a significant problem, if there are benefits to be gained. > > I assume part of the motivation is to prevent inadvertently calling an > inappropriate function as an action, to perhaps to allow earlier validation > of the configuration of actions referencing Lua functions, and to separate > the namespaces of Lua functions and HAProxy Lua actions. > > As long as no capabilities are lost or performance penalties are created, I > don't see the change as being extreme. > > One point that is not clear is how this "facilitates the distribution of > Lua scripts for HAProxy." You would need to look at the script to find the > registered action name, the same as if you had to look at the script to > find the function name... Sure, you're right. When I wrote this, I thought to an Lua file like an addon with documentation who add some functions, perfectly defined. So, with the registration function name based, an administrator can call anything function, even bad functions. > though perhaps the intention is to express the > idea that "not every Lua function is appropriate to directly reference in > the configuration" since there may be "private" functions in a script that > are only intended to support other (exposed) functions, rather than being > called directly. Exactly. > Perhaps you could provide more insight, particularly if I incorrect on some > of these assumptions. Otherwise, I don't see a reason to object (but I am > not yet using Lua in production, so for me the change has minimal impact.) I thought that I gave all the detail possibles. The change that I proposes is just two things: - Add a call to the registration in lu Lua file, (core.action_register("name", function) ). - Change a little bit the configuration file: "http-request lua.name" instead of "http-request lua name" (only the 'dot' between "lua" and "name" who will become one word in place od two separate words). Thierry > On Sep 22, 2015 9:27 PM, <thierry.fourn...@arpalert.org> wrote: > > > Hi list, > > > > Actually we two Lua registration forms: > > > > The style of fetches and converters (and coming soon the "services"). > > With this registering style, the Lua developer register the function in > > the haproxy core like this: > > > > core.register_fetch("fetch-name", function(...) > > ... code ... > > end) > > > > In the HAProxy configuration file, the registered Lua fetch can be used > > like other fetch. it is automatically prefixed by "lua.". For example: > > > > use-backend service if { lua.fetch-name } > > > > The second mode is used with actions. Each action doesn't require any > > registration. The user just give the Lua function name in the ha proxy > > configuration. For example, in Lua file: > > > > function my_action(...) > > ... code ... > > end > > > > And the associated HAProxy file: > > > > http-request lua my_action > > > > I want to remove the second declaration mode. After this the actions > > will be registered like fetches and converters. The previous example > > should become: > > > > core.register_action("action-name", function(...) > > ... code ... > > end) > > > > And > > > > http-request lua.action-name > > > > I think that this mode of registration facilitates the distribution of > > Lua scripts for HAProxy. The administrator doesn't look into the file > > bout any function name, and the administrator cannot call a function > > which is not designed for running in an HAProxy action. > > > > My problem, is that the second configuration mode exists in HAProxy > > from a long time. I don't want to remove it without a consultation of > > the people who already use this feature. My other problem, is that if > > the version 1.6 is released with the second mode, we will keep (and > > maintain) for a long time :) > > > > the discussion is open, please give me your opinions. > > > > Thierry > > > >