)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"7fca8ad649ff6e2aa25379f749603ccbddb68d2b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement ModelsMigrationsSync test from oslo.db"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add test for checking of equality models state and migrations."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"bp: db-migration-refactor"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"baada198_b697eb39","line":9,"updated":"2014-07-16 09:49:21.000000000","message":"can you explain cisco change?\nwhat\u0027s the relationship with https://review.openstack.org/#/c/106725/ ?","commit_id":"9c385374abf38cfe4ed105ed7d483acc971599fa"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"7a86ed9c1b1650b67a8038a8e167dd243afc2a41","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement ModelsMigrationsSync test from oslo.db"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add test for checking of equality models state and migrations."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"bp: db-migration-refactor"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"baada198_fa0a2578","line":9,"in_reply_to":"baada198_b697eb39","updated":"2014-07-16 10:46:52.000000000","message":"It was accidentally added during testing.","commit_id":"9c385374abf38cfe4ed105ed7d483acc971599fa"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"7fca8ad649ff6e2aa25379f749603ccbddb68d2b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add test for checking of equality models state and migrations."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"bp: db-migration-refactor"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ic0e7eb37c30cc5e94cbdbddf07a6dc1ebf377c17"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"baada198_3632fbf2","line":11,"updated":"2014-07-16 09:49:21.000000000","message":"Implements: blueprint ...","commit_id":"9c385374abf38cfe4ed105ed7d483acc971599fa"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"7a86ed9c1b1650b67a8038a8e167dd243afc2a41","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add test for checking of equality models state and migrations."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"bp: db-migration-refactor"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ic0e7eb37c30cc5e94cbdbddf07a6dc1ebf377c17"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"baada198_1a10b9a7","line":11,"in_reply_to":"baada198_3632fbf2","updated":"2014-07-16 10:46:52.000000000","message":"done","commit_id":"9c385374abf38cfe4ed105ed7d483acc971599fa"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"eb339c90300f25f56d6fd8b00d0acfd68f82ddc8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Ann Kamyshnikova \u003cakamyshnikova@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-09-17 17:57:54 +0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement ModelsMigrationsSync test from oslo.db"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add test for checking of equality models state and migrations and"},{"line_number":10,"context_line":"usage InnoDB engine for MySQL."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":73,"id":"fa98f980_53bbf674","line":7,"updated":"2014-09-18 12:48:27.000000000","message":"\"Functional tests to verify models and migrations, check InnoDB\"","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"eb339c90300f25f56d6fd8b00d0acfd68f82ddc8","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Implement ModelsMigrationsSync test from oslo.db"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add test for checking of equality models state and migrations and"},{"line_number":10,"context_line":"usage InnoDB engine for MySQL."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-bug: #1346444"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":73,"id":"fa98f980_b30ee28a","line":10,"updated":"2014-09-18 12:48:27.000000000","message":"\"Add functional tests to verify that database migrations produce the same schema as the database models. Also for MySQL, check that all tables are configured to use InnoDB as the storage engine.\n\nThese tests make use of the ModelsMigrationsSync test class from oslo.db and the load_tests protocal from Python unittest.\"","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ee980a56ef2f9528ad893d61e5d473fd373c3726","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Also for MySQL, check that all tables are configured to use InnoDB"},{"line_number":13,"context_line":"as the storage engine."},{"line_number":14,"context_line":"These tests make use of the ModelsMigrationsSync test class from"},{"line_number":15,"context_line":"oslo.db and the load_tests protocal from Python unittest"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-bug: #1346444"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":74,"id":"fa98f980_9b064c84","line":15,"updated":"2014-09-18 17:24:39.000000000","message":"protocol","commit_id":"4d0ef19ba1c0e39872710d599776fa2c739b9a06"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"f77d7d19530f69809e81e265b4871d0158f7b117","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Also for MySQL, check that all tables are configured to use InnoDB"},{"line_number":13,"context_line":"as the storage engine."},{"line_number":14,"context_line":"These tests make use of the ModelsMigrationsSync test class from"},{"line_number":15,"context_line":"oslo.db and the load_tests protocal from Python unittest"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-bug: #1346444"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":74,"id":"fa98f980_4e9df2ba","line":15,"in_reply_to":"fa98f980_9b064c84","updated":"2014-09-19 05:18:51.000000000","message":"I copied your comment ;)","commit_id":"4d0ef19ba1c0e39872710d599776fa2c739b9a06"}],"neutron/db/migration/cli.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"d26701cb2b9b7a7dea192a41cbd1bb8e3cebbf8f","unresolved":false,"context_lines":[{"line_number":167,"context_line":"def main():"},{"line_number":168,"context_line":"    config \u003d get_alembic_config()"},{"line_number":169,"context_line":"    config.set_main_option(\u0027script_location\u0027,"},{"line_number":170,"context_line":"                           \u0027neutron.db.migration:alembic_migrations\u0027)"},{"line_number":171,"context_line":"    # attach the Neutron conf to the Alembic conf"},{"line_number":172,"context_line":"    config.neutron_config \u003d CONF"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":81,"id":"baa201ad_dcf56acc","line":170,"updated":"2014-09-29 15:28:58.000000000","message":"for reasons that I now do not remember, it was decided to set the script location here rather than in alembic.ini.\n\nI\u0027ve seen that as you need the appropriate configuration in the unit test module, you\u0027ve changed the path in alembic.ini - actually I think it would have been enough to move the line above in get_alembic_config.\n\nI do not have a strong opinion here - I\u0027d just prefer to set the script_location property in the same way - either alembic.ini or programmatically- in every case.","commit_id":"1024545615cf8ce536e7ad7adbdcb7cd44121b62"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"a2c600689f8186765cdfd03a39a8662666a98108","unresolved":false,"context_lines":[{"line_number":167,"context_line":"def main():"},{"line_number":168,"context_line":"    config \u003d get_alembic_config()"},{"line_number":169,"context_line":"    config.set_main_option(\u0027script_location\u0027,"},{"line_number":170,"context_line":"                           \u0027neutron.db.migration:alembic_migrations\u0027)"},{"line_number":171,"context_line":"    # attach the Neutron conf to the Alembic conf"},{"line_number":172,"context_line":"    config.neutron_config \u003d CONF"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":81,"id":"baa201ad_c0d3aa36","line":170,"in_reply_to":"baa201ad_dcf56acc","updated":"2014-09-30 07:59:36.000000000","message":"done","commit_id":"1024545615cf8ce536e7ad7adbdcb7cd44121b62"}],"neutron/tests/functional/db/test_migration.py":[{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"92458bc632c75b76cd4f2432138ebe8cff32a0dd","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import collections"},{"line_number":16,"context_line":"import logging"},{"line_number":17,"context_line":"import pprint"},{"line_number":18,"context_line":"import unittest"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import alembic"},{"line_number":21,"context_line":"import alembic.autogenerate"}],"source_content_type":"text/x-python","patch_set":73,"id":"fa98f980_de660dee","line":18,"updated":"2014-09-18 11:23:09.000000000","message":"I\u0027m not familiar with how our functional tests work exactly but importing and using unittest in them seems disturbing.","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"eb339c90300f25f56d6fd8b00d0acfd68f82ddc8","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import collections"},{"line_number":16,"context_line":"import logging"},{"line_number":17,"context_line":"import pprint"},{"line_number":18,"context_line":"import unittest"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import alembic"},{"line_number":21,"context_line":"import alembic.autogenerate"}],"source_content_type":"text/x-python","patch_set":73,"id":"fa98f980_7997fbeb","line":18,"in_reply_to":"fa98f980_de660dee","updated":"2014-09-18 12:48:27.000000000","message":"The functional tests still use the unittest framework for test cases. Here we are using using the neato load_tests protocol for discovering test cases. https://docs.python.org/2/library/unittest.html#load-tests-protocol","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"eb339c90300f25f56d6fd8b00d0acfd68f82ddc8","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        pkg.iter_entry_points(plugin_type)"},{"line_number":49,"context_line":"    ]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"SERVICE_PLUGINS \u003d {"},{"line_number":52,"context_line":"    \u0027lbaas\u0027: \u0027neutron.services.loadbalancer.plugin.LoadBalancerPlugin\u0027,"},{"line_number":53,"context_line":"    \u0027fwaas\u0027: \u0027neutron.services.firewall.fwaas_plugin.FirewallPlugin\u0027,"},{"line_number":54,"context_line":"    \u0027metering\u0027: \u0027neutron.services.metering.metering_plugin.MeteringPlugin\u0027,"}],"source_content_type":"text/x-python","patch_set":73,"id":"fa98f980_fee031fa","line":51,"updated":"2014-09-18 12:48:27.000000000","message":"SERVICE_PLUGINS \u003d _discover_plugins(\u0027neutron.service_plugins\u0027)","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"8a1843fe538b059c0c0a3e88de42780dca13df43","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        pkg.iter_entry_points(plugin_type)"},{"line_number":49,"context_line":"    ]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"SERVICE_PLUGINS \u003d {"},{"line_number":52,"context_line":"    \u0027lbaas\u0027: \u0027neutron.services.loadbalancer.plugin.LoadBalancerPlugin\u0027,"},{"line_number":53,"context_line":"    \u0027fwaas\u0027: \u0027neutron.services.firewall.fwaas_plugin.FirewallPlugin\u0027,"},{"line_number":54,"context_line":"    \u0027metering\u0027: \u0027neutron.services.metering.metering_plugin.MeteringPlugin\u0027,"}],"source_content_type":"text/x-python","patch_set":73,"id":"fa98f980_df244710","line":51,"in_reply_to":"fa98f980_fee031fa","updated":"2014-09-18 14:02:22.000000000","message":"done","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"eb339c90300f25f56d6fd8b00d0acfd68f82ddc8","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    \u0027\u0027\u0027"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    service_plugins \u003d [\u0027lbaas\u0027, \u0027fwaas\u0027, \u0027metering\u0027, \u0027vpn\u0027]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def setUp(self):"},{"line_number":130,"context_line":"        patch \u003d mock.patch.dict(\u0027sys.modules\u0027, {"}],"source_content_type":"text/x-python","patch_set":73,"id":"fa98f980_595dd7eb","line":127,"updated":"2014-09-18 12:48:27.000000000","message":"Not needed.","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"8a1843fe538b059c0c0a3e88de42780dca13df43","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    \u0027\u0027\u0027"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    service_plugins \u003d [\u0027lbaas\u0027, \u0027fwaas\u0027, \u0027metering\u0027, \u0027vpn\u0027]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def setUp(self):"},{"line_number":130,"context_line":"        patch \u003d mock.patch.dict(\u0027sys.modules\u0027, {"}],"source_content_type":"text/x-python","patch_set":73,"id":"fa98f980_1f1fafb8","line":127,"in_reply_to":"fa98f980_595dd7eb","updated":"2014-09-18 14:02:22.000000000","message":"done","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"eb339c90300f25f56d6fd8b00d0acfd68f82ddc8","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        super(ModelsMigrationsSyncMixin, self).setUp()"},{"line_number":140,"context_line":"        self.service_plugins_conf \u003d []"},{"line_number":141,"context_line":"        for plugin in self.service_plugins:"},{"line_number":142,"context_line":"            self.service_plugins_conf.append(SERVICE_PLUGINS[plugin])"},{"line_number":143,"context_line":"        self.cfg \u003d self.useFixture(config.Config())"},{"line_number":144,"context_line":"        self.cfg.config(service_plugins\u003dself.service_plugins_conf,"},{"line_number":145,"context_line":"                        core_plugin\u003dself.core_plugin)"}],"source_content_type":"text/x-python","patch_set":73,"id":"fa98f980_d95c674f","line":142,"updated":"2014-09-18 12:48:27.000000000","message":"Lines 140-142 not needed.","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"8a1843fe538b059c0c0a3e88de42780dca13df43","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        super(ModelsMigrationsSyncMixin, self).setUp()"},{"line_number":140,"context_line":"        self.service_plugins_conf \u003d []"},{"line_number":141,"context_line":"        for plugin in self.service_plugins:"},{"line_number":142,"context_line":"            self.service_plugins_conf.append(SERVICE_PLUGINS[plugin])"},{"line_number":143,"context_line":"        self.cfg \u003d self.useFixture(config.Config())"},{"line_number":144,"context_line":"        self.cfg.config(service_plugins\u003dself.service_plugins_conf,"},{"line_number":145,"context_line":"                        core_plugin\u003dself.core_plugin)"}],"source_content_type":"text/x-python","patch_set":73,"id":"fa98f980_3f1ab3c6","line":142,"in_reply_to":"fa98f980_d95c674f","updated":"2014-09-18 14:02:22.000000000","message":"done","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"eb339c90300f25f56d6fd8b00d0acfd68f82ddc8","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        for plugin in self.service_plugins:"},{"line_number":142,"context_line":"            self.service_plugins_conf.append(SERVICE_PLUGINS[plugin])"},{"line_number":143,"context_line":"        self.cfg \u003d self.useFixture(config.Config())"},{"line_number":144,"context_line":"        self.cfg.config(service_plugins\u003dself.service_plugins_conf,"},{"line_number":145,"context_line":"                        core_plugin\u003dself.core_plugin)"},{"line_number":146,"context_line":"        self.alembic_config \u003d migration.get_alembic_config()"},{"line_number":147,"context_line":"        self.alembic_config.neutron_config \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":73,"id":"fa98f980_1957cf27","line":144,"updated":"2014-09-18 12:48:27.000000000","message":"service_plugins\u003dSERVICE_PLUGINS","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"8a1843fe538b059c0c0a3e88de42780dca13df43","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        for plugin in self.service_plugins:"},{"line_number":142,"context_line":"            self.service_plugins_conf.append(SERVICE_PLUGINS[plugin])"},{"line_number":143,"context_line":"        self.cfg \u003d self.useFixture(config.Config())"},{"line_number":144,"context_line":"        self.cfg.config(service_plugins\u003dself.service_plugins_conf,"},{"line_number":145,"context_line":"                        core_plugin\u003dself.core_plugin)"},{"line_number":146,"context_line":"        self.alembic_config \u003d migration.get_alembic_config()"},{"line_number":147,"context_line":"        self.alembic_config.neutron_config \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":73,"id":"fa98f980_7f7b5bf4","line":144,"in_reply_to":"fa98f980_1957cf27","updated":"2014-09-18 14:02:22.000000000","message":"done","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"eb339c90300f25f56d6fd8b00d0acfd68f82ddc8","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                                            meta_def)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    # TODO(akamyshnikova):remove _compare_server_default methods when it"},{"line_number":174,"context_line":"    # appears in oslo.db(version\u003e0.5.0)"},{"line_number":175,"context_line":"    @utils.DialectFunctionDispatcher.dispatch_for_dialect(\"*\")"},{"line_number":176,"context_line":"    def _compare_server_default(bind, meta_col, insp_def, meta_def):"},{"line_number":177,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":73,"id":"fa98f980_fec75163","line":174,"updated":"2014-09-18 12:48:27.000000000","message":"0.5.0 is released now, but I guess it is too late to update the requirements for Juno.","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"8a1843fe538b059c0c0a3e88de42780dca13df43","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                                            meta_def)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    # TODO(akamyshnikova):remove _compare_server_default methods when it"},{"line_number":174,"context_line":"    # appears in oslo.db(version\u003e0.5.0)"},{"line_number":175,"context_line":"    @utils.DialectFunctionDispatcher.dispatch_for_dialect(\"*\")"},{"line_number":176,"context_line":"    def _compare_server_default(bind, meta_col, insp_def, meta_def):"},{"line_number":177,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":73,"id":"fa98f980_24c70666","line":174,"in_reply_to":"fa98f980_fec75163","updated":"2014-09-18 14:02:22.000000000","message":"This fix has not appear https://review.openstack.org/120746 so we still need this, wait for 0.6.0","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"eb339c90300f25f56d6fd8b00d0acfd68f82ddc8","unresolved":false,"context_lines":[{"line_number":353,"context_line":"            core_plugin \u003d plugin"},{"line_number":354,"context_line":"            if (\u0027brocade\u0027 in core_plugin or \u0027nuage\u0027 in core_plugin or"},{"line_number":355,"context_line":"                    \u0027embrane\u0027 in core_plugin):"},{"line_number":356,"context_line":"                service_plugins \u003d [\u0027lbaas\u0027, \u0027fwaas\u0027, \u0027metering\u0027]"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        bases \u003d [(\u0027Mysql\u0027, test_base.MySQLOpportunisticTestCase),"},{"line_number":359,"context_line":"                 (\u0027Psql\u0027, test_base.PostgreSQLOpportunisticTestCase)]"}],"source_content_type":"text/x-python","patch_set":73,"id":"fa98f980_f944cb1a","line":356,"updated":"2014-09-18 12:48:27.000000000","message":"Lines 354-356 not needed.","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"8a1843fe538b059c0c0a3e88de42780dca13df43","unresolved":false,"context_lines":[{"line_number":353,"context_line":"            core_plugin \u003d plugin"},{"line_number":354,"context_line":"            if (\u0027brocade\u0027 in core_plugin or \u0027nuage\u0027 in core_plugin or"},{"line_number":355,"context_line":"                    \u0027embrane\u0027 in core_plugin):"},{"line_number":356,"context_line":"                service_plugins \u003d [\u0027lbaas\u0027, \u0027fwaas\u0027, \u0027metering\u0027]"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        bases \u003d [(\u0027Mysql\u0027, test_base.MySQLOpportunisticTestCase),"},{"line_number":359,"context_line":"                 (\u0027Psql\u0027, test_base.PostgreSQLOpportunisticTestCase)]"}],"source_content_type":"text/x-python","patch_set":73,"id":"fa98f980_bf85c3d0","line":356,"in_reply_to":"fa98f980_f944cb1a","updated":"2014-09-18 14:02:22.000000000","message":"done","commit_id":"ce00dafcd0b78009a47cdd2e644e9828321548a0"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ee980a56ef2f9528ad893d61e5d473fd373c3726","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"SERVICE_PLUGINS \u003d _discover_plugins(\"neutron.service_plugins\")"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"CORE_PLUGINS \u003d _discover_plugins(\u0027neutron.core_plugins\u0027)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":74,"id":"fa98f980_dbe9b4b8","line":53,"updated":"2014-09-18 17:24:39.000000000","message":"Delete blank lines 52,53","commit_id":"4d0ef19ba1c0e39872710d599776fa2c739b9a06"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"f77d7d19530f69809e81e265b4871d0158f7b117","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"SERVICE_PLUGINS \u003d _discover_plugins(\"neutron.service_plugins\")"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"CORE_PLUGINS \u003d _discover_plugins(\u0027neutron.core_plugins\u0027)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":74,"id":"fa98f980_cea802dc","line":53,"in_reply_to":"fa98f980_dbe9b4b8","updated":"2014-09-19 05:18:51.000000000","message":"done","commit_id":"4d0ef19ba1c0e39872710d599776fa2c739b9a06"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ee980a56ef2f9528ad893d61e5d473fd373c3726","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    \u0027\u0027\u0027"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    service_plugins \u003d [\u0027lbaas\u0027, \u0027fwaas\u0027, \u0027metering\u0027, \u0027vpn\u0027]"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def setUp(self):"},{"line_number":125,"context_line":"        patch \u003d mock.patch.dict(\u0027sys.modules\u0027, {"}],"source_content_type":"text/x-python","patch_set":74,"id":"fa98f980_3bc3a039","line":122,"updated":"2014-09-18 17:24:39.000000000","message":"Still not needed. :)","commit_id":"4d0ef19ba1c0e39872710d599776fa2c739b9a06"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"f77d7d19530f69809e81e265b4871d0158f7b117","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    \u0027\u0027\u0027"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    service_plugins \u003d [\u0027lbaas\u0027, \u0027fwaas\u0027, \u0027metering\u0027, \u0027vpn\u0027]"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def setUp(self):"},{"line_number":125,"context_line":"        patch \u003d mock.patch.dict(\u0027sys.modules\u0027, {"}],"source_content_type":"text/x-python","patch_set":74,"id":"fa98f980_8ea7da0a","line":122,"in_reply_to":"fa98f980_3bc3a039","updated":"2014-09-19 05:18:51.000000000","message":"Thanks. will remove","commit_id":"4d0ef19ba1c0e39872710d599776fa2c739b9a06"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ee980a56ef2f9528ad893d61e5d473fd373c3726","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                                            meta_def)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    # TODO(akamyshnikova):remove _compare_server_default methods when it"},{"line_number":165,"context_line":"    # appears in oslo.db(version\u003e0.5.0)"},{"line_number":166,"context_line":"    @utils.DialectFunctionDispatcher.dispatch_for_dialect(\"*\")"},{"line_number":167,"context_line":"    def _compare_server_default(bind, meta_col, insp_def, meta_def):"},{"line_number":168,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":74,"id":"fa98f980_bbe6b0e6","line":165,"updated":"2014-09-18 17:24:39.000000000","message":"Can you update the comment? Is the next version 0.6.0 or 1.x?","commit_id":"4d0ef19ba1c0e39872710d599776fa2c739b9a06"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"f77d7d19530f69809e81e265b4871d0158f7b117","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                                            meta_def)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    # TODO(akamyshnikova):remove _compare_server_default methods when it"},{"line_number":165,"context_line":"    # appears in oslo.db(version\u003e0.5.0)"},{"line_number":166,"context_line":"    @utils.DialectFunctionDispatcher.dispatch_for_dialect(\"*\")"},{"line_number":167,"context_line":"    def _compare_server_default(bind, meta_col, insp_def, meta_def):"},{"line_number":168,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":74,"id":"fa98f980_0e5cca18","line":165,"in_reply_to":"fa98f980_bbe6b0e6","updated":"2014-09-19 05:18:51.000000000","message":"I don\u0027t know what will be next version, that is why I updated from version\u003e0.5.0 to version\u003e1.0.0.","commit_id":"4d0ef19ba1c0e39872710d599776fa2c739b9a06"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3f5c9599090e56bcaef342ed9aa094741622d578","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"cfg.CONF.import_opt(\u0027core_plugin\u0027, \u0027neutron.common.config\u0027)"},{"line_number":40,"context_line":"cfg.CONF.import_opt(\u0027service_plugins\u0027, \u0027neutron.common.config\u0027)"},{"line_number":41,"context_line":"cfg.CONF.register_cli_opt(cfg.StrOpt(\u0027mysql_engine\u0027, default\u003d\u0027\u0027), \u0027command\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def _discover_plugins(plugin_type):"}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_caf3be71","line":41,"updated":"2014-09-22 21:18:14.000000000","message":"Why this is being defined in the test module rather than being imported?","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"fe7eb52cd885e7e74831cf126922c1dde06bdb33","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"cfg.CONF.import_opt(\u0027core_plugin\u0027, \u0027neutron.common.config\u0027)"},{"line_number":40,"context_line":"cfg.CONF.import_opt(\u0027service_plugins\u0027, \u0027neutron.common.config\u0027)"},{"line_number":41,"context_line":"cfg.CONF.register_cli_opt(cfg.StrOpt(\u0027mysql_engine\u0027, default\u003d\u0027\u0027), \u0027command\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def _discover_plugins(plugin_type):"}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_67411f39","line":41,"in_reply_to":"da9df570_caf3be71","updated":"2014-09-23 07:12:33.000000000","message":"There is no place from where it can be imported.","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3f5c9599090e56bcaef342ed9aa094741622d578","unresolved":false,"context_lines":[{"line_number":55,"context_line":"class ModelsMigrationsSyncMixin(object):"},{"line_number":56,"context_line":"    \u0027\u0027\u0027Test for checking of equality models state and migrations."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    For the opportunistic testing you need to set up a db named"},{"line_number":59,"context_line":"    \u0027openstack_citest\u0027 with user \u0027openstack_citest\u0027 and password"},{"line_number":60,"context_line":"    \u0027openstack_citest\u0027 on localhost."},{"line_number":61,"context_line":"    The test will then use that db and user/password combo to run the tests."}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_8a31b6ee","line":58,"updated":"2014-09-22 21:18:14.000000000","message":"The openstack_citest credentials are only configured for nodes that run unittests.  Since the functional job runs on devstack nodes, we\u0027re going to have to make sure that similar provisioning is done there as well.","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3f5c9599090e56bcaef342ed9aa094741622d578","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    \u0027openstack_citest\u0027 on localhost."},{"line_number":61,"context_line":"    The test will then use that db and user/password combo to run the tests."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    For PostgreSQL on Ubuntu this can be done with the following commands::"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        sudo -u postgres psql"},{"line_number":66,"context_line":"        postgres\u003d# create user openstack_citest with createdb login password"}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_ea6ec2c8","line":63,"updated":"2014-09-22 21:18:14.000000000","message":"We\u0027re going to need to ensure that devstack can deploy postgres and mysql simultaneously.  It cannot do so at present - it\u0027s either/or.","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"fe7eb52cd885e7e74831cf126922c1dde06bdb33","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    \u0027openstack_citest\u0027 on localhost."},{"line_number":61,"context_line":"    The test will then use that db and user/password combo to run the tests."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    For PostgreSQL on Ubuntu this can be done with the following commands::"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        sudo -u postgres psql"},{"line_number":66,"context_line":"        postgres\u003d# create user openstack_citest with createdb login password"}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_470fbb30","line":63,"in_reply_to":"da9df570_ea6ec2c8","updated":"2014-09-23 07:12:33.000000000","message":"This is a big problem as this tests should be run on both backends. If this can not do this at present on functional test, so I suggest to revert them to unittest and make them functional later when it is possible.","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3f5c9599090e56bcaef342ed9aa094741622d578","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            return insp_def !\u003d \"\u0027%s\u0027::character varying\" % meta_def.arg"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def test_models_sync(self):"},{"line_number":193,"context_line":"        try:"},{"line_number":194,"context_line":"            pkg.require(\u0027sqlalchemy\u003e\u003d0.8.4\u0027, \u0027alembic\u003e\u003d0.6.4\u0027)"},{"line_number":195,"context_line":"        except (pkg.VersionConflict, pkg.DistributionNotFound) as e:"},{"line_number":196,"context_line":"            self.skipTest(\u0027sqlalchemy\u003e\u003d0.8.4 and alembic\u003e\u003d0.6.4 are required\u0027"}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_8abb760d","line":193,"updated":"2014-09-22 21:18:14.000000000","message":"This try/except block is unnecessary.  Tests should never skip on dependencies that are mandatory for the package under test.","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"fe7eb52cd885e7e74831cf126922c1dde06bdb33","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            return insp_def !\u003d \"\u0027%s\u0027::character varying\" % meta_def.arg"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def test_models_sync(self):"},{"line_number":193,"context_line":"        try:"},{"line_number":194,"context_line":"            pkg.require(\u0027sqlalchemy\u003e\u003d0.8.4\u0027, \u0027alembic\u003e\u003d0.6.4\u0027)"},{"line_number":195,"context_line":"        except (pkg.VersionConflict, pkg.DistributionNotFound) as e:"},{"line_number":196,"context_line":"            self.skipTest(\u0027sqlalchemy\u003e\u003d0.8.4 and alembic\u003e\u003d0.6.4 are required\u0027"}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_a755c7c7","line":193,"in_reply_to":"da9df570_8abb760d","updated":"2014-09-23 07:12:33.000000000","message":"will do","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3f5c9599090e56bcaef342ed9aa094741622d578","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        except (pkg.VersionConflict, pkg.DistributionNotFound) as e:"},{"line_number":196,"context_line":"            self.skipTest(\u0027sqlalchemy\u003e\u003d0.8.4 and alembic\u003e\u003d0.6.4 are required\u0027"},{"line_number":197,"context_line":"                          \u0027 for running of this test: %s\u0027 % e)"},{"line_number":198,"context_line":"        import pdb;pdb.set_trace()"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # drop all tables after a test run"},{"line_number":201,"context_line":"        self.addCleanup(self._cleanup)"}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_0a478620","line":198,"updated":"2014-09-22 21:18:14.000000000","message":"Please remove.","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"fe7eb52cd885e7e74831cf126922c1dde06bdb33","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        except (pkg.VersionConflict, pkg.DistributionNotFound) as e:"},{"line_number":196,"context_line":"            self.skipTest(\u0027sqlalchemy\u003e\u003d0.8.4 and alembic\u003e\u003d0.6.4 are required\u0027"},{"line_number":197,"context_line":"                          \u0027 for running of this test: %s\u0027 % e)"},{"line_number":198,"context_line":"        import pdb;pdb.set_trace()"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # drop all tables after a test run"},{"line_number":201,"context_line":"        self.addCleanup(self._cleanup)"}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_44d09950","line":198,"in_reply_to":"da9df570_0a478620","updated":"2014-09-23 07:12:33.000000000","message":"This was added to check if test is skipped or not.","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3f5c9599090e56bcaef342ed9aa094741622d578","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        # Remove some difference that are not mistakes just specific of"},{"line_number":225,"context_line":"        # dialects, etc"},{"line_number":226,"context_line":"        def to_remove(element):"},{"line_number":227,"context_line":"                if isinstance(element, tuple):"},{"line_number":228,"context_line":"                    if dialect \u003d\u003d \u0027mysql\u0027 and element[0] \u003d\u003d \u0027remove_index\u0027:"},{"line_number":229,"context_line":"                        table_name \u003d element[1].table.name"}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_8a7e16ad","line":226,"updated":"2014-09-22 21:18:14.000000000","message":"Functions beyond the trivial should not be defined as inner functions (within another function).  Please extract.","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"fe7eb52cd885e7e74831cf126922c1dde06bdb33","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        # Remove some difference that are not mistakes just specific of"},{"line_number":225,"context_line":"        # dialects, etc"},{"line_number":226,"context_line":"        def to_remove(element):"},{"line_number":227,"context_line":"                if isinstance(element, tuple):"},{"line_number":228,"context_line":"                    if dialect \u003d\u003d \u0027mysql\u0027 and element[0] \u003d\u003d \u0027remove_index\u0027:"},{"line_number":229,"context_line":"                        table_name \u003d element[1].table.name"}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_0764d3b7","line":226,"in_reply_to":"da9df570_8a7e16ad","updated":"2014-09-23 07:12:33.000000000","message":"will do","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3f5c9599090e56bcaef342ed9aa094741622d578","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"            self.fail(\"Models and migration scripts aren\u0027t in sync:\\n%s\" % msg)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def _test_mysql_innodb_engine(self, dialect, insp):"},{"line_number":253,"context_line":"        if dialect !\u003d \u0027mysql\u0027:"},{"line_number":254,"context_line":"            return"},{"line_number":255,"context_line":""}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_0a2ce646","line":252,"updated":"2014-09-22 21:18:14.000000000","message":"The name of this method is misleading, since it isn\u0027t a test so much as a check that the db is sane.  Consider changing it to something more meaningful, like \u0027check_mysql_db_sanity\u0027.","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"fe7eb52cd885e7e74831cf126922c1dde06bdb33","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"            self.fail(\"Models and migration scripts aren\u0027t in sync:\\n%s\" % msg)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def _test_mysql_innodb_engine(self, dialect, insp):"},{"line_number":253,"context_line":"        if dialect !\u003d \u0027mysql\u0027:"},{"line_number":254,"context_line":"            return"},{"line_number":255,"context_line":""}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_2759d7fe","line":252,"in_reply_to":"da9df570_0a2ce646","updated":"2014-09-23 07:12:33.000000000","message":"will do","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3f5c9599090e56bcaef342ed9aa094741622d578","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                                               \u0027referred_table\u0027,"},{"line_number":268,"context_line":"                                               \u0027referred_columns\u0027])"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def check_foreign_keys(self, metadata, bind):"},{"line_number":271,"context_line":"        \"\"\"Compare foreign keys between model and db table."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        Returns a list that contains information about:"}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_8a2c56ad","line":270,"updated":"2014-09-22 21:18:14.000000000","message":"A prefix of \u0027check_\u0027 is generally used to indicate a method that raises an exception if some condition is not met.  Please change the name of this method to better reflect the documented purpose (e.g. determine_fk_changes).","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"fe7eb52cd885e7e74831cf126922c1dde06bdb33","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                                               \u0027referred_table\u0027,"},{"line_number":268,"context_line":"                                               \u0027referred_columns\u0027])"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def check_foreign_keys(self, metadata, bind):"},{"line_number":271,"context_line":"        \"\"\"Compare foreign keys between model and db table."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        Returns a list that contains information about:"}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_475edbe7","line":270,"in_reply_to":"da9df570_8a2c56ad","updated":"2014-09-23 07:12:33.000000000","message":"will do","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3f5c9599090e56bcaef342ed9aa094741622d578","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                           (fk.column.name,))"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"def load_tests(loader, tests, pattern):"},{"line_number":334,"context_line":"    suite \u003d unittest.TestSuite()"},{"line_number":335,"context_line":"    for plugin in CORE_PLUGINS:"},{"line_number":336,"context_line":"        plugin_name \u003d plugin.split(\u0027.\u0027)[-1]"}],"source_content_type":"text/x-python","patch_set":78,"id":"da9df570_ea99626f","line":333,"updated":"2014-09-22 21:18:14.000000000","message":"As I mentioned in an earlier comment, this is not the right way to do generative testing.  Please use testscenarios [1] instead.\n\n1: https://pypi.python.org/pypi/testscenarios/","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"}],"neutron/tests/unit/db/test_migration.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"1fb3ef88d2c2356d615fa0bcd435749896f5fef3","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            \u0027ryu\u0027: mock.MagicMock(),"},{"line_number":80,"context_line":"            \u0027ryu.app\u0027: mock.MagicMock(),"},{"line_number":81,"context_line":"            \u0027heleosapi\u0027: mock.MagicMock(),"},{"line_number":82,"context_line":"            \u0027midonetclient\u0027: mock.MagicMock(),"},{"line_number":83,"context_line":"        })"},{"line_number":84,"context_line":"        patch.start()"},{"line_number":85,"context_line":"        self.addCleanup(patch.stop)"}],"source_content_type":"text/x-python","patch_set":53,"id":"1abeadc6_b617dda2","line":82,"updated":"2014-08-18 18:33:21.000000000","message":"Looks like you also need to mock \u0027midonetclient.neutron\u0027","commit_id":"042740979fbc286f65621dea2041a269196c9810"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"9ed3c719c8d3d82416b45625ec6196884ef897f1","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            \u0027ryu\u0027: mock.MagicMock(),"},{"line_number":80,"context_line":"            \u0027ryu.app\u0027: mock.MagicMock(),"},{"line_number":81,"context_line":"            \u0027heleosapi\u0027: mock.MagicMock(),"},{"line_number":82,"context_line":"            \u0027midonetclient\u0027: mock.MagicMock(),"},{"line_number":83,"context_line":"        })"},{"line_number":84,"context_line":"        patch.start()"},{"line_number":85,"context_line":"        self.addCleanup(patch.stop)"}],"source_content_type":"text/x-python","patch_set":53,"id":"1abeadc6_3e4aadac","line":82,"in_reply_to":"1abeadc6_b617dda2","updated":"2014-08-19 07:32:43.000000000","message":"Yes, I also see this. Thanks.","commit_id":"042740979fbc286f65621dea2041a269196c9810"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"1fb3ef88d2c2356d615fa0bcd435749896f5fef3","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self.alembic_config \u003d migration.get_alembic_config()"},{"line_number":94,"context_line":"        self.alembic_config.neutron_config \u003d cfg.CONF"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _compare_server_default(self, ctxt, ins_col, meta_col, insp_def,"},{"line_number":97,"context_line":"                                meta_def, rendered_meta_def):"},{"line_number":98,"context_line":"        \"\"\"Compare default values between model and db table."},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":53,"id":"1abeadc6_d48d3133","line":96,"updated":"2014-08-18 18:33:21.000000000","message":"I see this is mostly a copy of the method from class ModelsMigrationsSync() in oslo.db. Can you not derive from that class?","commit_id":"042740979fbc286f65621dea2041a269196c9810"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"9ed3c719c8d3d82416b45625ec6196884ef897f1","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self.alembic_config \u003d migration.get_alembic_config()"},{"line_number":94,"context_line":"        self.alembic_config.neutron_config \u003d cfg.CONF"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _compare_server_default(self, ctxt, ins_col, meta_col, insp_def,"},{"line_number":97,"context_line":"                                meta_def, rendered_meta_def):"},{"line_number":98,"context_line":"        \"\"\"Compare default values between model and db table."},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":53,"id":"1abeadc6_5ebda967","line":96,"in_reply_to":"1abeadc6_d48d3133","updated":"2014-08-19 07:32:43.000000000","message":"I set WIP status on this change because after rebase Jenkins fails. With this errors http://logs.openstack.org/20/76520/52/check/gate-neutron-python27/d105d9b/testr_results.html.gz so I create this test change request to see what is enough to do to fix the main problem. Now I\u0027m going to to push this changes of compare_server_default to oslo.db.","commit_id":"042740979fbc286f65621dea2041a269196c9810"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"1fb3ef88d2c2356d615fa0bcd435749896f5fef3","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                          \u0027 for running of this test: %s\u0027 % e)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        # drop all tables after a test run"},{"line_number":158,"context_line":"        self.addCleanup(self._cleanup)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        # run migration scripts"},{"line_number":161,"context_line":"        self.db_sync(self.get_engine())"}],"source_content_type":"text/x-python","patch_set":53,"id":"1abeadc6_b67efde2","line":158,"updated":"2014-08-18 18:33:21.000000000","message":"What/where is self._cleanup? I think if you derived from class ModelsMigrationsSync() from oslo.db then you would get the self._cleanup() you intend.","commit_id":"042740979fbc286f65621dea2041a269196c9810"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"9ed3c719c8d3d82416b45625ec6196884ef897f1","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                          \u0027 for running of this test: %s\u0027 % e)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        # drop all tables after a test run"},{"line_number":158,"context_line":"        self.addCleanup(self._cleanup)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        # run migration scripts"},{"line_number":161,"context_line":"        self.db_sync(self.get_engine())"}],"source_content_type":"text/x-python","patch_set":53,"id":"1abeadc6_be879dd6","line":158,"in_reply_to":"1abeadc6_b67efde2","updated":"2014-08-19 07:32:43.000000000","message":"This is ok. https://github.com/openstack/oslo.db/blob/master/oslo/db/sqlalchemy/test_migrations.py#L399","commit_id":"042740979fbc286f65621dea2041a269196c9810"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"dd250c82bf2d71b312406b67ff7697298a2444b9","unresolved":false,"context_lines":[{"line_number":37,"context_line":"# identified by \u0027opensatck_citest\u0027;"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"import logging"},{"line_number":40,"context_line":"import mock"},{"line_number":41,"context_line":"import pprint"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"import alembic"}],"source_content_type":"text/x-python","patch_set":59,"id":"1abeadc6_b50265b2","line":40,"updated":"2014-08-26 09:04:15.000000000","message":"nit: mock is not part of stdlib in python 2\n http://docs.openstack.org/developer/hacking/#import-order-template","commit_id":"f93f3c06739f93f10be8a9ef6fb1d2a389841542"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"10ed33eaa203bc421579d6c3bd7c578162df3444","unresolved":false,"context_lines":[{"line_number":37,"context_line":"# identified by \u0027opensatck_citest\u0027;"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"import logging"},{"line_number":40,"context_line":"import mock"},{"line_number":41,"context_line":"import pprint"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"import alembic"}],"source_content_type":"text/x-python","patch_set":59,"id":"1abeadc6_cbff42a9","line":40,"in_reply_to":"1abeadc6_b50265b2","updated":"2014-08-26 09:47:22.000000000","message":"done","commit_id":"f93f3c06739f93f10be8a9ef6fb1d2a389841542"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"dd250c82bf2d71b312406b67ff7697298a2444b9","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        noninnodb \u003d [table for table in tables if"},{"line_number":213,"context_line":"                     insp.get_table_options(table)[\u0027mysql_engine\u0027] !\u003d \u0027InnoDB\u0027"},{"line_number":214,"context_line":"                     and table !\u003d \u0027alembic_version\u0027]"},{"line_number":215,"context_line":"        self.assertEqual(len(noninnodb), 0, \"%s non InnoDB tables created\" %"},{"line_number":216,"context_line":"                                            noninnodb)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def check_foreign_keys(self, metadata, bind):"}],"source_content_type":"text/x-python","patch_set":59,"id":"1abeadc6_75f7ed8c","line":215,"updated":"2014-08-26 09:04:15.000000000","message":"Put expected, observed as in \n assertEqual(self, expected, observed, message\u003d\u0027\u0027)\n    \"\"\"Assert that \u0027expected\u0027 is equal to \u0027observed\u0027.","commit_id":"f93f3c06739f93f10be8a9ef6fb1d2a389841542"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"10ed33eaa203bc421579d6c3bd7c578162df3444","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        noninnodb \u003d [table for table in tables if"},{"line_number":213,"context_line":"                     insp.get_table_options(table)[\u0027mysql_engine\u0027] !\u003d \u0027InnoDB\u0027"},{"line_number":214,"context_line":"                     and table !\u003d \u0027alembic_version\u0027]"},{"line_number":215,"context_line":"        self.assertEqual(len(noninnodb), 0, \"%s non InnoDB tables created\" %"},{"line_number":216,"context_line":"                                            noninnodb)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def check_foreign_keys(self, metadata, bind):"}],"source_content_type":"text/x-python","patch_set":59,"id":"1abeadc6_eb2b1e31","line":215,"in_reply_to":"1abeadc6_75f7ed8c","updated":"2014-08-26 09:47:22.000000000","message":"done","commit_id":"f93f3c06739f93f10be8a9ef6fb1d2a389841542"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"8a3c219fdeedfd7843d362008cbf1acc24879229","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                \u0027LinuxBridgePluginV2\u0027,"},{"line_number":95,"context_line":"                \u0027neutron.plugins.cisco.network_plugin.PluginV2\u0027,"},{"line_number":96,"context_line":"                \u0027neutron.plugins.bigswitch.plugin.NeutronRestProxyV2\u0027"},{"line_number":97,"context_line":"                ]"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"class ModelsMigrationsSyncMixin(object):"}],"source_content_type":"text/x-python","patch_set":60,"id":"1abeadc6_ac5a0028","line":97,"updated":"2014-08-26 23:53:07.000000000","message":"Plugins can be discovered as follows:\n\n  import pkg_resources\n\n  def _discover_plugins(plugin_type):\n      return [\n          \u0027%s.%s\u0027 % (entrypoint.module_name, entrypoint.attrs[0])\n          for entrypoint in\n          pkg_resources.iter_entry_points(plugin_type)\n      ]\n\n  core_plugins \u003d _discover_plugins(\u0027neutron.core_plugins\u0027)\n  service_plugins \u003d _discover_plugins(\u0027neutron.service_plugins\u0027)\n\n\nBut note there is an incorrect entrypoint in setup.cfg that you need to fix:\n\n  -    oneconvergence \u003d neutron.plugins.oneconvergence.plugin.OneConvergencePluginV2 \n  +    oneconvergence \u003d neutron.plugins.oneconvergence.plugin:OneConvergencePluginV2","commit_id":"e844f8a60259e5a53d6c929d3653970c54809a7c"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"8a3c219fdeedfd7843d362008cbf1acc24879229","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        return ((fk.parent.name,), fk.column.table.name, (fk.column.name,))"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"def load_tests(loader, tests, pattern):"},{"line_number":287,"context_line":"    suite \u003d unittest.TestSuite()"},{"line_number":288,"context_line":"    for plugin in CORE_PLUGINS:"},{"line_number":289,"context_line":"        plugin_name \u003d plugin.split(\u0027.\u0027)[-1]"}],"source_content_type":"text/x-python","patch_set":60,"id":"1abeadc6_cf7bae27","line":286,"updated":"2014-08-26 23:53:07.000000000","message":"Thanks for implementing this. It works nicely. And together with the plugin discovery we will have automatic testing of new plugins that get added in the future.","commit_id":"e844f8a60259e5a53d6c929d3653970c54809a7c"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"b9ab65e5e437e1488ceb6b01a09fb5c5ace493a7","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        return ((fk.parent.name,), fk.column.table.name, (fk.column.name,))"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"def load_tests(loader, tests, pattern):"},{"line_number":287,"context_line":"    suite \u003d unittest.TestSuite()"},{"line_number":288,"context_line":"    for plugin in CORE_PLUGINS:"},{"line_number":289,"context_line":"        plugin_name \u003d plugin.split(\u0027.\u0027)[-1]"}],"source_content_type":"text/x-python","patch_set":60,"id":"1abeadc6_fe053e7a","line":286,"in_reply_to":"1abeadc6_30954340","updated":"2014-08-28 08:32:17.000000000","message":"To be honest I have the same questions. I remember when I try to use just loop for different plugins I get not exactly the same errors, but about the same problem. I think that this affects only postgesql because it is more sensitive.","commit_id":"e844f8a60259e5a53d6c929d3653970c54809a7c"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"94b601a7c4118d4c0e12024cfc52af06c92c0007","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        return ((fk.parent.name,), fk.column.table.name, (fk.column.name,))"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"def load_tests(loader, tests, pattern):"},{"line_number":287,"context_line":"    suite \u003d unittest.TestSuite()"},{"line_number":288,"context_line":"    for plugin in CORE_PLUGINS:"},{"line_number":289,"context_line":"        plugin_name \u003d plugin.split(\u0027.\u0027)[-1]"}],"source_content_type":"text/x-python","patch_set":60,"id":"1abeadc6_d977ef00","line":286,"in_reply_to":"1abeadc6_cf7bae27","updated":"2014-08-27 06:37:11.000000000","message":"I also like how it look, but I\u0027m afraid this does not work. http://logs.openstack.org/20/76520/60/check/gate-neutron-python27/8b88d66/testr_results.html.gz Seems that tests execute parallel sometimes and this raise db exception :( For all new plugins there is no need to add new classes, by the way, as migrations are unconditional.","commit_id":"e844f8a60259e5a53d6c929d3653970c54809a7c"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"7b31dfea7aef1610b3bec2023575fcfc09cfb38b","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        return ((fk.parent.name,), fk.column.table.name, (fk.column.name,))"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"def load_tests(loader, tests, pattern):"},{"line_number":287,"context_line":"    suite \u003d unittest.TestSuite()"},{"line_number":288,"context_line":"    for plugin in CORE_PLUGINS:"},{"line_number":289,"context_line":"        plugin_name \u003d plugin.split(\u0027.\u0027)[-1]"}],"source_content_type":"text/x-python","patch_set":60,"id":"1abeadc6_30954340","line":286,"in_reply_to":"1abeadc6_d977ef00","updated":"2014-08-27 14:55:54.000000000","message":"Why would the parallelism be different with this than before? And why does it only affect postgresql tests?","commit_id":"e844f8a60259e5a53d6c929d3653970c54809a7c"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"a8f304312e16d545996fcd1a08cf6b48c25979ff","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":70,"id":"fa98f980_7474e067","line":1,"updated":"2014-09-13 00:33:55.000000000","message":"These tests interact with mysql and postgres which means they belong in the functional test tree.  This will allow them to run as part of the functional tox env (tox -e functional) and skip if their target db server is not installed, and run as part of the dsvm-functional env (tox -e dsvm-functional) and fail if their target db server is not installed.  Currently the dsvm-functional job will ensure that mysql will be installed.  We should be able to figure out how to get postgres installed as well.\n\nHere is an example of how to skip or fail in the functional suite:\n\nhttps://github.com/openstack/neutron/blob/master/neutron/tests/functional/agent/linux/base.py#L28","commit_id":"e12d8d1604655bdb42829ce7608b500ea83d6bdf"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"a8f304312e16d545996fcd1a08cf6b48c25979ff","unresolved":false,"context_lines":[{"line_number":48,"context_line":"}"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class ModelsMigrationsSyncMixin(object):"},{"line_number":52,"context_line":"    \u0027\u0027\u0027Test for checking of equality models state and migrations."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    For the opportunistic testing you need to set up a db named"}],"source_content_type":"text/x-python","patch_set":70,"id":"fa98f980_54dfdc39","line":51,"updated":"2014-09-13 00:33:55.000000000","message":"I think the tests in this module should be parametized with testscenarios [1] rather than by class extension.  The result would be more readable and easier to maintain.  In case the docs for testscenarios aren\u0027t sufficient, there is also an example of usage in my retargetable testing proposal [2]\n\n 1: https://pypi.python.org/pypi/testscenarios/\n 2: https://review.openstack.org/#/c/72585/18/neutron/tests/functional/api/test_v2_plugin.py","commit_id":"e12d8d1604655bdb42829ce7608b500ea83d6bdf"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"f9571f682a900a4aefc92c948d6e9a82023b1caa","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"cfg.CONF.import_opt(\u0027core_plugin\u0027, \u0027neutron.common.config\u0027)"},{"line_number":40,"context_line":"cfg.CONF.import_opt(\u0027service_plugins\u0027, \u0027neutron.common.config\u0027)"},{"line_number":41,"context_line":"cfg.CONF.register_cli_opt(cfg.StrOpt(\u0027mysql_engine\u0027, default\u003d\u0027\u0027), \u0027command\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def _discover_plugins(plugin_type):"}],"source_content_type":"text/x-python","patch_set":79,"id":"da9df570_039f5a51","line":41,"updated":"2014-09-23 14:54:16.000000000","message":"If there\u0027s no place that it can be imported from, why is it necessary for this test?  And why do we need to configure this if the only engine we want to use is innodb?  Hardcoding that value would seem the easier option.","commit_id":"2dccb686fd39e0dfa16c6a0f59e8bb3efaf211bc"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"36f0fe523d61c92e8959c315b7ec1906775777ce","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"cfg.CONF.import_opt(\u0027core_plugin\u0027, \u0027neutron.common.config\u0027)"},{"line_number":40,"context_line":"cfg.CONF.import_opt(\u0027service_plugins\u0027, \u0027neutron.common.config\u0027)"},{"line_number":41,"context_line":"cfg.CONF.register_cli_opt(cfg.StrOpt(\u0027mysql_engine\u0027, default\u003d\u0027\u0027), \u0027command\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def _discover_plugins(plugin_type):"}],"source_content_type":"text/x-python","patch_set":79,"id":"da9df570_3e51d5d8","line":41,"in_reply_to":"da9df570_039f5a51","updated":"2014-09-24 09:52:08.000000000","message":"will remove this","commit_id":"2dccb686fd39e0dfa16c6a0f59e8bb3efaf211bc"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"f9571f682a900a4aefc92c948d6e9a82023b1caa","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                                               \u0027referred_table\u0027,"},{"line_number":239,"context_line":"                                               \u0027referred_columns\u0027])"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def verify_foreign_keys_sync(self, metadata, bind):"},{"line_number":242,"context_line":"        \"\"\"Compare foreign keys between model and db table."},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        Returns a list that contains information about:"}],"source_content_type":"text/x-python","patch_set":79,"id":"da9df570_e395f640","line":241,"updated":"2014-09-23 14:54:16.000000000","message":"The \u0027verify_\u0027 prefix doesn\u0027t make any sense - it implies that something is being validated for correctness.  This function determines the differences between the db and models but does no verification as to the whether the differences are acceptable.  I also don\u0027t know why the \u0027_sync\u0027 suffix is necessary.  All that is being done is a comparison between model and db tables, which doesn\u0027t depend on any particular operation having been performed.","commit_id":"2dccb686fd39e0dfa16c6a0f59e8bb3efaf211bc"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"36f0fe523d61c92e8959c315b7ec1906775777ce","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                                               \u0027referred_table\u0027,"},{"line_number":239,"context_line":"                                               \u0027referred_columns\u0027])"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def verify_foreign_keys_sync(self, metadata, bind):"},{"line_number":242,"context_line":"        \"\"\"Compare foreign keys between model and db table."},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        Returns a list that contains information about:"}],"source_content_type":"text/x-python","patch_set":79,"id":"da9df570_dece0983","line":241,"in_reply_to":"da9df570_e395f640","updated":"2014-09-24 09:52:08.000000000","message":"ok, compare_foreign_keys sounds better?","commit_id":"2dccb686fd39e0dfa16c6a0f59e8bb3efaf211bc"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"f9571f682a900a4aefc92c948d6e9a82023b1caa","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        return True"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"def load_tests(loader, tests, pattern):"},{"line_number":330,"context_line":"    suite \u003d unittest.TestSuite()"},{"line_number":331,"context_line":"    for plugin in CORE_PLUGINS:"},{"line_number":332,"context_line":"        plugin_name \u003d plugin.split(\u0027.\u0027)[-1]"}],"source_content_type":"text/x-python","patch_set":79,"id":"da9df570_439b2272","line":329,"updated":"2014-09-23 14:54:16.000000000","message":"As per my earlier comment, a switch to using the fixtures library is required.  Manually genearting tests via load_tests is not acceptable.","commit_id":"2dccb686fd39e0dfa16c6a0f59e8bb3efaf211bc"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"36f0fe523d61c92e8959c315b7ec1906775777ce","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        return True"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"def load_tests(loader, tests, pattern):"},{"line_number":330,"context_line":"    suite \u003d unittest.TestSuite()"},{"line_number":331,"context_line":"    for plugin in CORE_PLUGINS:"},{"line_number":332,"context_line":"        plugin_name \u003d plugin.split(\u0027.\u0027)[-1]"}],"source_content_type":"text/x-python","patch_set":79,"id":"da9df570_b4d153fd","line":329,"in_reply_to":"da9df570_439b2272","updated":"2014-09-24 09:52:08.000000000","message":"Sorry, I\u0027m not familiar with it. It is used in tempest, so I thought it is ok. Will correct in next patch set.","commit_id":"2dccb686fd39e0dfa16c6a0f59e8bb3efaf211bc"}],"neutron/tests/unit/db/test_sync_migration.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"7fca8ad649ff6e2aa25379f749603ccbddb68d2b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\"\"\""},{"line_number":2,"context_line":"# Copyright 2013 OpenStack Foundation"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":23,"id":"baada198_85163357","line":1,"updated":"2014-07-16 09:49:21.000000000","message":"it seems unusual to include # comments in a \"\"\" comment.","commit_id":"9c385374abf38cfe4ed105ed7d483acc971599fa"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"7a86ed9c1b1650b67a8038a8e167dd243afc2a41","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\"\"\""},{"line_number":2,"context_line":"# Copyright 2013 OpenStack Foundation"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":23,"id":"baada198_d7929a4a","line":1,"in_reply_to":"baada198_85163357","updated":"2014-07-16 10:46:52.000000000","message":"done","commit_id":"9c385374abf38cfe4ed105ed7d483acc971599fa"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"7fca8ad649ff6e2aa25379f749603ccbddb68d2b","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        sa_version \u003d tuple(int(p) for p in sqlalchemy.__version__.split(\u0027.\u0027))"},{"line_number":103,"context_line":"        alembic_version \u003d tuple(int(p) for p in alembic.__version__.split(\u0027.\u0027))"},{"line_number":104,"context_line":"        if not (sa_version \u003e (0, 8, 3) and alembic_version \u003e (0, 6, 2)):"},{"line_number":105,"context_line":"            self.skipTest(\u0027sqlalchemy\u003e\u003d0.8.4 and alembic\u003e\u003d0.6.3 are required\u0027"},{"line_number":106,"context_line":"                          \u0027 for running of this test.\u0027)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        # drop all tables after a test run"}],"source_content_type":"text/x-python","patch_set":23,"id":"baada198_8099c1d2","line":105,"updated":"2014-07-16 09:49:21.000000000","message":"why to use \u003e in code and \u003e\u003d in message?","commit_id":"9c385374abf38cfe4ed105ed7d483acc971599fa"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"7a86ed9c1b1650b67a8038a8e167dd243afc2a41","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        sa_version \u003d tuple(int(p) for p in sqlalchemy.__version__.split(\u0027.\u0027))"},{"line_number":103,"context_line":"        alembic_version \u003d tuple(int(p) for p in alembic.__version__.split(\u0027.\u0027))"},{"line_number":104,"context_line":"        if not (sa_version \u003e (0, 8, 3) and alembic_version \u003e (0, 6, 2)):"},{"line_number":105,"context_line":"            self.skipTest(\u0027sqlalchemy\u003e\u003d0.8.4 and alembic\u003e\u003d0.6.3 are required\u0027"},{"line_number":106,"context_line":"                          \u0027 for running of this test.\u0027)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        # drop all tables after a test run"}],"source_content_type":"text/x-python","patch_set":23,"id":"baada198_579e8a55","line":105,"in_reply_to":"baada198_8099c1d2","updated":"2014-07-16 10:46:52.000000000","message":"done","commit_id":"9c385374abf38cfe4ed105ed7d483acc971599fa"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"7fca8ad649ff6e2aa25379f749603ccbddb68d2b","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                    for modified, _, table, column, _, _, new in element:"},{"line_number":144,"context_line":"                        if ((modified \u003d\u003d \u0027modify_default\u0027"},{"line_number":145,"context_line":"                             and dialect \u003d\u003d \u0027mysql\u0027) or"},{"line_number":146,"context_line":"                            (new and modified \u003d\u003d \u0027modify_nullable\u0027)) and \\"},{"line_number":147,"context_line":"                                column in insp.get_primary_keys(table):"},{"line_number":148,"context_line":"                            return False"},{"line_number":149,"context_line":"                return True"}],"source_content_type":"text/x-python","patch_set":23,"id":"baada198_405329e2","line":146,"range":{"start_line":146,"start_character":73,"end_line":146,"end_character":74},"updated":"2014-07-16 09:49:21.000000000","message":"() is preferred than backslash.\n(H904)\n\nditto for the rest of this module.","commit_id":"9c385374abf38cfe4ed105ed7d483acc971599fa"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"7a86ed9c1b1650b67a8038a8e167dd243afc2a41","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                    for modified, _, table, column, _, _, new in element:"},{"line_number":144,"context_line":"                        if ((modified \u003d\u003d \u0027modify_default\u0027"},{"line_number":145,"context_line":"                             and dialect \u003d\u003d \u0027mysql\u0027) or"},{"line_number":146,"context_line":"                            (new and modified \u003d\u003d \u0027modify_nullable\u0027)) and \\"},{"line_number":147,"context_line":"                                column in insp.get_primary_keys(table):"},{"line_number":148,"context_line":"                            return False"},{"line_number":149,"context_line":"                return True"}],"source_content_type":"text/x-python","patch_set":23,"id":"baada198_f7aebe80","line":146,"in_reply_to":"baada198_405329e2","updated":"2014-07-16 10:46:52.000000000","message":"done","commit_id":"9c385374abf38cfe4ed105ed7d483acc971599fa"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"e5350bd6ab5ed98516ddd7f7ed3144c190c62477","unresolved":false,"context_lines":[{"line_number":21,"context_line":"# with user \u0027openstack_citest\u0027 and password \u0027openstack_citest\u0027 on localhost."},{"line_number":22,"context_line":"# The test will then use that db and u/p combo to run the tests."},{"line_number":23,"context_line":"#"},{"line_number":24,"context_line":"# For postgres on Ubuntu this can be done with the following commands:"},{"line_number":25,"context_line":"#"},{"line_number":26,"context_line":"# sudo -u postgres psql"},{"line_number":27,"context_line":"# postgres\u003d# create user openstack_citest with createdb login password"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_7e1522e4","line":24,"updated":"2014-07-16 13:04:23.000000000","message":"Given the prevalence of mysql usage in OpenStack, perhaps we should also include instructions for testing this with mysql?","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"69f52b043ad7962f2d3102a974d0425d0867a8d9","unresolved":false,"context_lines":[{"line_number":21,"context_line":"# with user \u0027openstack_citest\u0027 and password \u0027openstack_citest\u0027 on localhost."},{"line_number":22,"context_line":"# The test will then use that db and u/p combo to run the tests."},{"line_number":23,"context_line":"#"},{"line_number":24,"context_line":"# For postgres on Ubuntu this can be done with the following commands:"},{"line_number":25,"context_line":"#"},{"line_number":26,"context_line":"# sudo -u postgres psql"},{"line_number":27,"context_line":"# postgres\u003d# create user openstack_citest with createdb login password"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_92a7220b","line":24,"in_reply_to":"baada198_61c2d387","updated":"2014-07-17 08:52:26.000000000","message":"done","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"034f3caaa95f5b4c2fe0b87623fd497adb8b4fad","unresolved":false,"context_lines":[{"line_number":21,"context_line":"# with user \u0027openstack_citest\u0027 and password \u0027openstack_citest\u0027 on localhost."},{"line_number":22,"context_line":"# The test will then use that db and u/p combo to run the tests."},{"line_number":23,"context_line":"#"},{"line_number":24,"context_line":"# For postgres on Ubuntu this can be done with the following commands:"},{"line_number":25,"context_line":"#"},{"line_number":26,"context_line":"# sudo -u postgres psql"},{"line_number":27,"context_line":"# postgres\u003d# create user openstack_citest with createdb login password"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_61c2d387","line":24,"in_reply_to":"baada198_7e1522e4","updated":"2014-07-16 21:54:00.000000000","message":"I agree with Kyle. I spent some time figuring this out and with some help from harlowja on IRC, here is how to set it up for mysql on Ubuntu:\n\n  # $ sudo apt-get install libmysqlclient-dev\n  # $ sudo pip install MySQL-python\n  # $ mysql -u root\n  # mysql\u003e create database openstack_citest;\n  # mysql\u003e create user openstack_citest identified by \u0027openstack_citest\u0027;\n  # mysql\u003e grant all on *.* to openstack_citest;\n  # mysql\u003e \\q\n  # $ mysqladmin flush-privileges","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"034f3caaa95f5b4c2fe0b87623fd497adb8b4fad","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test_models_sync(self):"},{"line_number":103,"context_line":"        try:"},{"line_number":104,"context_line":"            pkg.require(\u0027sqlalchemy\u003e\u003d0.8.4\u0027, \u0027alembic\u003e\u003d0.6.2\u0027)"},{"line_number":105,"context_line":"        except (pkg.VersionConflict, pkg.DistributionNotFound) as e:"},{"line_number":106,"context_line":"            self.skipTest(\u0027sqlalchemy\u003e\u003d0.8.4 and alembic\u003e\u003d0.6.2 are required\u0027"},{"line_number":107,"context_line":"                          \u0027 for running of this test: %s\u0027 % e)"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_e18d032c","line":104,"updated":"2014-07-16 21:54:00.000000000","message":"alembic\u003e\u003d0.6.4","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"69f52b043ad7962f2d3102a974d0425d0867a8d9","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test_models_sync(self):"},{"line_number":103,"context_line":"        try:"},{"line_number":104,"context_line":"            pkg.require(\u0027sqlalchemy\u003e\u003d0.8.4\u0027, \u0027alembic\u003e\u003d0.6.2\u0027)"},{"line_number":105,"context_line":"        except (pkg.VersionConflict, pkg.DistributionNotFound) as e:"},{"line_number":106,"context_line":"            self.skipTest(\u0027sqlalchemy\u003e\u003d0.8.4 and alembic\u003e\u003d0.6.2 are required\u0027"},{"line_number":107,"context_line":"                          \u0027 for running of this test: %s\u0027 % e)"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_b2ad06ed","line":104,"in_reply_to":"baada198_e18d032c","updated":"2014-07-17 08:52:26.000000000","message":"done","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"034f3caaa95f5b4c2fe0b87623fd497adb8b4fad","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        try:"},{"line_number":104,"context_line":"            pkg.require(\u0027sqlalchemy\u003e\u003d0.8.4\u0027, \u0027alembic\u003e\u003d0.6.2\u0027)"},{"line_number":105,"context_line":"        except (pkg.VersionConflict, pkg.DistributionNotFound) as e:"},{"line_number":106,"context_line":"            self.skipTest(\u0027sqlalchemy\u003e\u003d0.8.4 and alembic\u003e\u003d0.6.2 are required\u0027"},{"line_number":107,"context_line":"                          \u0027 for running of this test: %s\u0027 % e)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        # drop all tables after a test run"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_21affb7e","line":106,"updated":"2014-07-16 21:54:00.000000000","message":"ditto","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"034f3caaa95f5b4c2fe0b87623fd497adb8b4fad","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"class _TestModelsMigrationsSyncVmwarePlugin("},{"line_number":257,"context_line":"        ModelsMigrationsSyncMixin, test_migrations.ModelsMigrationsSync):"},{"line_number":258,"context_line":"    core_plugin \u003d \u0027neutron.plugins.nicira.NeutronPlugin.NvpPluginV2\u0027"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"class TestModelsMigrationsSyncVmwarePluginMysql("}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_57c2ed86","line":258,"updated":"2014-07-16 21:54:00.000000000","message":"This no longer exists. It has been renamed:\n\n  core_plugin \u003d \u0027neutron.plugins.vmware.plugin.NsxPlugin\u0027","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"69f52b043ad7962f2d3102a974d0425d0867a8d9","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"class _TestModelsMigrationsSyncVmwarePlugin("},{"line_number":257,"context_line":"        ModelsMigrationsSyncMixin, test_migrations.ModelsMigrationsSync):"},{"line_number":258,"context_line":"    core_plugin \u003d \u0027neutron.plugins.nicira.NeutronPlugin.NvpPluginV2\u0027"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"class TestModelsMigrationsSyncVmwarePluginMysql("}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_3281f64d","line":258,"in_reply_to":"baada198_57c2ed86","updated":"2014-07-17 08:52:26.000000000","message":"done","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"034f3caaa95f5b4c2fe0b87623fd497adb8b4fad","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"class _TestModelsMigrationsSyncRyuPlugin("},{"line_number":310,"context_line":"        ModelsMigrationsSyncMixin, test_migrations.ModelsMigrationsSync):"},{"line_number":311,"context_line":"    core_plugin \u003d \u0027neutron.plugins.ryu.ryu_neutron_plugin.RyuNeutronPluginV2\u0027"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"class TestModelsMigrationsSyncRyuPluginMysql("}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_b7ec29f5","line":311,"updated":"2014-07-16 21:54:00.000000000","message":"This test does not run for me. It complains: \"No module named ryu.app\". I think you need to mock this import for the test.","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"69f52b043ad7962f2d3102a974d0425d0867a8d9","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"class _TestModelsMigrationsSyncRyuPlugin("},{"line_number":310,"context_line":"        ModelsMigrationsSyncMixin, test_migrations.ModelsMigrationsSync):"},{"line_number":311,"context_line":"    core_plugin \u003d \u0027neutron.plugins.ryu.ryu_neutron_plugin.RyuNeutronPluginV2\u0027"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"class TestModelsMigrationsSyncRyuPluginMysql("}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_727b6e7b","line":311,"in_reply_to":"baada198_b7ec29f5","updated":"2014-07-17 08:52:26.000000000","message":"done","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"034f3caaa95f5b4c2fe0b87623fd497adb8b4fad","unresolved":false,"context_lines":[{"line_number":355,"context_line":""},{"line_number":356,"context_line":"class _TestModelsMigrationsSyncMidonetPlugin("},{"line_number":357,"context_line":"        ModelsMigrationsSyncMixin, test_migrations.ModelsMigrationsSync):"},{"line_number":358,"context_line":"    core_plugin \u003d \u0027neutron.plugins.midonet.plugin.MidonetPluginV2\u0027"},{"line_number":359,"context_line":"    models_modules \u003d []"},{"line_number":360,"context_line":"    tables \u003d []"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_f7a4e1ba","line":358,"updated":"2014-07-16 21:54:00.000000000","message":"Test Fails to run: \"No module named midonetclient\"","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"69f52b043ad7962f2d3102a974d0425d0867a8d9","unresolved":false,"context_lines":[{"line_number":355,"context_line":""},{"line_number":356,"context_line":"class _TestModelsMigrationsSyncMidonetPlugin("},{"line_number":357,"context_line":"        ModelsMigrationsSyncMixin, test_migrations.ModelsMigrationsSync):"},{"line_number":358,"context_line":"    core_plugin \u003d \u0027neutron.plugins.midonet.plugin.MidonetPluginV2\u0027"},{"line_number":359,"context_line":"    models_modules \u003d []"},{"line_number":360,"context_line":"    tables \u003d []"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_d28fda74","line":358,"in_reply_to":"baada198_f7a4e1ba","updated":"2014-07-17 08:52:26.000000000","message":"done","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"034f3caaa95f5b4c2fe0b87623fd497adb8b4fad","unresolved":false,"context_lines":[{"line_number":357,"context_line":"        ModelsMigrationsSyncMixin, test_migrations.ModelsMigrationsSync):"},{"line_number":358,"context_line":"    core_plugin \u003d \u0027neutron.plugins.midonet.plugin.MidonetPluginV2\u0027"},{"line_number":359,"context_line":"    models_modules \u003d []"},{"line_number":360,"context_line":"    tables \u003d []"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"class TestModelsMigrationsSyncMidonetPluginMysql("}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_979d6569","line":360,"updated":"2014-07-16 21:54:00.000000000","message":"Are the above two lines needed?","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"69f52b043ad7962f2d3102a974d0425d0867a8d9","unresolved":false,"context_lines":[{"line_number":357,"context_line":"        ModelsMigrationsSyncMixin, test_migrations.ModelsMigrationsSync):"},{"line_number":358,"context_line":"    core_plugin \u003d \u0027neutron.plugins.midonet.plugin.MidonetPluginV2\u0027"},{"line_number":359,"context_line":"    models_modules \u003d []"},{"line_number":360,"context_line":"    tables \u003d []"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"class TestModelsMigrationsSyncMidonetPluginMysql("}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_92cc82bd","line":360,"in_reply_to":"baada198_979d6569","updated":"2014-07-17 08:52:26.000000000","message":"Remove this","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"034f3caaa95f5b4c2fe0b87623fd497adb8b4fad","unresolved":false,"context_lines":[{"line_number":375,"context_line":"class _TestModelsMigrationsSyncBrocadePlugin("},{"line_number":376,"context_line":"        ModelsMigrationsSyncMixin, test_migrations.ModelsMigrationsSync):"},{"line_number":377,"context_line":"    service_plugins \u003d [\u0027lbaas\u0027, \u0027fwaas\u0027, \u0027metering\u0027]"},{"line_number":378,"context_line":"    core_plugin \u003d \u0027neutron.plugins.brocade.nos.nosdriver.NOSdriver\u0027"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"class TestModelsMigrationsSyncBrocadePluginMysql("}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_9c32ecf0","line":378,"updated":"2014-07-16 21:54:00.000000000","message":"This should be \u0027neutron.plugins.brocade.NeutronPlugin.BrocadePluginV2\u0027","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"69f52b043ad7962f2d3102a974d0425d0867a8d9","unresolved":false,"context_lines":[{"line_number":375,"context_line":"class _TestModelsMigrationsSyncBrocadePlugin("},{"line_number":376,"context_line":"        ModelsMigrationsSyncMixin, test_migrations.ModelsMigrationsSync):"},{"line_number":377,"context_line":"    service_plugins \u003d [\u0027lbaas\u0027, \u0027fwaas\u0027, \u0027metering\u0027]"},{"line_number":378,"context_line":"    core_plugin \u003d \u0027neutron.plugins.brocade.nos.nosdriver.NOSdriver\u0027"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"class TestModelsMigrationsSyncBrocadePluginMysql("}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_b2c26684","line":378,"in_reply_to":"baada198_9c32ecf0","updated":"2014-07-17 08:52:26.000000000","message":"done","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"034f3caaa95f5b4c2fe0b87623fd497adb8b4fad","unresolved":false,"context_lines":[{"line_number":393,"context_line":"class _TestModelsMigrationsSyncEmbranePlugin("},{"line_number":394,"context_line":"        ModelsMigrationsSyncMixin, test_migrations.ModelsMigrationsSync):"},{"line_number":395,"context_line":"    core_plugin \u003d (\u0027neutron.plugins.embrane.plugins.embrane_ovs_plugin\u0027"},{"line_number":396,"context_line":"                   \u0027.EmbraneOvsPlugin\u0027)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"class TestModelsMigrationsSyncEmbranePluginMysql("}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_7777f13b","line":396,"updated":"2014-07-16 21:54:00.000000000","message":"Test fails to run: \"No module named heleosapi\"","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"69f52b043ad7962f2d3102a974d0425d0867a8d9","unresolved":false,"context_lines":[{"line_number":393,"context_line":"class _TestModelsMigrationsSyncEmbranePlugin("},{"line_number":394,"context_line":"        ModelsMigrationsSyncMixin, test_migrations.ModelsMigrationsSync):"},{"line_number":395,"context_line":"    core_plugin \u003d (\u0027neutron.plugins.embrane.plugins.embrane_ovs_plugin\u0027"},{"line_number":396,"context_line":"                   \u0027.EmbraneOvsPlugin\u0027)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"class TestModelsMigrationsSyncEmbranePluginMysql("}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_f2bcde08","line":396,"in_reply_to":"baada198_7777f13b","updated":"2014-07-17 08:52:26.000000000","message":"done","commit_id":"244c3f281c1cc150913fcc138daf2bc73ee7cb28"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"8cd9a7bcd2aa1f8243f65c3bac6474ff0ab8e918","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        sys.modules[\u0027ryu\u0027] \u003d mock.MagicMock()"},{"line_number":84,"context_line":"        sys.modules[\u0027ryu.app\u0027] \u003d mock.MagicMock()"},{"line_number":85,"context_line":"        sys.modules[\u0027heleosapi\u0027] \u003d mock.MagicMock()"},{"line_number":86,"context_line":"        sys.modules[\u0027midonetclient\u0027] \u003d mock.MagicMock()"},{"line_number":87,"context_line":"        super(ModelsMigrationsSyncMixin, self).setUp()"},{"line_number":88,"context_line":"        self.cfg \u003d self.useFixture(config.Config())"},{"line_number":89,"context_line":"        self.cfg.config(service_plugins\u003dself.service_plugins_conf,"}],"source_content_type":"text/x-python","patch_set":26,"id":"baada198_217362b5","line":86,"updated":"2014-07-17 10:28:24.000000000","message":"who restores these?\nplease use mock.patch.dict.","commit_id":"b8ad7dbbdb706953e98e3b1c41e99a117e365b71"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"487a6fa9470be901b5fd9d1442d660c721cad263","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"# class _TestModelsMigrationsSyncBigswitch(ModelsMigrationsSyncMixin,"},{"line_number":185,"context_line":"#                                          test_migrations.ModelsMigrationsSync):"},{"line_number":186,"context_line":"#     core_plugin \u003d \u0027neutron.plugins.bigswitch.plugin.NeutronRestProxyV2\u0027"},{"line_number":187,"context_line":"#"},{"line_number":188,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":31,"id":"baada198_8beee189","line":185,"updated":"2014-07-18 08:41:25.000000000","message":"why are these commented out?","commit_id":"090caa4f7d6588de00b039e2f0f42fe6fefe249e"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"792987ab2defbcf9407ff0cb4c736706637094e8","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"# class _TestModelsMigrationsSyncBigswitch(ModelsMigrationsSyncMixin,"},{"line_number":185,"context_line":"#                                          test_migrations.ModelsMigrationsSync):"},{"line_number":186,"context_line":"#     core_plugin \u003d \u0027neutron.plugins.bigswitch.plugin.NeutronRestProxyV2\u0027"},{"line_number":187,"context_line":"#"},{"line_number":188,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":31,"id":"baada198_cb69b9f9","line":185,"in_reply_to":"baada198_8beee189","updated":"2014-07-18 08:43:42.000000000","message":"This change is in WIP status. It is checking.","commit_id":"090caa4f7d6588de00b039e2f0f42fe6fefe249e"}],"requirements.txt":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"7fafe2733b1dddbb28746cbab81c61dc774e8587","unresolved":false,"context_lines":[{"line_number":20,"context_line":"SQLAlchemy\u003e\u003d0.8.4,!\u003d0.9.5,\u003c\u003d0.9.99"},{"line_number":21,"context_line":"WebOb\u003e\u003d1.2.3"},{"line_number":22,"context_line":"python-keystoneclient\u003e\u003d0.9.0"},{"line_number":23,"context_line":"alembic\u003e\u003d0.6.4"},{"line_number":24,"context_line":"six\u003e\u003d1.7.0"},{"line_number":25,"context_line":"stevedore\u003e\u003d0.14"},{"line_number":26,"context_line":"oslo.config\u003e\u003d1.2.1"}],"source_content_type":"text/plain","patch_set":30,"id":"baada198_0b602d34","line":23,"updated":"2014-07-17 16:08:33.000000000","message":"alembic version bump should wait for global-requirements merge.\ncan you workflow -1 until it happens?","commit_id":"da3b61c4fb925c813daff2f95190cbf4b0a34da5"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"1a3b40165c5acb3438b67fd3a9258fbb5f58dcd8","unresolved":false,"context_lines":[{"line_number":20,"context_line":"SQLAlchemy\u003e\u003d0.8.4,!\u003d0.9.5,\u003c\u003d0.9.99"},{"line_number":21,"context_line":"WebOb\u003e\u003d1.2.3"},{"line_number":22,"context_line":"python-keystoneclient\u003e\u003d0.9.0"},{"line_number":23,"context_line":"alembic\u003e\u003d0.6.4"},{"line_number":24,"context_line":"six\u003e\u003d1.7.0"},{"line_number":25,"context_line":"stevedore\u003e\u003d0.14"},{"line_number":26,"context_line":"oslo.config\u003e\u003d1.2.1"}],"source_content_type":"text/plain","patch_set":30,"id":"baada198_5609e82a","line":23,"in_reply_to":"baada198_0b602d34","updated":"2014-07-17 16:15:40.000000000","message":"There will be -1 from Jenkins on this change, so it won\u0027t be merged anyway until updating of global requirements appear.","commit_id":"da3b61c4fb925c813daff2f95190cbf4b0a34da5"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"7852d77b96245e5422f09e022d137d8f6a16328a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"SQLAlchemy\u003e\u003d0.8.4,!\u003d0.9.5,\u003c\u003d0.9.99"},{"line_number":21,"context_line":"WebOb\u003e\u003d1.2.3"},{"line_number":22,"context_line":"python-keystoneclient\u003e\u003d0.9.0"},{"line_number":23,"context_line":"alembic\u003e\u003d0.6.4"},{"line_number":24,"context_line":"six\u003e\u003d1.7.0"},{"line_number":25,"context_line":"stevedore\u003e\u003d0.14"},{"line_number":26,"context_line":"oslo.config\u003e\u003d1.2.1"}],"source_content_type":"text/plain","patch_set":30,"id":"baada198_b11a4e16","line":23,"in_reply_to":"baada198_1674d09a","updated":"2014-07-17 16:44:38.000000000","message":"about -1 from jenkins, it makes sense.\n\ni\u0027m not sure what you mean about the gate.","commit_id":"da3b61c4fb925c813daff2f95190cbf4b0a34da5"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"5724478266966e23b33a0503115c775d272ee3e5","unresolved":false,"context_lines":[{"line_number":20,"context_line":"SQLAlchemy\u003e\u003d0.8.4,!\u003d0.9.5,\u003c\u003d0.9.99"},{"line_number":21,"context_line":"WebOb\u003e\u003d1.2.3"},{"line_number":22,"context_line":"python-keystoneclient\u003e\u003d0.9.0"},{"line_number":23,"context_line":"alembic\u003e\u003d0.6.4"},{"line_number":24,"context_line":"six\u003e\u003d1.7.0"},{"line_number":25,"context_line":"stevedore\u003e\u003d0.14"},{"line_number":26,"context_line":"oslo.config\u003e\u003d1.2.1"}],"source_content_type":"text/plain","patch_set":30,"id":"baada198_1674d09a","line":23,"in_reply_to":"baada198_5609e82a","updated":"2014-07-17 16:16:42.000000000","message":"This needs to check that gate do not skip this tests.","commit_id":"da3b61c4fb925c813daff2f95190cbf4b0a34da5"}],"setup.cfg":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3f5c9599090e56bcaef342ed9aa094741622d578","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    nec \u003d neutron.plugins.nec.nec_plugin:NECPluginV2"},{"line_number":141,"context_line":"    nuage \u003d neutron.plugins.nuage.plugin:NuagePlugin"},{"line_number":142,"context_line":"    metaplugin \u003d neutron.plugins.metaplugin.meta_neutron_plugin:MetaPluginV2"},{"line_number":143,"context_line":"    oneconvergence \u003d neutron.plugins.oneconvergence.plugin:OneConvergencePluginV2"},{"line_number":144,"context_line":"    openvswitch \u003d neutron.plugins.openvswitch.ovs_neutron_plugin:OVSNeutronPluginV2"},{"line_number":145,"context_line":"    plumgrid \u003d neutron.plugins.plumgrid.plumgrid_plugin.plumgrid_plugin:NeutronPluginPLUMgridV2"},{"line_number":146,"context_line":"    ryu \u003d neutron.plugins.ryu.ryu_neutron_plugin:RyuNeutronPluginV2"}],"source_content_type":"text/x-ttcn-cfg","patch_set":78,"id":"da9df570_aa883a23","line":143,"updated":"2014-09-22 21:18:14.000000000","message":"This fix is unrelated - please submit separately.","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"fe7eb52cd885e7e74831cf126922c1dde06bdb33","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    nec \u003d neutron.plugins.nec.nec_plugin:NECPluginV2"},{"line_number":141,"context_line":"    nuage \u003d neutron.plugins.nuage.plugin:NuagePlugin"},{"line_number":142,"context_line":"    metaplugin \u003d neutron.plugins.metaplugin.meta_neutron_plugin:MetaPluginV2"},{"line_number":143,"context_line":"    oneconvergence \u003d neutron.plugins.oneconvergence.plugin:OneConvergencePluginV2"},{"line_number":144,"context_line":"    openvswitch \u003d neutron.plugins.openvswitch.ovs_neutron_plugin:OVSNeutronPluginV2"},{"line_number":145,"context_line":"    plumgrid \u003d neutron.plugins.plumgrid.plumgrid_plugin.plumgrid_plugin:NeutronPluginPLUMgridV2"},{"line_number":146,"context_line":"    ryu \u003d neutron.plugins.ryu.ryu_neutron_plugin:RyuNeutronPluginV2"}],"source_content_type":"text/x-ttcn-cfg","patch_set":78,"id":"da9df570_6772ff7d","line":143,"in_reply_to":"da9df570_aa883a23","updated":"2014-09-23 07:12:33.000000000","message":"will do","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"}],"test-requirements.txt":[{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"dd250c82bf2d71b312406b67ff7697298a2444b9","unresolved":false,"context_lines":[{"line_number":12,"context_line":"testrepository\u003e\u003d0.0.18"},{"line_number":13,"context_line":"testtools\u003e\u003d0.9.34"},{"line_number":14,"context_line":"WebTest\u003e\u003d2.0"},{"line_number":15,"context_line":"oslotest"},{"line_number":16,"context_line":"psycopg2"},{"line_number":17,"context_line":"MySQL-python"},{"line_number":18,"context_line":""}],"source_content_type":"text/plain","patch_set":59,"id":"1abeadc6_555cb125","line":15,"updated":"2014-08-26 09:04:15.000000000","message":"It seems to conflict requirement from global-requirements.txt\n oslotest\u003e\u003d1.1.0.0a1\nbut I don\u0027t know how that works because it started failing when .0a1 was added in global req.","commit_id":"f93f3c06739f93f10be8a9ef6fb1d2a389841542"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"10ed33eaa203bc421579d6c3bd7c578162df3444","unresolved":false,"context_lines":[{"line_number":12,"context_line":"testrepository\u003e\u003d0.0.18"},{"line_number":13,"context_line":"testtools\u003e\u003d0.9.34"},{"line_number":14,"context_line":"WebTest\u003e\u003d2.0"},{"line_number":15,"context_line":"oslotest"},{"line_number":16,"context_line":"psycopg2"},{"line_number":17,"context_line":"MySQL-python"},{"line_number":18,"context_line":""}],"source_content_type":"text/plain","patch_set":59,"id":"1abeadc6_8b1c6a15","line":15,"in_reply_to":"1abeadc6_555cb125","updated":"2014-08-26 09:47:22.000000000","message":"Thanks, I didn\u0027t notice this update of global-requirements.","commit_id":"f93f3c06739f93f10be8a9ef6fb1d2a389841542"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"3f5c9599090e56bcaef342ed9aa094741622d578","unresolved":false,"context_lines":[{"line_number":16,"context_line":"testrepository\u003e\u003d0.0.18"},{"line_number":17,"context_line":"testtools\u003e\u003d0.9.34"},{"line_number":18,"context_line":"WebTest\u003e\u003d2.0"},{"line_number":19,"context_line":"oslotest\u003e\u003d1.1.0"},{"line_number":20,"context_line":"psycopg2"},{"line_number":21,"context_line":"MySQL-python"}],"source_content_type":"text/plain","patch_set":78,"id":"da9df570_ea35e246","line":19,"updated":"2014-09-22 21:18:14.000000000","message":"This doesn\u0027t appear to be used - please remove.","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"6268a35998967e4ac3a72b241306a80b2aa67125","unresolved":false,"context_lines":[{"line_number":16,"context_line":"testrepository\u003e\u003d0.0.18"},{"line_number":17,"context_line":"testtools\u003e\u003d0.9.34"},{"line_number":18,"context_line":"WebTest\u003e\u003d2.0"},{"line_number":19,"context_line":"oslotest\u003e\u003d1.1.0"},{"line_number":20,"context_line":"psycopg2"},{"line_number":21,"context_line":"MySQL-python"}],"source_content_type":"text/plain","patch_set":78,"id":"da9df570_1df424f1","line":19,"in_reply_to":"da9df570_c769eb8c","updated":"2014-09-23 08:10:39.000000000","message":"In global requirements it is set to 1.1.0 https://github.com/openstack/requirements/blob/master/global-requirements.txt#L198. Seems that your comment is unrelated.","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"fe7eb52cd885e7e74831cf126922c1dde06bdb33","unresolved":false,"context_lines":[{"line_number":16,"context_line":"testrepository\u003e\u003d0.0.18"},{"line_number":17,"context_line":"testtools\u003e\u003d0.9.34"},{"line_number":18,"context_line":"WebTest\u003e\u003d2.0"},{"line_number":19,"context_line":"oslotest\u003e\u003d1.1.0"},{"line_number":20,"context_line":"psycopg2"},{"line_number":21,"context_line":"MySQL-python"}],"source_content_type":"text/plain","patch_set":78,"id":"da9df570_c769eb8c","line":19,"in_reply_to":"da9df570_ea35e246","updated":"2014-09-23 07:12:33.000000000","message":"will do","commit_id":"10adc66a50a5394d6d7a6c454b242aef312c0e6d"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"f9571f682a900a4aefc92c948d6e9a82023b1caa","unresolved":false,"context_lines":[{"line_number":16,"context_line":"testrepository\u003e\u003d0.0.18"},{"line_number":17,"context_line":"testtools\u003e\u003d0.9.34"},{"line_number":18,"context_line":"WebTest\u003e\u003d2.0"},{"line_number":19,"context_line":"oslotest\u003e\u003d1.1.0"},{"line_number":20,"context_line":"psycopg2"},{"line_number":21,"context_line":"MySQL-python"}],"source_content_type":"text/plain","patch_set":79,"id":"da9df570_43c0822a","line":19,"updated":"2014-09-23 14:54:16.000000000","message":"I\u0027m still not clear on why this is required, given that it doesn\u0027t appear to be used anywhere.","commit_id":"2dccb686fd39e0dfa16c6a0f59e8bb3efaf211bc"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"36f0fe523d61c92e8959c315b7ec1906775777ce","unresolved":false,"context_lines":[{"line_number":16,"context_line":"testrepository\u003e\u003d0.0.18"},{"line_number":17,"context_line":"testtools\u003e\u003d0.9.34"},{"line_number":18,"context_line":"WebTest\u003e\u003d2.0"},{"line_number":19,"context_line":"oslotest\u003e\u003d1.1.0"},{"line_number":20,"context_line":"psycopg2"},{"line_number":21,"context_line":"MySQL-python"}],"source_content_type":"text/plain","patch_set":79,"id":"da9df570_de20c94b","line":19,"in_reply_to":"da9df570_43c0822a","updated":"2014-09-24 09:52:08.000000000","message":"test_base from oslo.db used it.","commit_id":"2dccb686fd39e0dfa16c6a0f59e8bb3efaf211bc"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"d26701cb2b9b7a7dea192a41cbd1bb8e3cebbf8f","unresolved":false,"context_lines":[{"line_number":19,"context_line":"WebTest\u003e\u003d2.0"},{"line_number":20,"context_line":"oslotest\u003e\u003d1.1.0"},{"line_number":21,"context_line":"psycopg2"},{"line_number":22,"context_line":"MySQL-python"}],"source_content_type":"text/plain","patch_set":81,"id":"baa201ad_624a1885","line":22,"updated":"2014-09-29 15:28:58.000000000","message":"I\u0027ve asked whether these additions are ok even if we are in dep freeze","commit_id":"1024545615cf8ce536e7ad7adbdcb7cd44121b62"}]}
