<div dir="ltr">It's about integration tests that aren't db-specific, so, just DATABASE/connection should be fixed ;)</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Feb 5, 2014 at 4:33 PM, Alexei Kornienko <span dir="ltr"><<a href="mailto:alexei.kornienko@gmail.com" target="_blank">alexei.kornienko@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>Hi<div class="im"><br>
      <br>
      <blockquote type="cite">I'm currently working on moving on the
        MySQL for savanna-ci</blockquote></div>
      We are working on same task in ceilometer so maybe you could use
      some of our patches as reference:<br>
      <br>
      <a href="https://review.openstack.org/#/c/59489/" target="_blank">https://review.openstack.org/#/c/59489/</a><br>
      <a href="https://review.openstack.org/#/c/63049/" target="_blank">https://review.openstack.org/#/c/63049/</a><br>
      <br>
      Regards,<br>
      Alexei<div><div class="h5"><br>
      <br>
      On 02/05/2014 02:06 PM, Sergey Kolekonov wrote:<br>
    </div></div></div><div><div class="h5">
    <blockquote type="cite">
      <div dir="ltr">I'm currently working on moving on the MySQL for
        savanna-ci</div>
      <div class="gmail_extra"><br>
        <br>
        <div class="gmail_quote">On Wed, Feb 5, 2014 at 3:53 PM, Sergey
          Lukjanov <span dir="ltr"><<a href="mailto:slukjanov@mirantis.com" target="_blank">slukjanov@mirantis.com</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div dir="ltr">Agreed, let's move on to the MySQL for
              savanna-ci to run integration tests against
              production-like DB.</div>
            <div class="gmail_extra">
              <div>
                <div><br>
                  <br>
                  <div class="gmail_quote">On Wed, Feb 5, 2014 at 1:54
                    AM, Andrew Lazarev <span dir="ltr"><<a href="mailto:alazarev@mirantis.com" target="_blank">alazarev@mirantis.com</a>></span>
                    wrote:<br>
                    <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                      <div dir="ltr">Since sqlite is not in the list of
                        "<span style="font-size:13px;font-family:arial,sans-serif">databases
                          that would be used in production", </span>CI
                        should use other DB for testing.<span><font color="#888888"><br>
                            <div><br>
                            </div>
                            <div>Andrew.</div>
                          </font></span></div>
                      <div>
                        <div>
                          <div class="gmail_extra"><br>
                            <br>
                            <div class="gmail_quote">On Tue, Feb 4, 2014
                              at 1:13 PM, Alexander Ignatov <span dir="ltr"><<a href="mailto:aignatov@mirantis.com" target="_blank">aignatov@mirantis.com</a>></span>
                              wrote:<br>
                              <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Indeed. We
                                should create a bug around that and move
                                our savanna-ci to mysql.<br>
                                <br>
                                Regards,<br>
                                Alexander Ignatov<br>
                                <br>
                                <br>
                                <br>
                                On 05 Feb 2014, at 01:01, Trevor McKay
                                <<a href="mailto:tmckay@redhat.com" target="_blank">tmckay@redhat.com</a>>
                                wrote:<br>
                                <br>
                                > This brings up an interesting
                                problem:<br>
                                ><br>
                                > In <a href="https://review.openstack.org/#/c/70420/" target="_blank">https://review.openstack.org/#/c/70420/</a>
                                I've added a migration that<br>
                                > uses a drop column for an upgrade.<br>
                                ><br>
                                > But savann-ci is apparently using a
                                sqlite database to run.  So it can't<br>
                                > possibly pass.<br>
                                ><br>
                                > What do we do here?  Shift
                                savanna-ci tests to non sqlite?<br>
                                ><br>
                                > Trevor<br>
                                ><br>
                                > On Sat, 2014-02-01 at 18:17 +0200,
                                Roman Podoliaka wrote:<br>
                                >> Hi all,<br>
                                >><br>
                                >> My two cents.<br>
                                >><br>
                                >>> 2) Extend alembic so that
                                op.drop_column() does the right thing<br>
                                >> We could, but should we?<br>
                                >><br>
                                >> The only reason alembic doesn't
                                support these operations for SQLite<br>
                                >> yet is that SQLite lacks proper
                                support of ALTER statement. For<br>
                                >> sqlalchemy-migrate we've been
                                providing a work-around in the form of<br>
                                >> recreating of a table and
                                copying of all existing rows (which is a<br>
                                >> hack, really).<br>
                                >><br>
                                >> But to be able to recreate a
                                table, we first must have its
                                definition.<br>
                                >> And we've been relying on
                                SQLAlchemy schema reflection facilities
                                for<br>
                                >> that. Unfortunately, this
                                approach has a few drawbacks:<br>
                                >><br>
                                >> 1) SQLAlchemy versions prior to
                                0.8.4 don't support reflection of<br>
                                >> unique constraints, which means
                                the recreated table won't have them;<br>
                                >><br>
                                >> 2) special care must be taken
                                in 'edge' cases (e.g. when you want to<br>
                                >> drop a BOOLEAN column, you must
                                also drop the corresponding CHECK (col<br>
                                >> in (0, 1)) constraint manually,
                                or SQLite will raise an error when the<br>
                                >> table is recreated without the
                                column being dropped)<br>
                                >><br>
                                >> 3) special care must be taken
                                for 'custom' type columns (it's got<br>
                                >> better with SQLAlchemy 0.8.x,
                                but e.g. in 0.7.x we had to override<br>
                                >> definitions of reflected BIGINT
                                columns manually for each<br>
                                >> column.drop() call)<br>
                                >><br>
                                >> 4) schema reflection can't be
                                performed when alembic migrations are<br>
                                >> run in 'offline' mode (without
                                connecting to a DB)<br>
                                >> ...<br>
                                >> (probably something else I've
                                forgotten)<br>
                                >><br>
                                >> So it's totally doable, but,
                                IMO, there is no real benefit in<br>
                                >> supporting running of schema
                                migrations for SQLite.<br>
                                >><br>
                                >>> ...attempts to drop schema
                                generation based on models in favor of
                                migrations<br>
                                >><br>
                                >> As long as we have a test that
                                checks that the DB schema obtained by<br>
                                >> running of migration scripts is
                                equal to the one obtained by calling<br>
                                >> metadata.create_all(), it's
                                perfectly OK to use model definitions to<br>
                                >> generate the initial DB schema
                                for running of unit-tests as well as<br>
                                >> for new installations of
                                OpenStack (and this is actually faster
                                than<br>
                                >> running of migration scripts).
                                ... and if we have strong objections<br>
                                >> against doing
                                metadata.create_all(), we can always use
                                migration<br>
                                >> scripts for both new
                                installations and upgrades for all DB
                                backends,<br>
                                >> except SQLite.<br>
                                >><br>
                                >> Thanks,<br>
                                >> Roman<br>
                                >><br>
                                >> On Sat, Feb 1, 2014 at 12:09
                                PM, Eugene Nikanorov<br>
                                >> <<a href="mailto:enikanorov@mirantis.com" target="_blank">enikanorov@mirantis.com</a>>
                                wrote:<br>
                                >>> Boris,<br>
                                >>><br>
                                >>> Sorry for the offtopic.<br>
                                >>> Is switching to model-based
                                schema generation is something decided?
                                I see<br>
                                >>> the opposite: attempts to
                                drop schema generation based on models
                                in favor of<br>
                                >>> migrations.<br>
                                >>> Can you point to some
                                discussion threads?<br>
                                >>><br>
                                >>> Thanks,<br>
                                >>> Eugene.<br>
                                >>><br>
                                >>><br>
                                >>><br>
                                >>> On Sat, Feb 1, 2014 at 2:19
                                AM, Boris Pavlovic <<a href="mailto:bpavlovic@mirantis.com" target="_blank">bpavlovic@mirantis.com</a>><br>
                                >>> wrote:<br>
                                >>>><br>
                                >>>> Jay,<br>
                                >>>><br>
                                >>>> Yep we shouldn't use
                                migrations for sqlite at all.<br>
                                >>>><br>
                                >>>> The major issue that we
                                have now is that we are not able to
                                ensure that DB<br>
                                >>>> schema created by
                                migration & models are same
                                (actually they are not same).<br>
                                >>>><br>
                                >>>> So before dropping
                                support of migrations for sqlite &
                                switching to model<br>
                                >>>> based created schema we
                                should add tests that will check that
                                model &<br>
                                >>>> migrations are synced.<br>
                                >>>> (we are working on
                                this)<br>
                                >>>><br>
                                >>>><br>
                                >>>><br>
                                >>>> Best regards,<br>
                                >>>> Boris Pavlovic<br>
                                >>>><br>
                                >>>><br>
                                >>>> On Fri, Jan 31, 2014 at
                                7:31 PM, Andrew Lazarev <<a href="mailto:alazarev@mirantis.com" target="_blank">alazarev@mirantis.com</a>><br>
                                >>>> wrote:<br>
                                >>>>><br>
                                >>>>> Trevor,<br>
                                >>>>><br>
                                >>>>> Such check could be
                                useful on alembic side too. Good
                                opportunity for<br>
                                >>>>> contribution.<br>
                                >>>>><br>
                                >>>>> Andrew.<br>
                                >>>>><br>
                                >>>>><br>
                                >>>>> On Fri, Jan 31,
                                2014 at 6:12 AM, Trevor McKay <<a href="mailto:tmckay@redhat.com" target="_blank">tmckay@redhat.com</a>>
                                wrote:<br>
                                >>>>>><br>
                                >>>>>> Okay,  I can
                                accept that migrations shouldn't be
                                supported on sqlite.<br>
                                >>>>>><br>
                                >>>>>> However, if
                                that's the case then we need to fix up
                                savanna-db-manage so<br>
                                >>>>>> that it checks
                                the db connection info and throws a
                                polite error to the<br>
                                >>>>>> user for
                                attempted migrations on unsupported
                                platforms. For example:<br>
                                >>>>>><br>
                                >>>>>> "Database
                                migrations are not supported for sqlite"<br>
                                >>>>>><br>
                                >>>>>> Because, as a
                                developer, when I see a sql error trace
                                as the result of<br>
                                >>>>>> an operation I
                                assume it's broken :)<br>
                                >>>>>><br>
                                >>>>>> Best,<br>
                                >>>>>><br>
                                >>>>>> Trevor<br>
                                >>>>>><br>
                                >>>>>> On Thu,
                                2014-01-30 at 15:04 -0500, Jay Pipes
                                wrote:<br>
                                >>>>>>> On Thu,
                                2014-01-30 at 14:51 -0500, Trevor McKay
                                wrote:<br>
                                >>>>>>>> I was
                                playing with alembic migration and
                                discovered that<br>
                                >>>>>>>>
                                op.drop_column() doesn't work with
                                sqlite.  This is because sqlite<br>
                                >>>>>>>> doesn't
                                support dropping a column (broken imho,
                                but that's another<br>
                                >>>>>>>>
                                discussion).  Sqlite throws a syntax
                                error.<br>
                                >>>>>>>><br>
                                >>>>>>>> To make
                                this work with sqlite, you have to copy
                                the table to a<br>
                                >>>>>>>>
                                temporary<br>
                                >>>>>>>>
                                excluding the column(s) you don't want
                                and delete the old one,<br>
                                >>>>>>>>
                                followed<br>
                                >>>>>>>> by a
                                rename of the new table.<br>
                                >>>>>>>><br>
                                >>>>>>>> The
                                existing 002 migration uses
                                op.drop_column(), so I'm assuming<br>
                                >>>>>>>> it's<br>
                                >>>>>>>> broken,
                                too (I need to check what the migration
                                test is doing).  I<br>
                                >>>>>>>> was<br>
                                >>>>>>>> working
                                on an 003.<br>
                                >>>>>>>><br>
                                >>>>>>>> How do
                                we want to handle this?  Three good
                                options I can think of:<br>
                                >>>>>>>><br>
                                >>>>>>>> 1)
                                don't support migrations for sqlite (I
                                think "no", but maybe)<br>
                                >>>>>>>><br>
                                >>>>>>>> 2)
                                Extend alembic so that op.drop_column()
                                does the right thing<br>
                                >>>>>>>> (more<br>
                                >>>>>>>>
                                open-source contributions for us, yay :)
                                )<br>
                                >>>>>>>><br>
                                >>>>>>>> 3) Add
                                our own wrapper in savanna so that we
                                have a drop_column()<br>
                                >>>>>>>> method<br>
                                >>>>>>>> that
                                wraps copy/rename.<br>
                                >>>>>>>><br>
                                >>>>>>>> Ideas,
                                comments?<br>
                                >>>>>>><br>
                                >>>>>>> Migrations
                                should really not be run against SQLite
                                at all -- only on<br>
                                >>>>>>> the<br>
                                >>>>>>> databases
                                that would be used in production. I
                                believe the general<br>
                                >>>>>>> direction
                                of the contributor community is to be
                                consistent around<br>
                                >>>>>>> testing of
                                migrations and to not run migrations at
                                all in unit tests<br>
                                >>>>>>> (which use
                                SQLite).<br>
                                >>>>>>><br>
                                >>>>>>> Boris
                                (cc'd) may have some more to say on this
                                topic.<br>
                                >>>>>>><br>
                                >>>>>>> Best,<br>
                                >>>>>>> -jay<br>
                                >>>>>>><br>
                                >>>>>>><br>
                                >>>>>>>
                                _______________________________________________<br>
                                >>>>>>>
                                OpenStack-dev mailing list<br>
                                >>>>>>> <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
                                >>>>>>> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>

                                >>>>>><br>
                                >>>>>><br>
                                >>>>>><br>
                                >>>>>>
                                _______________________________________________<br>
                                >>>>>> OpenStack-dev
                                mailing list<br>
                                >>>>>> <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
                                >>>>>> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>

                                >>>>><br>
                                >>>>><br>
                                >>>><br>
                                >>>><br>
                                >>>>
                                _______________________________________________<br>
                                >>>> OpenStack-dev mailing
                                list<br>
                                >>>> <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
                                >>>> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
                                >>>><br>
                                >>><br>
                                >>><br>
                                >>>
                                _______________________________________________<br>
                                >>> OpenStack-dev mailing list<br>
                                >>> <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
                                >>> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
                                >>><br>
                                >><br>
                                >>
                                _______________________________________________<br>
                                >> OpenStack-dev mailing list<br>
                                >> <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
                                >> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
                                ><br>
                                ><br>
                                ><br>
                                >
                                _______________________________________________<br>
                                > OpenStack-dev mailing list<br>
                                > <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
                                > <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
                                <br>
                                <br>
_______________________________________________<br>
                                OpenStack-dev mailing list<br>
                                <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
                                <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
                              </blockquote>
                            </div>
                            <br>
                          </div>
                        </div>
                      </div>
                      <br>
                      _______________________________________________<br>
                      OpenStack-dev mailing list<br>
                      <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
                      <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
                      <br>
                    </blockquote>
                  </div>
                  <br>
                  <br clear="all">
                  <div><br>
                  </div>
                </div>
              </div>
              <span><font color="#888888">-- <br>
                  <div dir="ltr">
                    <div>Sincerely yours,</div>
                    <div>Sergey Lukjanov</div>
                    <div>Savanna Technical Lead</div>
                    <div>Mirantis Inc.</div>
                  </div>
                </font></span></div>
            <br>
            _______________________________________________<br>
            OpenStack-dev mailing list<br>
            <a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
            <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
            <br>
          </blockquote>
        </div>
        <br>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      <pre>_______________________________________________
OpenStack-dev mailing list
<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a>
</pre>
    </blockquote>
    <br>
  </div></div></div>

<br>_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><div>Sincerely yours,</div><div>Sergey Lukjanov</div><div>Savanna Technical Lead</div><div>Mirantis Inc.</div></div>
</div>