<div dir="ltr">Hi Neil,<div><br><div>Such discussion are imho easiest to be in the PR or emails rather in trac (we will be getting rid of trac soon anyway), but this is more suitable in devel@</div><div>[removing <a href="mailto:users@bb.net">users@bb.net</a> and switch to <a href="mailto:dev@bb.net">dev@bb.net</a>]</div><div><br></div><div><br></div><div>Indeed ForceScheduler is weird and is very different from the other Schedulers even if it derives from BaseScheduler.</div><div>The properties needs to be a list in order to have a defined order, so that the UI can be specified exactly.</div><div>This was designed at a time were OrderedDict was not available in all the python we supported, and now it is legacy. :-(</div><div>The properties from ForceScheduler are not really properties, they need to be BaseParameters subclasses</div><div><br></div><div>I am not sure exactly how we should fix this. Would need to look at the code (hint: submit your current version :) )</div><div><br></div><div>- Do no call super.checkConfig in ForceScheduler ?</div><div>- Change forcescheduler to use OrderedDict instead, and make it translate the properties list to an OrderedDict if it is a list (to support legacy) ?</div><div><br></div><div>I think later is the way to go eventually, but we might want to split this task for later as I dont think this is a good idea to make your PR too big.</div><div><br></div><div>Pierre</div><br><div class="gmail_quote"><div dir="ltr">Le lun. 2 janv. 2017 à 21:45, Neil Gilmore <<a href="mailto:ngilmore@grammatech.com">ngilmore@grammatech.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br class="gmail_msg">
<br class="gmail_msg">
As always, thanks for the advice.<br class="gmail_msg">
<br class="gmail_msg">
I think I've found an irregularity in ForceScheduler (naturally, this<br class="gmail_msg">
would be netter in trac...). If nothing else, it renders some of the<br class="gmail_msg">
documentation on Schedulers to be incorrect (I really can't say which<br class="gmail_msg">
way this should fall). I've run into it while adding back<br class="gmail_msg">
reconfiguration to the Force Scheduler.<br class="gmail_msg">
<br class="gmail_msg">
It concerns the 'properties' argument. On the one hand, BaseScheduler<br class="gmail_msg">
expects this to be a dictionary, and will in fact force it to an empty<br class="gmail_msg">
dictionary if it isn't passed in. One the other, ForceScheduler expects<br class="gmail_msg">
it to be a list, and will force it to a list if it isn't passed in.<br class="gmail_msg">
Additionally, at least in 0.9.2, ForceScheduler.__init__() does not pass<br class="gmail_msg">
its properties argument to BaseScheduler.__init__(). Now, it certainly<br class="gmail_msg">
could be that ForceScheduler really doesn't implement the common<br class="gmail_msg">
'properties', preferring its own instead.<br class="gmail_msg">
<br class="gmail_msg">
But this leads to problems when we attempt to eliminate the __init__()<br class="gmail_msg">
functions in favor of CheckConfig() and reconfigService(). We should<br class="gmail_msg">
preserve the ForceScheduler.__init__() properties (the list kind) in<br class="gmail_msg">
order to check them in checkConfig() and assign them in<br class="gmail_msg">
reconfigService(). But BaseScheduler already has 'properties' (the<br class="gmail_msg">
dictionary kind).<br class="gmail_msg">
<br class="gmail_msg">
I think for now, I'll be introducing something like forceProperties in<br class="gmail_msg">
__init__() which will end up passed in kwargs. This won't affect the<br class="gmail_msg">
current interface to ForceScheduler, and will preserve the original<br class="gmail_msg">
properties (the list kind) to be used later. checkConfig and<br class="gmail_msg">
reconfigService will use it.<br class="gmail_msg">
<br class="gmail_msg">
I'll also point out that ForceScheduler's check for name being a unicode<br class="gmail_msg">
string is incorrect. If passed a unicode string, it fails. The type<br class="gmail_msg">
checked against is 'str', which is not 'unicode'.<br class="gmail_msg">
<br class="gmail_msg">
So far, I can start a buildbot with any of the variety of schedulers. I<br class="gmail_msg">
do need to test reconfiguration to make sure everything actually<br class="gmail_msg">
reconfigures.<br class="gmail_msg">
<br class="gmail_msg">
Then I'll need to submit it and hope the devs like it.<br class="gmail_msg">
<br class="gmail_msg">
Neil Gilmore<br class="gmail_msg">
<a href="http://grammatech.com" rel="noreferrer" class="gmail_msg" target="_blank">grammatech.com</a><br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
users mailing list<br class="gmail_msg">
<a href="mailto:users@buildbot.net" class="gmail_msg" target="_blank">users@buildbot.net</a><br class="gmail_msg">
<a href="https://lists.buildbot.net/mailman/listinfo/users" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.buildbot.net/mailman/listinfo/users</a><br class="gmail_msg">
</blockquote></div></div></div>