<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    The branch is now available under feature/graphql on the neutron
    core repository [1].<br>
    <br>
    Just to summarize our initial requirements:<br>
    <br>
    - GraphQL endpoint to be added through a new WeBoB/WSGI stack<br>
    - Add graphene library [2] <br>
    - Unit tests and implementation for GraphQL schema for networks,
    subnets and ports Types.<br>
    <br>
    I think we should support Relay by making the Schema Relay compliant
    and support Node ID, cursor connections and .<br>
    This will offer re-fetch, automated pagination and caching out of
    the box and not only will show the power of GraphQL but also because
    on the long run it would more likely what would be needed for
    complex API structures like we have across the board.<br>
    <br>
    Any thoughts?<br>
    <br>
    [1]
    <a class="moz-txt-link-freetext" href="https://git.openstack.org/cgit/openstack/neutron/log/?h=feature/graphql">https://git.openstack.org/cgit/openstack/neutron/log/?h=feature/graphql</a><br>
    [2] <a class="moz-txt-link-freetext" href="http://graphene-python.org/">http://graphene-python.org/</a><br>
    <br>
    <div class="moz-cite-prefix">On 31/05/18 17:27, Flint WALRUS wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAG+53ua7rMnWNfoPYJ0cN=MfKQYYuwbr3uWWqKQjmj3ib6_0zA@mail.gmail.com">Hi
      Gilles, Ed,<br>
      <br>
      I’m really glad and thrilled to read such good news!<br>
      <br>
      At this point it’s cool to see that many initiatives have the same
      convergent needs regarding GraphQL as it will give us a good
      traction from the beginning if our PoC manage to sufficiently
      convince our peers.<br>
      <br>
      Let me know as soon as the branch have been made, I’ll work on it.<br>
      <br>
      Regards,<br>
      Fl1nt.<br>
      <div class="gmail_quote">
        <div dir="ltr">Le jeu. 31 mai 2018 à 09:17, Gilles Dubreuil <<a
            href="mailto:gdubreui@redhat.com" moz-do-not-send="true">gdubreui@redhat.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 text="#000000" bgcolor="#FFFFFF">
            <p>Hi Flint,</p>
            <p>I wish it was "my" summit ;)<br>
              In the latter case I'd make the sessions an hour and not
              20 or 40 minutes, well at least for the Forum part. And I
              will also make only one summit a year instead of two
              (which is also a feed back I got from the Market place).
              I've passed that during the user feedback session.<br>
            </p>
            Sorry for not responding earlier, @elmiko is going to send
            the minutes of the API SIG forum session we had.<br>
            <br>
            We confirmed Neutron to be the PoC. <br>
            We are going to use a feature branch, waiting for Miguel
            Lavalle to confirm the request has been acknowledge by the
            Infra group.<br>
            The PoC goal is to show GraphQL efficiency. <br>
            So we're going to make something straightforward, use
            Neutron existing server by  adding the graphQL endpoint and
            cover few core items such as network, subnets and ports (for
            example). <br>
            <br>
            Also the idea of having a central point of access for
            OpenStack APIs using GrahpQL stitching and delegation is
            exciting for everyone (and I had obviously same feedback off
            the session) and that's something that could happen once the
            PoC has convinced. <br>
            <br>
            During the meeting, Jiri Tomasek explained how GraphQL could
            help TripleO UI. Effectively they struggle with APIs
            requests and had to create a middle(ware) module in JS to do
            API work and reconstruction before the Javascript client can
            use it. GraphQL would simplify the process and allow to get
            rid of the module. He also explained, after the meeting, how
            Horizon could benefit as well, allowing to use only JS and
            avoid Django altogether!<br>
            <br>
            I've also been told that Zuul nees GraphQL.<br>
            <br>
            Well basically the question is who doesn't need it?<br>
            <br>
            Cheers,<br>
            Gilles</div>
          <div text="#000000" bgcolor="#FFFFFF"><br>
            <br>
            <br>
            <div class="m_1325520521387007585moz-cite-prefix">On
              31/05/18 03:34, Flint WALRUS wrote:<br>
            </div>
            <blockquote type="cite">Hi Gilles, I hope you enjoyed your
              Summit!?<br>
              <br>
              Did you had any interesting talk to report about our
              little initiative ?<br>
              <div class="gmail_quote">
                <div dir="ltr">Le dim. 6 mai 2018 à 15:01, Gilles
                  Dubreuil <<a href="mailto:gdubreui@redhat.com"
                    target="_blank" moz-do-not-send="true">gdubreui@redhat.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 text="#000000" bgcolor="#FFFFFF">
                    <p><br>
                    </p>
                    <p>Akihiro, thank you for your precious help!<br>
                    </p>
                    <p>Regarding the choice of Neutron as PoC, I'm sorry
                      for not providing much details when I said
                      "because of its specific data model",<span
style="color:rgb(34,34,34);font-family:sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"></span><br>
                      effectively the original mention was  "its API
                      exposes things at an individual table level,
                      requiring the client to join that information to
                      get the answers they need".<br>
                      I realize now such description probably applies to
                      many OpenStack APIs.<br>
                      So I'm not sure what was the reason for choosing
                      Neutron. <br>
                      I suppose Nova is also a good candidate because
                      API is quite complex too, in a different way, and
                      need to expose the data API and the control API
                      plane as we discussed.<br>
                    </p>
                    <p>After all Neutron is maybe not the best candidate
                      but it seems good enough. <br>
                    </p>
                    <p>And as Flint say the extension mechanism
                      shouldn't be an issue.</p>
                    <p>So if someone believe there is a better candidate
                      for the PoC, please speak now.</p>
                    <p>Thanks,<br>
                      Gilles</p>
                    <p>PS: Flint,  Thank you for offering to be the
                      advocate for Berlin. That's great!<br>
                    </p>
                  </div>
                  <div text="#000000" bgcolor="#FFFFFF">
                    <p><br>
                    </p>
                    <div
                      class="m_1325520521387007585m_2732130774180494018moz-cite-prefix">On
                      06/05/18 02:23, Flint WALRUS wrote:<br>
                    </div>
                    <blockquote type="cite">
                      <div>Hi Akihiro,<br>
                        <br>
                        Thanks a lot for this insight on how neutron
                        behave.<br>
                        <br>
                        We would love to get support and backing from
                        the neutron team in order to be able to get the
                        best PoC possible.<br>
                        <br>
                        <div dir="auto">Someone suggested neutron as a
                          good choice because of it simple database
                          model. As GraphQL can manage your behavior of
                          an extension declaring its own schemes I don’t
                          think it would take that much time to
                          implement it.</div>
                      </div>
                      <div dir="auto"><br>
                      </div>
                      <div dir="auto">@Gilles, if I goes to the berlin
                        summitt I could definitely do the networking and
                        relationship work needed to get support on our
                        PoC from different teams members. This would
                        help to spread the world multiple time and don’t
                        have a long time before someone come to talk
                        about this subject as what happens with the 2015
                        talk of the Facebook speaker.</div>
                      <div><br>
                        <div class="gmail_quote">
                          <div>Le sam. 5 mai 2018 à 18:05, Akihiro
                            Motoki <<a
                              href="mailto:amotoki@gmail.com"
                              target="_blank" moz-do-not-send="true">amotoki@gmail.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>Hi,
                              <div><br>
                              </div>
                              <div>I am happy to see the effort to
                                explore a new API mechanism.</div>
                              <div>I would like to see good progress and
                                help effort as API liaison from the
                                neutron team.</div>
                            </div>
                            <div>
                              <div><br>
                              </div>
                              <div>> <span
style="color:rgb(34,34,34);font-family:sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">Neutron
                                  has been selected for the PoC because
                                  of its specific data model</span></div>
                              <div><br>
                              </div>
                            </div>
                            <div>
                              <div>On the other hand, I am not sure this
                                is the right reason to choose 'neutron'
                                only from this reason. I would like to
                                note "its specific data model" is not
                                the reason that makes the progress of
                                API versioning slowest in the OpenStack
                                community. I believe it is worth
                                recognized as I would like not to block
                                the effort due to the neutron-specific
                                reasons.</div>
                              <div>The most complicated point in the
                                neutron API is that the neutron API
                                layer allows neutron plugins to declare
                                which features are supported. The
                                neutron API is a collection of API
                                extensions defined in the neutron-lib
                                repo and each neutron plugin can declare
                                which subset(s) of the neutron APIs are
                                supported. (For more detail, you can
                                check how the neutron API extension
                                mechanism is implemented). It is not
                                defined only by the neutron API layer.
                                We need to communicate which API
                                features are supported by communicating
                                enabled service plugins.</div>
                              <div><br>
                              </div>
                              <div>I am afraid that most efforts to
                                explore a new mechanism in neutron will
                                be spent to address the above points
                                which is not directly related to GraphQL
                                itself.<br>
                              </div>
                              <div>Of course, it would be great if you
                                overcome long-standing complicated
                                topics as part of GraphQL effort :)<br>
                              </div>
                              <div><br>
                              </div>
                              <div>I am happy to help the effort and
                                understand how the neutron API is
                                defined.</div>
                              <div><br>
                              </div>
                              <div>Thanks,</div>
                              <div>Akihiro</div>
                              <div><br>
                              </div>
                            </div>
                            <br>
                            <div class="gmail_quote">
                              <div>2018年5月5日(土) 18:16 Gilles Dubreuil
                                <<a href="mailto:gdubreui@redhat.com"
                                  target="_blank" moz-do-not-send="true">gdubreui@redhat.com</a>>:<br>
                              </div>
                            </div>
                            <div class="gmail_quote">
                              <blockquote class="gmail_quote"
                                style="margin:0 0 0 .8ex;border-left:1px
                                #ccc solid;padding-left:1ex">Hello,<br>
                                <br>
                                Few of us recently discussed [1] how
                                GraphQL [2], the next evolution <br>
                                from REST, could transform OpenStack
                                APIs for the better.<br>
                                Effectively we believe OpenStack APIs
                                provide perfect use cases for <br>
                                GraphQL DSL approach, to bring among
                                other advantages, better <br>
                                performance and stability, easier
                                developments and consumption, and with <br>
                                GraphQL Schema provide automation
                                capabilities never achieved before.<br>
                                <br>
                                The API SIG suggested to start an API
                                GraphQL Proof of Concept (PoC) to <br>
                                demonstrate the capabilities before
                                eventually extend GraphQL to other <br>
                                projects.<br>
                                Neutron has been selected for the PoC
                                because of its specific data model.<br>
                                <br>
                                So if you are interested, please join
                                us.<br>
                                For those who can make it, we'll also
                                discuss this during the SIG API <br>
                                BoF at OpenStack Summit at Vancouver [3]<br>
                                <br>
                                To learn more about GraphQL, check-out <a
                                  href="http://howtographql.com"
                                  rel="noreferrer" target="_blank"
                                  moz-do-not-send="true">howtographql.com</a>
                                [4].<br>
                                <br>
                                So let's get started...<br>
                                <br>
                                <br>
                                [1] <a
href="http://lists.openstack.org/pipermail/openstack-dev/2018-May/130054.html"
                                  rel="noreferrer" target="_blank"
                                  moz-do-not-send="true">http://lists.openstack.org/pipermail/openstack-dev/2018-May/130054.html</a><br>
                                [2] <a href="http://graphql.org/"
                                  rel="noreferrer" target="_blank"
                                  moz-do-not-send="true">http://graphql.org/</a><br>
                                [3] <br>
                                <a
href="https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/21798/api-special-interest-group-session"
                                  rel="noreferrer" target="_blank"
                                  moz-do-not-send="true">https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/21798/api-special-interest-group-session</a><br>
                                [4] <a
                                  href="https://www.howtographql.com/"
                                  rel="noreferrer" target="_blank"
                                  moz-do-not-send="true">https://www.howtographql.com/</a><br>
                                <br>
                                Regards,<br>
                                Gilles<br>
                                <br>
                                <br>
                                <br>
                              </blockquote>
                            </div>
                            <div class="gmail_quote">
                              <blockquote class="gmail_quote"
                                style="margin:0 0 0 .8ex;border-left:1px
                                #ccc solid;padding-left:1ex">
__________________________________________________________________________<br>
                                OpenStack Development Mailing List (not
                                for usage questions)<br>
                                Unsubscribe: <a
href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe"
                                  rel="noreferrer" target="_blank"
                                  moz-do-not-send="true">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
                                <a
                                  href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"
                                  rel="noreferrer" target="_blank"
                                  moz-do-not-send="true">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
                              </blockquote>
                            </div>
__________________________________________________________________________<br>
                            OpenStack Development Mailing List (not for
                            usage questions)<br>
                            Unsubscribe: <a
href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe"
                              rel="noreferrer" target="_blank"
                              moz-do-not-send="true">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
                            <a
                              href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"
                              rel="noreferrer" target="_blank"
                              moz-do-not-send="true">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
                          </blockquote>
                        </div>
                      </div>
                    </blockquote>
                    <br>
                  </div>
                </blockquote>
              </div>
            </blockquote>
          </div>
        </blockquote>
      </div>
    </blockquote>
  </body>
</html>