<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi Pierre,<br>
    <br>
    Thanks for the pointer. I think part of the problem is cognitive
    dissonance attacking me from a previous life, where 'PR' meant
    'problem resolution'. I don't do much git at all, so while I
    understand pull request, the abbreviation of PR wasn't quite getting
    through.<br>
    <br>
    Neil Gilmore<br>
    grammatech.com<br>
    <br>
    <div class="moz-cite-prefix">On 12/22/2016 2:27 PM, Pierre Tardy
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAJ+soVcvQi=x0fy7tVORjp+0pXJ0pNAvwh-H0h5O8jAnFDG2sQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">PR means pull request
        <div><br>
        </div>
        <div>This is the basic howto for our contribution.</div>
        <div><a moz-do-not-send="true"
            href="http://trac.buildbot.net/wiki/SubmittingPatches">http://trac.buildbot.net/wiki/SubmittingPatches</a><br>
        </div>
        <div><br>
        </div>
        <div>Have great holidays!</div>
        <div>Pierre</div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr">Le jeu. 22 déc. 2016 à 21:20, Neil Gilmore <<a
            moz-do-not-send="true" 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">
          <div bgcolor="#FFFFFF" text="#000000" class="gmail_msg"> Hi
            Pierre,<br class="gmail_msg">
            <br class="gmail_msg">
            Thanks for the reply.<br class="gmail_msg">
            <br class="gmail_msg">
            I'll have a look at the worker to see what it's doing, then
            see what I can do in my code. Mostly, I just needed a
            direction to go, and there were several available.<br
              class="gmail_msg">
            <br class="gmail_msg">
            I think I asked about PR before, as I'm not familiar with
            the acronym, but I don't recall getting an answer. Any
            pointer would be helpful.<br class="gmail_msg">
            <br class="gmail_msg">
            I did get the OK from on high to share the code back. I
            wouldn't say it's finished by any means, but all the bones
            are there. I'm not going to be around much until after New
            Year's, though.</div>
          <div bgcolor="#FFFFFF" text="#000000" class="gmail_msg"><br
              class="gmail_msg">
            <br class="gmail_msg">
            Neil Gilmore<br class="gmail_msg">
            <a moz-do-not-send="true" href="http://grammatech.com"
              class="gmail_msg" target="_blank">grammatech.com</a></div>
          <div bgcolor="#FFFFFF" text="#000000" class="gmail_msg"><br
              class="gmail_msg">
            <br class="gmail_msg">
            <div class="m_-5114723971162609806moz-cite-prefix gmail_msg">On
              12/22/2016 2:11 PM, Pierre Tardy wrote:<br
                class="gmail_msg">
            </div>
            <blockquote type="cite" class="gmail_msg">
              <div dir="ltr" class="gmail_msg">
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                I think indeed, this is such a case were you would need
                to actually store some part of the config in the object
                inside checkConfig.
                <div class="gmail_msg">Like you already pointed out
                  there are already some of the objects (if I recall
                  correctly the worker are doing that) that are doing
                  that for the same reason.</div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg">Looks like you are at the point
                  were you could start sharing the code. I think it
                  would be easier to discuss this in a PR even if this
                  is not fully finished.</div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg">Pierre</div>
              </div>
              <br class="gmail_msg">
              <div class="gmail_quote gmail_msg">
                <div dir="ltr" class="gmail_msg">Le jeu. 22 déc. 2016
                  à 17:08, Neil Gilmore <<a moz-do-not-send="true"
                    href="mailto:ngilmore@grammatech.com"
                    class="gmail_msg" target="_blank">ngilmore@grammatech.com</a>>
                  a écrit :<br class="gmail_msg">
                </div>
                <blockquote class="gmail_quote gmail_msg"
                  style="margin:0 0 0 .8ex;border-left:1px #ccc
                  solid;padding-left:1ex">Good morning everyone,<br
                    class="gmail_msg">
                  <br class="gmail_msg">
                  As you remember, we're having a lot of trouble related
                  to schedulers in<br class="gmail_msg">
                  0.9.X not being reconfigurable in any meaningful sense
                  of the word. I<br class="gmail_msg">
                  got the go-ahead to try to make a patch for this.
                  Unfortunately, I've<br class="gmail_msg">
                  run into a fairly serious problem.<br
                    class="gmail_msg">
                  <br class="gmail_msg">
                  The advice I was given was (in a nutshell) to take the
                  code in the<br class="gmail_msg">
                  various schedulers' __init__ functions, and spread it
                  into 2 functions.<br class="gmail_msg">
                  checkConfig() would check its arguments for validity,
                  and<br class="gmail_msg">
                  reconfigService() would put them into the instance.
                  Sure, there were<br class="gmail_msg">
                  some various snags at first. Partly, I'm not used to
                  Python's<br class="gmail_msg">
                  argument-passing model. Partly, figuring out which
                  arguments needed to<br class="gmail_msg">
                  get passed where. Partly, figuring out that name
                  should only exist in<br class="gmail_msg">
                  the __init__'s, not the checkConfig's, etc.<br
                    class="gmail_msg">
                  <br class="gmail_msg">
                  What happens when we create a scheduler is this:<br
                    class="gmail_msg">
                  <br class="gmail_msg">
                  The scheduler's __init__ function is called. This
                  calls it's base<br class="gmail_msg">
                  class's __init__, and so on, up to
                  BuildbotService.__init__. Note that<br
                    class="gmail_msg">
                  all arguments must be preserved during these calls.
                  You'll see why.<br class="gmail_msg">
                  <br class="gmail_msg">
                  BuildbotService.__init__ calls checkConfig. Now, this
                  call goes to the<br class="gmail_msg">
                  scheduler's checkConfig, which checks its own specific
                  arguments, then<br class="gmail_msg">
                  passes everything else up to it's base class's
                  checkConfig, and so on.<br class="gmail_msg">
                  <br class="gmail_msg">
                  Everything,s great, right? Wrong...<br
                    class="gmail_msg">
                  <br class="gmail_msg">
                  At this point, we have validated everything. But only
                  the name is in the<br class="gmail_msg">
                  instance. Because everything else is supposed to get
                  assigned in<br class="gmail_msg">
                  reconfigService.<br class="gmail_msg">
                  <br class="gmail_msg">
                  But in between __init__ and reconfigService, other
                  things happen. Such<br class="gmail_msg">
                  as check_single_master() (at least for single master
                  systems). That<br class="gmail_msg">
                  attempts to check the builder names in the schedulers
                  vs. the builders'<br class="gmail_msg">
                  names in the config. Naturally, this fails because the
                  builder names<br class="gmail_msg">
                  haven't been put into the schedulers yet. And it would
                  go on to check<br class="gmail_msg">
                  other things that probably fail, too.<br
                    class="gmail_msg">
                  <br class="gmail_msg">
                  I'm not sure how to resolve this. The hacktastic way
                  would be to just<br class="gmail_msg">
                  figure out what might ever get checked and put that
                  back into __init__.<br class="gmail_msg">
                  But that's not very clean. The proper way would be to
                  figure out how to<br class="gmail_msg">
                  make a scheduler reconcile it's own builderNames, et
                  al. with the<br class="gmail_msg">
                  builders in the config. But I'd need to be able to get
                  the config being<br class="gmail_msg">
                  checked, and I haven't figured out how to do that.
                  There's other checks<br class="gmail_msg">
                  that go between items like this that I'd need to do,
                  too.<br class="gmail_msg">
                  <br class="gmail_msg">
                  Really, I'm just uncomfortable having this task spread
                  out into other<br class="gmail_msg">
                  areas of buildbot.<br class="gmail_msg">
                  <br class="gmail_msg">
                  Or I just go back to our 80% solution and hack
                  checkConfig...<br class="gmail_msg">
                  <br class="gmail_msg">
                  Neil Gilmore<br class="gmail_msg">
                  <a moz-do-not-send="true" 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 moz-do-not-send="true"
                    href="mailto:users@buildbot.net" class="gmail_msg"
                    target="_blank">users@buildbot.net</a><br
                    class="gmail_msg">
                  <a moz-do-not-send="true"
                    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>
            </blockquote>
            <br class="gmail_msg">
          </div>
          _______________________________________________<br
            class="gmail_msg">
          users mailing list<br class="gmail_msg">
          <a moz-do-not-send="true" href="mailto:users@buildbot.net"
            class="gmail_msg" target="_blank">users@buildbot.net</a><br
            class="gmail_msg">
          <a moz-do-not-send="true"
            href="https://lists.buildbot.net/mailman/listinfo/users"
            rel="noreferrer" class="gmail_msg" target="_blank">https://lists.buildbot.net/mailman/listinfo/users</a></blockquote>
      </div>
    </blockquote>
    <br>
  </body>
</html>