)]}'
{"cinder/db/sqlalchemy/migrate_repo/versions/061_cinder_init.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6bbaf5bc455622c0dfcccd819e0531689e98cbf8","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    )"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    if CONF.database.mysql_storage_engine \u003d\u003d \u0027NDBCLUSTER\u0027:"},{"line_number":106,"context_line":"        volumes \u003d Table("},{"line_number":107,"context_line":"            \u0027volumes\u0027, meta,"},{"line_number":108,"context_line":"            Column(\u0027created_at\u0027, DateTime),"},{"line_number":109,"context_line":"            Column(\u0027updated_at\u0027, DateTime),"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_083deac3","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":15},"updated":"2017-02-14 10:33:16.000000000","message":"Why do you change only the volumes table? Is it the only one that doesn\u0027t fit NDB limitations?","commit_id":"cc6d5207dc9947410844a80a4f6de9e9ee7163d8"},{"author":{"_account_id":19283,"name":"Octave Orgeron","email":"octave.orgeron@oracle.com","username":"oorgeron"},"change_message_id":"6bac4a696fa9221b75d2c229c94e9ff1c3e3e666","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    )"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    if CONF.database.mysql_storage_engine \u003d\u003d \u0027NDBCLUSTER\u0027:"},{"line_number":106,"context_line":"        volumes \u003d Table("},{"line_number":107,"context_line":"            \u0027volumes\u0027, meta,"},{"line_number":108,"context_line":"            Column(\u0027created_at\u0027, DateTime),"},{"line_number":109,"context_line":"            Column(\u0027updated_at\u0027, DateTime),"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_87e9b2e8","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":15},"in_reply_to":"fa31d9ce_083deac3","updated":"2017-02-14 17:52:10.000000000","message":"That is correct, only the volumes table has issues fitting within the row limits of NDB.","commit_id":"cc6d5207dc9947410844a80a4f6de9e9ee7163d8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6bbaf5bc455622c0dfcccd819e0531689e98cbf8","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            Column(\u0027project_id\u0027, String(255)),"},{"line_number":116,"context_line":"            Column(\u0027host\u0027, String(255)),"},{"line_number":117,"context_line":"            Column(\u0027size\u0027, Integer),"},{"line_number":118,"context_line":"            Column(\u0027availability_zone\u0027, TinyText()),"},{"line_number":119,"context_line":"            Column(\u0027status\u0027, String(64)),"},{"line_number":120,"context_line":"            Column(\u0027attach_status\u0027, String(64)),"},{"line_number":121,"context_line":"            Column(\u0027scheduled_at\u0027, DateTime),"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_a51fa76a","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":52},"updated":"2017-02-14 10:33:16.000000000","message":"Can\u0027t we shorten this through creating a helper is_ndb() function and doing simply:\n\n Column(\u0027availability_zone\u0027, TinyText() if is_ndb() else String(255))\n\n?","commit_id":"cc6d5207dc9947410844a80a4f6de9e9ee7163d8"},{"author":{"_account_id":19283,"name":"Octave Orgeron","email":"octave.orgeron@oracle.com","username":"oorgeron"},"change_message_id":"6bac4a696fa9221b75d2c229c94e9ff1c3e3e666","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            Column(\u0027project_id\u0027, String(255)),"},{"line_number":116,"context_line":"            Column(\u0027host\u0027, String(255)),"},{"line_number":117,"context_line":"            Column(\u0027size\u0027, Integer),"},{"line_number":118,"context_line":"            Column(\u0027availability_zone\u0027, TinyText()),"},{"line_number":119,"context_line":"            Column(\u0027status\u0027, String(64)),"},{"line_number":120,"context_line":"            Column(\u0027attach_status\u0027, String(64)),"},{"line_number":121,"context_line":"            Column(\u0027scheduled_at\u0027, DateTime),"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_87d0d220","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":52},"in_reply_to":"fa31d9ce_a51fa76a","updated":"2017-02-14 17:52:10.000000000","message":"I\u0027m working with the oslo.db folks to figure out a way to do something like this.","commit_id":"cc6d5207dc9947410844a80a4f6de9e9ee7163d8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"d83e2d02e8b56493ab025081fffea5060c263c5c","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Index"},{"line_number":19,"context_line":"from sqlalchemy import dialects"},{"line_number":20,"context_line":"from sqlalchemy import Integer, MetaData, String, Table, Text, UniqueConstraint"},{"line_number":21,"context_line":"from sqlalchemy import Text"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Get default values via config.  The defaults will either"},{"line_number":24,"context_line":"# come from the default values set in the quota option"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_73e24705","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":27},"updated":"2017-02-20 18:50:53.000000000","message":"Text is already imported in previous line. That\u0027s why Jenkins explodes.","commit_id":"4c06e7e9aebe591f4438485fae8964a5ab4f70ab"},{"author":{"_account_id":19283,"name":"Octave Orgeron","email":"octave.orgeron@oracle.com","username":"oorgeron"},"change_message_id":"936553df4809962f3738104ede3ed941d3b3752e","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Index"},{"line_number":19,"context_line":"from sqlalchemy import dialects"},{"line_number":20,"context_line":"from sqlalchemy import Integer, MetaData, String, Table, Text, UniqueConstraint"},{"line_number":21,"context_line":"from sqlalchemy import Text"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Get default values via config.  The defaults will either"},{"line_number":24,"context_line":"# come from the default values set in the quota option"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_4265131c","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":27},"in_reply_to":"da36d5c6_73e24705","updated":"2017-02-22 20:59:31.000000000","message":"Corrected this in the next patch set","commit_id":"4c06e7e9aebe591f4438485fae8964a5ab4f70ab"}],"cinder/db/sqlalchemy/migrate_repo/versions/073_cinder_init.py":[{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"29d28bb6277584a21d1c841c502d9d55fded2ead","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        mysql_charset\u003d\u0027utf8\u0027"},{"line_number":99,"context_line":"    )"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    if CONF.database.mysql_enable_ndb:"},{"line_number":102,"context_line":"        volumes \u003d Table("},{"line_number":103,"context_line":"            \u0027volumes\u0027, meta,"},{"line_number":104,"context_line":"            Column(\u0027created_at\u0027, DateTime),"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_5223a105","line":101,"updated":"2017-02-28 16:19:38.000000000","message":"this is amazingly verbose.  The conditionals should be local to the datatypes.\n\n    def text_type(size):\n        if CONF.database.mysql_enable_ndb:\n            return ndb.TinyText()\n        else:\n            return String(255)","commit_id":"45cbac5937e3d08812ea21744b557078c3c51af0"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"b2630f47d8f9772c8243d51d8ddfc53c78103f08","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        mysql_charset\u003d\u0027utf8\u0027"},{"line_number":99,"context_line":"    )"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    if CONF.database.mysql_enable_ndb:"},{"line_number":102,"context_line":"        volumes \u003d Table("},{"line_number":103,"context_line":"            \u0027volumes\u0027, meta,"},{"line_number":104,"context_line":"            Column(\u0027created_at\u0027, DateTime),"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_9e1a826d","line":101,"in_reply_to":"ba2be162_08873c10","updated":"2017-02-28 17:32:46.000000000","message":"I\u0027m not calling for a \"global\" change.  Just whereever a table uses the \"ndb_neutral_text_type()\", they get the answer they want.    There is too much repetition in this  code as it stands.","commit_id":"45cbac5937e3d08812ea21744b557078c3c51af0"},{"author":{"_account_id":19283,"name":"Octave Orgeron","email":"octave.orgeron@oracle.com","username":"oorgeron"},"change_message_id":"f8d6c032fc3217baa15ef20b1b698859db81c04a","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        mysql_charset\u003d\u0027utf8\u0027"},{"line_number":99,"context_line":"    )"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    if CONF.database.mysql_enable_ndb:"},{"line_number":102,"context_line":"        volumes \u003d Table("},{"line_number":103,"context_line":"            \u0027volumes\u0027, meta,"},{"line_number":104,"context_line":"            Column(\u0027created_at\u0027, DateTime),"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_08873c10","line":101,"in_reply_to":"ba2be162_5223a105","updated":"2017-02-28 16:58:59.000000000","message":"I don\u0027t want to change the data type globally. I\u0027m only changing a single table here and only columns that I have to change so that it fits within the row limits. There are plenty of other columns that are String(255) or another size that are fine the way they are. Doing this globally is more of a hammer when all we need is a scalpel.","commit_id":"45cbac5937e3d08812ea21744b557078c3c51af0"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"29d28bb6277584a21d1c841c502d9d55fded2ead","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            Column(\u0027provider_id\u0027, String(255)),"},{"line_number":138,"context_line":"            Column(\u0027multiattach\u0027, Boolean),"},{"line_number":139,"context_line":"            Column(\u0027previous_status\u0027, String(255)),"},{"line_number":140,"context_line":"            mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":141,"context_line":"            mysql_charset\u003d\u0027utf8\u0027"},{"line_number":142,"context_line":"        )"},{"line_number":143,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_7277c502","line":140,"updated":"2017-02-28 16:19:38.000000000","message":"why InnoDB here if you know you\u0027re NDB?","commit_id":"45cbac5937e3d08812ea21744b557078c3c51af0"},{"author":{"_account_id":19283,"name":"Octave Orgeron","email":"octave.orgeron@oracle.com","username":"oorgeron"},"change_message_id":"f8d6c032fc3217baa15ef20b1b698859db81c04a","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            Column(\u0027provider_id\u0027, String(255)),"},{"line_number":138,"context_line":"            Column(\u0027multiattach\u0027, Boolean),"},{"line_number":139,"context_line":"            Column(\u0027previous_status\u0027, String(255)),"},{"line_number":140,"context_line":"            mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":141,"context_line":"            mysql_charset\u003d\u0027utf8\u0027"},{"line_number":142,"context_line":"        )"},{"line_number":143,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_08465c23","line":140,"in_reply_to":"ba2be162_7277c502","updated":"2017-02-28 16:58:59.000000000","message":"Good catch, I\u0027ll fix this.","commit_id":"45cbac5937e3d08812ea21744b557078c3c51af0"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"29d28bb6277584a21d1c841c502d9d55fded2ead","unresolved":false,"context_lines":[{"line_number":604,"context_line":"        migrate_engine.execute("},{"line_number":605,"context_line":"            \"ALTER DATABASE %s DEFAULT CHARACTER SET utf8\" %"},{"line_number":606,"context_line":"            migrate_engine.url.database)"},{"line_number":607,"context_line":"        if not CONF.database.mysql_enable_ndb:"},{"line_number":608,"context_line":"            migrate_engine.execute(\"ALTER TABLE %s Engine\u003dInnoDB\" % table)"},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"    # Set default quota class values"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_5251e161","line":607,"updated":"2017-02-28 16:19:38.000000000","message":"if NDB is turned off, why would engine *not* be InnoDB?  What else would it be?","commit_id":"45cbac5937e3d08812ea21744b557078c3c51af0"},{"author":{"_account_id":19283,"name":"Octave Orgeron","email":"octave.orgeron@oracle.com","username":"oorgeron"},"change_message_id":"f8d6c032fc3217baa15ef20b1b698859db81c04a","unresolved":false,"context_lines":[{"line_number":604,"context_line":"        migrate_engine.execute("},{"line_number":605,"context_line":"            \"ALTER DATABASE %s DEFAULT CHARACTER SET utf8\" %"},{"line_number":606,"context_line":"            migrate_engine.url.database)"},{"line_number":607,"context_line":"        if not CONF.database.mysql_enable_ndb:"},{"line_number":608,"context_line":"            migrate_engine.execute(\"ALTER TABLE %s Engine\u003dInnoDB\" % table)"},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"    # Set default quota class values"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_88bb2c0e","line":607,"in_reply_to":"ba2be162_5251e161","updated":"2017-02-28 16:58:59.000000000","message":"I haven\u0027t found a clean method to intercept ALTER TABLE calls across the services. So this is the easiest way to deal with these ALTER TABLE calls, test if the mysql_enable_ndb is NOT true.","commit_id":"45cbac5937e3d08812ea21744b557078c3c51af0"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"b2630f47d8f9772c8243d51d8ddfc53c78103f08","unresolved":false,"context_lines":[{"line_number":604,"context_line":"        migrate_engine.execute("},{"line_number":605,"context_line":"            \"ALTER DATABASE %s DEFAULT CHARACTER SET utf8\" %"},{"line_number":606,"context_line":"            migrate_engine.url.database)"},{"line_number":607,"context_line":"        if not CONF.database.mysql_enable_ndb:"},{"line_number":608,"context_line":"            migrate_engine.execute(\"ALTER TABLE %s Engine\u003dInnoDB\" % table)"},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"    # Set default quota class values"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_3eafd6e4","line":607,"in_reply_to":"ba2be162_88bb2c0e","updated":"2017-02-28 17:32:46.000000000","message":"I\u0027ve given you a way to intercept ALTER TABLE calls, which is that you\u0027d use before_cursor_execute() in oslo.db.\n\nBut even without that, this doesn\u0027t answer my question here.  Why would \"engine\" *not* be InnoDB?  all the create table statements right now are still hardcoding InnoDB and I\u0027m not sure that you are globally intercepting this (and even if you were, that would only happen if the flag is true).","commit_id":"45cbac5937e3d08812ea21744b557078c3c51af0"}],"cinder/db/sqlalchemy/migrate_repo/versions/075_add_cluster_and_fields.py":[{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"11d3ef199f6b88c3747e57ae4aa86c4a244e7991","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        # and will not conflict with the creation of another cluster with the"},{"line_number":49,"context_line":"        # same name."},{"line_number":50,"context_line":"        UniqueConstraint(\u0027name\u0027, \u0027binary\u0027, \u0027race_preventer\u0027),"},{"line_number":51,"context_line":"        mysql_engine\u003dCONF.database.mysql_storage_engine,"},{"line_number":52,"context_line":"        mysql_charset\u003d\u0027utf8\u0027,"},{"line_number":53,"context_line":"    )"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa31d9ce_747a71be","line":51,"updated":"2017-02-15 21:06:10.000000000","message":"yeah I think it would be easier to intercept this up at oslo.db.","commit_id":"ddeeede8e338abdad72d5b348131455f06892e94"}],"cinder/db/sqlalchemy/models.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6bbaf5bc455622c0dfcccd819e0531689e98cbf8","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def TinyText():"},{"line_number":39,"context_line":"                return Text().with_variant(dialects.mysql.TINYTEXT(), \u0027mysql\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class CinderBase(models.TimestampMixin,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_6847464b","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":16},"updated":"2017-02-14 10:33:16.000000000","message":"Too much indentation.","commit_id":"cc6d5207dc9947410844a80a4f6de9e9ee7163d8"},{"author":{"_account_id":19283,"name":"Octave Orgeron","email":"octave.orgeron@oracle.com","username":"oorgeron"},"change_message_id":"6bac4a696fa9221b75d2c229c94e9ff1c3e3e666","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def TinyText():"},{"line_number":39,"context_line":"                return Text().with_variant(dialects.mysql.TINYTEXT(), \u0027mysql\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class CinderBase(models.TimestampMixin,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_67859e05","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":16},"in_reply_to":"fa31d9ce_6847464b","updated":"2017-02-14 17:52:10.000000000","message":"I\u0027ll fix this. Thanks for catching this.","commit_id":"cc6d5207dc9947410844a80a4f6de9e9ee7163d8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"8dd16c55a0e4d96a27ea5106daaef72f1911685b","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def TinyText():"},{"line_number":39,"context_line":"    return Text().with_variant(dialects.mysql.TINYTEXT(), \u0027mysql\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class CinderBase(models.TimestampMixin,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa31d9ce_2eae04e6","line":39,"range":{"start_line":39,"start_character":31,"end_line":39,"end_character":39},"updated":"2017-02-15 09:55:06.000000000","message":"Oh, this is why patch explodes on Jenkins. That symbol is undefined, you need to import it first.","commit_id":"ddeeede8e338abdad72d5b348131455f06892e94"},{"author":{"_account_id":19283,"name":"Octave Orgeron","email":"octave.orgeron@oracle.com","username":"oorgeron"},"change_message_id":"795da362f7d1fba91a437521553138efd9da0558","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def TinyText():"},{"line_number":39,"context_line":"    return Text().with_variant(dialects.mysql.TINYTEXT(), \u0027mysql\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class CinderBase(models.TimestampMixin,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa31d9ce_3926d868","line":39,"range":{"start_line":39,"start_character":31,"end_line":39,"end_character":39},"in_reply_to":"fa31d9ce_2eae04e6","updated":"2017-02-17 18:22:06.000000000","message":"Sorry I missed adding the dialects module when I was updating this. I\u0027ll fix this.","commit_id":"ddeeede8e338abdad72d5b348131455f06892e94"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"11d3ef199f6b88c3747e57ae4aa86c4a244e7991","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                 models.ModelBase):"},{"line_number":44,"context_line":"    \"\"\"Base class for Cinder Models.\"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    __table_args__ \u003d {\u0027mysql_engine\u0027: CONF.database.mysql_storage_engine}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    # TODO(rpodolyaka): reuse models.SoftDeleteMixin in the next stage"},{"line_number":49,"context_line":"    #                   of implementing of BP db-cleanup"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa31d9ce_3443996d","line":46,"updated":"2017-02-15 21:06:10.000000000","message":"ditto here.  technically cinder doesn\u0027t even need this argument here at all as the database is always built up through migrations.","commit_id":"ddeeede8e338abdad72d5b348131455f06892e94"},{"author":{"_account_id":19283,"name":"Octave Orgeron","email":"octave.orgeron@oracle.com","username":"oorgeron"},"change_message_id":"795da362f7d1fba91a437521553138efd9da0558","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                 models.ModelBase):"},{"line_number":44,"context_line":"    \"\"\"Base class for Cinder Models.\"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    __table_args__ \u003d {\u0027mysql_engine\u0027: CONF.database.mysql_storage_engine}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    # TODO(rpodolyaka): reuse models.SoftDeleteMixin in the next stage"},{"line_number":49,"context_line":"    #                   of implementing of BP db-cleanup"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa31d9ce_3999786f","line":46,"in_reply_to":"fa31d9ce_3443996d","updated":"2017-02-17 18:22:06.000000000","message":"Surprisingly there are lots of use cases where this line is in the models.py or migration script across the services. In this particular use case they are setting the mysql_engine as part of the table arguments. Would we need to capture other operations than CreateTable?","commit_id":"ddeeede8e338abdad72d5b348131455f06892e94"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"29d28bb6277584a21d1c841c502d9d55fded2ead","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    host \u003d Column(String(255))  # , ForeignKey(\u0027hosts.id\u0027))"},{"line_number":265,"context_line":"    size \u003d Column(Integer)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    if CONF.database.mysql_enable_ndb:"},{"line_number":268,"context_line":"        availability_zone \u003d Column(ndb.TinyText())"},{"line_number":269,"context_line":"        status \u003d Column(String(64))"},{"line_number":270,"context_line":"        attach_status \u003d Column(String(64))"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_72aa651b","line":267,"updated":"2017-02-28 16:19:38.000000000","message":"This should also be that \"conditional\" we referred to.  But also, String() here is fine for both backends, the length of a String() type is not used anywhere except during CREATE TABLE, which for MySQL occurs within the migrations.  So this is not needed.","commit_id":"45cbac5937e3d08812ea21744b557078c3c51af0"},{"author":{"_account_id":19283,"name":"Octave Orgeron","email":"octave.orgeron@oracle.com","username":"oorgeron"},"change_message_id":"f8d6c032fc3217baa15ef20b1b698859db81c04a","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    host \u003d Column(String(255))  # , ForeignKey(\u0027hosts.id\u0027))"},{"line_number":265,"context_line":"    size \u003d Column(Integer)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    if CONF.database.mysql_enable_ndb:"},{"line_number":268,"context_line":"        availability_zone \u003d Column(ndb.TinyText())"},{"line_number":269,"context_line":"        status \u003d Column(String(64))"},{"line_number":270,"context_line":"        attach_status \u003d Column(String(64))"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_68ad1888","line":267,"in_reply_to":"ba2be162_72aa651b","updated":"2017-02-28 16:58:59.000000000","message":"I\u0027ll remove these and see if things work. Again, I don\u0027t want to globally change String().","commit_id":"45cbac5937e3d08812ea21744b557078c3c51af0"}],"cinder/tests/unit/test_migrations.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"8dd16c55a0e4d96a27ea5106daaef72f1911685b","unresolved":false,"context_lines":[{"line_number":1115,"context_line":""},{"line_number":1116,"context_line":"    BOOL_TYPE \u003d sqlalchemy.dialects.mysql.TINYINT"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"    def test_mysql_innodb_ndb(self):"},{"line_number":1119,"context_line":"        \"\"\"Test that table creation on mysql only builds InnoDB/NDB tables.\"\"\""},{"line_number":1120,"context_line":"        # add this to the global lists to make reset work with it, it\u0027s removed"},{"line_number":1121,"context_line":"        # automatically in tearDown so no need to clean it up here."},{"line_number":1122,"context_line":"        # sanity check"},{"line_number":1123,"context_line":"        migration.db_sync(engine\u003dself.migrate_engine)"},{"line_number":1124,"context_line":""},{"line_number":1125,"context_line":"        total \u003d self.migrate_engine.execute("},{"line_number":1126,"context_line":"            \"SELECT count(*) \""},{"line_number":1127,"context_line":"            \"from information_schema.TABLES \""},{"line_number":1128,"context_line":"            \"where TABLE_SCHEMA\u003d\u0027{0}\u0027\".format("},{"line_number":1129,"context_line":"                self.migrate_engine.url.database))"},{"line_number":1130,"context_line":"        self.assertGreater(total.scalar(), 0,"},{"line_number":1131,"context_line":"                           msg\u003d\"No tables found. Wrong schema?\")"},{"line_number":1132,"context_line":""},{"line_number":1133,"context_line":"        noninnodb \u003d self.migrate_engine.execute("},{"line_number":1134,"context_line":"            \"SELECT count(*) \""},{"line_number":1135,"context_line":"            \"from information_schema.TABLES \""},{"line_number":1136,"context_line":"            \"where TABLE_SCHEMA\u003d\u0027openstack_citest\u0027 \""},{"line_number":1137,"context_line":"            \"and ENGINE!\u003d\u0027%(mysql_storage_engine)s\u0027 \""},{"line_number":1138,"context_line":"            \"and TABLE_NAME!\u003d\u0027migrate_version\u0027\" %"},{"line_number":1139,"context_line":"            dict(mysql_storage_engine\u003dCONF.database.mysql_storage_engine))"},{"line_number":1140,"context_line":"        count \u003d noninnodb.scalar()"},{"line_number":1141,"context_line":"        self.assertEqual(count, 0, \"%d non InnoDB/NDB tables created\" % count)"},{"line_number":1142,"context_line":""},{"line_number":1143,"context_line":""},{"line_number":1144,"context_line":"class TestPostgresqlMigrations(test_base.PostgreSQLOpportunisticTestCase,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa31d9ce_0ee1402d","line":1141,"range":{"start_line":1118,"start_character":0,"end_line":1141,"end_character":78},"updated":"2017-02-15 09:55:06.000000000","message":"Unit tests cannot depend on a config variable value. We should have a new test class, that will check migrations with NDB enabled.","commit_id":"ddeeede8e338abdad72d5b348131455f06892e94"},{"author":{"_account_id":19283,"name":"Octave Orgeron","email":"octave.orgeron@oracle.com","username":"oorgeron"},"change_message_id":"795da362f7d1fba91a437521553138efd9da0558","unresolved":false,"context_lines":[{"line_number":1115,"context_line":""},{"line_number":1116,"context_line":"    BOOL_TYPE \u003d sqlalchemy.dialects.mysql.TINYINT"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"    def test_mysql_innodb_ndb(self):"},{"line_number":1119,"context_line":"        \"\"\"Test that table creation on mysql only builds InnoDB/NDB tables.\"\"\""},{"line_number":1120,"context_line":"        # add this to the global lists to make reset work with it, it\u0027s removed"},{"line_number":1121,"context_line":"        # automatically in tearDown so no need to clean it up here."},{"line_number":1122,"context_line":"        # sanity check"},{"line_number":1123,"context_line":"        migration.db_sync(engine\u003dself.migrate_engine)"},{"line_number":1124,"context_line":""},{"line_number":1125,"context_line":"        total \u003d self.migrate_engine.execute("},{"line_number":1126,"context_line":"            \"SELECT count(*) \""},{"line_number":1127,"context_line":"            \"from information_schema.TABLES \""},{"line_number":1128,"context_line":"            \"where TABLE_SCHEMA\u003d\u0027{0}\u0027\".format("},{"line_number":1129,"context_line":"                self.migrate_engine.url.database))"},{"line_number":1130,"context_line":"        self.assertGreater(total.scalar(), 0,"},{"line_number":1131,"context_line":"                           msg\u003d\"No tables found. Wrong schema?\")"},{"line_number":1132,"context_line":""},{"line_number":1133,"context_line":"        noninnodb \u003d self.migrate_engine.execute("},{"line_number":1134,"context_line":"            \"SELECT count(*) \""},{"line_number":1135,"context_line":"            \"from information_schema.TABLES \""},{"line_number":1136,"context_line":"            \"where TABLE_SCHEMA\u003d\u0027openstack_citest\u0027 \""},{"line_number":1137,"context_line":"            \"and ENGINE!\u003d\u0027%(mysql_storage_engine)s\u0027 \""},{"line_number":1138,"context_line":"            \"and TABLE_NAME!\u003d\u0027migrate_version\u0027\" %"},{"line_number":1139,"context_line":"            dict(mysql_storage_engine\u003dCONF.database.mysql_storage_engine))"},{"line_number":1140,"context_line":"        count \u003d noninnodb.scalar()"},{"line_number":1141,"context_line":"        self.assertEqual(count, 0, \"%d non InnoDB/NDB tables created\" % count)"},{"line_number":1142,"context_line":""},{"line_number":1143,"context_line":""},{"line_number":1144,"context_line":"class TestPostgresqlMigrations(test_base.PostgreSQLOpportunisticTestCase,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa31d9ce_fc818e4e","line":1141,"range":{"start_line":1118,"start_character":0,"end_line":1141,"end_character":78},"in_reply_to":"fa31d9ce_0ee1402d","updated":"2017-02-17 18:22:06.000000000","message":"I\u0027ll remove these changes for now.","commit_id":"ddeeede8e338abdad72d5b348131455f06892e94"}],"releasenotes/notes/bug-1564110-enables-mysql-cluster-support-99012d96e029223a.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dd1d97d692b2aab0c4077e8e42ce085682c91ca2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Enables the usage of MySQL Cluster (NDB) with Cinder. This includes the"},{"line_number":5,"context_line":"    the usage of the boolean mysql_enable_ndb setting from oslo.db 4.24 and"},{"line_number":6,"context_line":"    above. This feature allows operators to select from MySQL (InnoDB) or"},{"line_number":7,"context_line":"    MySQL Cluster (NDB) as the database storage engine backend. This feature"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"1f1a1f67_66a02e91","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":11},"updated":"2017-07-19 00:55:37.000000000","message":"\"Enabled\" would be better as the context of this will be someone reading through the list of all changes after it has gone out.","commit_id":"d78739464326dc42a462ec9a84ab6fd643085170"},{"author":{"_account_id":19283,"name":"Octave Orgeron","email":"octave.orgeron@oracle.com","username":"oorgeron"},"change_message_id":"9959872fc475b154f4a114f640afd753358a8d27","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Enables the usage of MySQL Cluster (NDB) with Cinder. This includes the"},{"line_number":5,"context_line":"    the usage of the boolean mysql_enable_ndb setting from oslo.db 4.24 and"},{"line_number":6,"context_line":"    above. This feature allows operators to select from MySQL (InnoDB) or"},{"line_number":7,"context_line":"    MySQL Cluster (NDB) as the database storage engine backend. This feature"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"1f1a1f67_dde9f2e2","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":11},"in_reply_to":"1f1a1f67_66a02e91","updated":"2017-07-19 16:22:39.000000000","message":"Fixed.","commit_id":"d78739464326dc42a462ec9a84ab6fd643085170"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dd1d97d692b2aab0c4077e8e42ce085682c91ca2","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Enables the usage of MySQL Cluster (NDB) with Cinder. This includes the"},{"line_number":5,"context_line":"    the usage of the boolean mysql_enable_ndb setting from oslo.db 4.24 and"},{"line_number":6,"context_line":"    above. This feature allows operators to select from MySQL (InnoDB) or"},{"line_number":7,"context_line":"    MySQL Cluster (NDB) as the database storage engine backend. This feature"},{"line_number":8,"context_line":"    is intended only for new installations as there is no automated migration"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"1f1a1f67_26a6b6ac","line":5,"range":{"start_line":5,"start_character":4,"end_line":5,"end_character":7},"updated":"2017-07-19 00:55:37.000000000","message":"Two \"the\"\u0027s","commit_id":"d78739464326dc42a462ec9a84ab6fd643085170"},{"author":{"_account_id":19283,"name":"Octave Orgeron","email":"octave.orgeron@oracle.com","username":"oorgeron"},"change_message_id":"9959872fc475b154f4a114f640afd753358a8d27","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Enables the usage of MySQL Cluster (NDB) with Cinder. This includes the"},{"line_number":5,"context_line":"    the usage of the boolean mysql_enable_ndb setting from oslo.db 4.24 and"},{"line_number":6,"context_line":"    above. This feature allows operators to select from MySQL (InnoDB) or"},{"line_number":7,"context_line":"    MySQL Cluster (NDB) as the database storage engine backend. This feature"},{"line_number":8,"context_line":"    is intended only for new installations as there is no automated migration"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"1f1a1f67_9dc13a57","line":5,"range":{"start_line":5,"start_character":4,"end_line":5,"end_character":7},"in_reply_to":"1f1a1f67_26a6b6ac","updated":"2017-07-19 16:22:39.000000000","message":"Good catch.","commit_id":"d78739464326dc42a462ec9a84ab6fd643085170"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dd1d97d692b2aab0c4077e8e42ce085682c91ca2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    MySQL Cluster (NDB) as the database storage engine backend. This feature"},{"line_number":8,"context_line":"    is intended only for new installations as there is no automated migration"},{"line_number":9,"context_line":"    path from InnoDB to MySQL Cluster (NDB)."},{"line_number":10,"context_line":"fixes:"},{"line_number":11,"context_line":"  - |"},{"line_number":12,"context_line":"    Implements minor fixes to the SQL Alchemy scripts in Cinder to support the"},{"line_number":13,"context_line":"    MySQL Cluster DB. This includes the usage of the boolean mysql_enable_ndb"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"1f1a1f67_06e05acc","line":10,"updated":"2017-07-19 00:55:37.000000000","message":"This fixes section can be removed. As far as the end user is concerned, nothing is \"fixed\" here as this just wasn\u0027t functionality available before. And getting into SQL Alchemy is probably an internal implementation detail that they won\u0027t understand.","commit_id":"d78739464326dc42a462ec9a84ab6fd643085170"},{"author":{"_account_id":19283,"name":"Octave Orgeron","email":"octave.orgeron@oracle.com","username":"oorgeron"},"change_message_id":"9959872fc475b154f4a114f640afd753358a8d27","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    MySQL Cluster (NDB) as the database storage engine backend. This feature"},{"line_number":8,"context_line":"    is intended only for new installations as there is no automated migration"},{"line_number":9,"context_line":"    path from InnoDB to MySQL Cluster (NDB)."},{"line_number":10,"context_line":"fixes:"},{"line_number":11,"context_line":"  - |"},{"line_number":12,"context_line":"    Implements minor fixes to the SQL Alchemy scripts in Cinder to support the"},{"line_number":13,"context_line":"    MySQL Cluster DB. This includes the usage of the boolean mysql_enable_ndb"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"1f1a1f67_1dcd2a84","line":10,"in_reply_to":"1f1a1f67_06e05acc","updated":"2017-07-19 16:22:39.000000000","message":"Removed.","commit_id":"d78739464326dc42a462ec9a84ab6fd643085170"}]}
