)]}'
{"keystone/common/sql/migrate_repo/versions/052_add_auth_url_to_region.py":[{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"8f5074c0c774a4ff06baccb24e61dc57c32dd66f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    region_table \u003d sql.Table(_REGION_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":34,"context_line":"    # delete regions with an auth url, since they are likely external"},{"line_number":35,"context_line":"    d \u003d region_table.delete(region_table.c.url is not None)"},{"line_number":36,"context_line":"    d.execute()"},{"line_number":37,"context_line":"    region_table.drop_column(\u0027url\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_7cb5a3ce","line":34,"updated":"2014-07-25 16:31:31.000000000","message":"Why do we delete regions with an auth url during downgrade? I know that the older version of the region table did not have the URL column but I\u0027m always worried when we silently delete data.","commit_id":"25c5b5e20497cd574ab9c4501799530974b66517"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"34107c4f4d880fce69470e7cf18ef50144783bb3","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    region_table \u003d sql.Table(_REGION_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":34,"context_line":"    # delete regions with an auth url, since they are likely external"},{"line_number":35,"context_line":"    d \u003d region_table.delete(region_table.c.url is not None)"},{"line_number":36,"context_line":"    d.execute()"},{"line_number":37,"context_line":"    region_table.drop_column(\u0027url\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_3ab3169b","line":34,"updated":"2014-07-26 22:54:31.000000000","message":"me too....I know that once could argue that they might not be useable, but....the data is still gone....","commit_id":"25c5b5e20497cd574ab9c4501799530974b66517"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"9b622ea25eb7d3cc241191dad42dcc391397c42b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    region_table \u003d sql.Table(_REGION_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":34,"context_line":"    # delete regions with an auth url, since they are likely external"},{"line_number":35,"context_line":"    d \u003d region_table.delete(region_table.c.url is not None)"},{"line_number":36,"context_line":"    d.execute()"},{"line_number":37,"context_line":"    region_table.drop_column(\u0027url\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_90e176d2","line":34,"in_reply_to":"baada198_3ca5eb47","updated":"2014-07-25 18:24:33.000000000","message":"I would vote on dropping the column. The issue for me deleting the row is you could end up with dangling references in endpoint.region or am I missing something?","commit_id":"25c5b5e20497cd574ab9c4501799530974b66517"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0ecbc69f16cec7d068a38fc0bf703d361b54314d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    region_table \u003d sql.Table(_REGION_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":34,"context_line":"    # delete regions with an auth url, since they are likely external"},{"line_number":35,"context_line":"    d \u003d region_table.delete(region_table.c.url is not None)"},{"line_number":36,"context_line":"    d.execute()"},{"line_number":37,"context_line":"    region_table.drop_column(\u0027url\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_3ca5eb47","line":34,"in_reply_to":"baada198_7cb5a3ce","updated":"2014-07-25 16:40:50.000000000","message":"hmmm, I can\u0027t remember what my reasoning here was, what do you propose as an alternative? just drop the column?","commit_id":"25c5b5e20497cd574ab9c4501799530974b66517"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"62d423f355596c290a5f6edb6fd0a2574ef5c887","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    region_table \u003d sql.Table(_REGION_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":34,"context_line":"    # delete regions with an auth url, since they are likely external"},{"line_number":35,"context_line":"    d \u003d region_table.delete(region_table.c.url is not None)"},{"line_number":36,"context_line":"    d.execute()"},{"line_number":37,"context_line":"    region_table.drop_column(\u0027url\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_e4266ab9","line":34,"in_reply_to":"baada198_90e176d2","updated":"2014-07-26 02:04:51.000000000","message":"I prefer to dropping the column too.","commit_id":"25c5b5e20497cd574ab9c4501799530974b66517"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"5fac2a02045c042b939fa506774e2493e669e8a9","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    region_table \u003d sql.Table(_REGION_TABLE_NAME, meta, autoload\u003dTrue)"},{"line_number":34,"context_line":"    # delete regions with an auth url, since they are likely external"},{"line_number":35,"context_line":"    d \u003d region_table.delete(region_table.c.url is not None)"},{"line_number":36,"context_line":"    d.execute()"},{"line_number":37,"context_line":"    region_table.drop_column(\u0027url\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_7b798981","line":35,"updated":"2014-07-30 19:48:20.000000000","message":"I don\u0027t think this would have worked anyway. I don\u0027t think \u0027is\u0027 or \u0027is not\u0027 will trigger the magic methods SQLAlchemy uses to build queries. It should be \u0027!\u003d\u0027","commit_id":"25c5b5e20497cd574ab9c4501799530974b66517"}],"keystone/tests/test_backend.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5332d70bf901cd23e8cf29da9f1bef02acb1065a","unresolved":false,"context_lines":[{"line_number":3560,"context_line":"            \u0027id\u0027: region_id,"},{"line_number":3561,"context_line":"            \u0027description\u0027: uuid.uuid4().hex,"},{"line_number":3562,"context_line":"            \u0027parent_region_id\u0027: parent_region_id,"},{"line_number":3563,"context_line":"            \u0027url\u0027: uuid.uuid4().hex"},{"line_number":3564,"context_line":"        }"},{"line_number":3565,"context_line":"        self.catalog_api.create_region("},{"line_number":3566,"context_line":"            new_region.copy())"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_ca49088f","line":3563,"updated":"2014-08-13 13:45:17.000000000","message":"do we ever check that this is returned?  I can\u0027t see where we do - in which case a backend driver that simply set url \u003d None would pass these tests","commit_id":"1718a98de6173e17fcb0ac8b95d3cc85a9ba5fb7"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9824e1981218a076b10573985d9a53a241d04377","unresolved":false,"context_lines":[{"line_number":3560,"context_line":"            \u0027id\u0027: region_id,"},{"line_number":3561,"context_line":"            \u0027description\u0027: uuid.uuid4().hex,"},{"line_number":3562,"context_line":"            \u0027parent_region_id\u0027: parent_region_id,"},{"line_number":3563,"context_line":"            \u0027url\u0027: uuid.uuid4().hex"},{"line_number":3564,"context_line":"        }"},{"line_number":3565,"context_line":"        self.catalog_api.create_region("},{"line_number":3566,"context_line":"            new_region.copy())"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_658aed66","line":3563,"in_reply_to":"baada198_ca49088f","updated":"2014-08-13 13:49:42.000000000","message":"apparently new_region is never checked at all","commit_id":"1718a98de6173e17fcb0ac8b95d3cc85a9ba5fb7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"c028e4dc43aa6e0e368f3beb982d6e0784e6f284","unresolved":false,"context_lines":[{"line_number":3585,"context_line":"        res \u003d self.catalog_api.create_region("},{"line_number":3586,"context_line":"            new_region.copy())"},{"line_number":3587,"context_line":"        expected_region \u003d new_region.copy()"},{"line_number":3588,"context_line":"        self.assertDictEqual(res, expected_region)"},{"line_number":3589,"context_line":""},{"line_number":3590,"context_line":"        # list"},{"line_number":3591,"context_line":"        regions \u003d self.catalog_api.list_regions()"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_dba471a5","line":3588,"updated":"2014-08-13 16:40:02.000000000","message":"I realise that your are just copying the \"style\" from earlier in this method, but is there a reason you can\u0027t just compare res and new_region?","commit_id":"a99d45ba2af4b4f65b5f82e1192bbb3e938c2764"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"6fb0e94b8c48f82585961553a1b614e7a9c51ba1","unresolved":false,"context_lines":[{"line_number":3585,"context_line":"        res \u003d self.catalog_api.create_region("},{"line_number":3586,"context_line":"            new_region.copy())"},{"line_number":3587,"context_line":"        expected_region \u003d new_region.copy()"},{"line_number":3588,"context_line":"        self.assertDictEqual(res, expected_region)"},{"line_number":3589,"context_line":""},{"line_number":3590,"context_line":"        # list"},{"line_number":3591,"context_line":"        regions \u003d self.catalog_api.list_regions()"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_dbf3916b","line":3588,"in_reply_to":"baada198_dba471a5","updated":"2014-08-13 16:46:44.000000000","message":"yeah, pointless copy of new_region, i was too overzealous.","commit_id":"a99d45ba2af4b4f65b5f82e1192bbb3e938c2764"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"5185c67449cb2d6d20a9c20f38f4f879a790c2ee","unresolved":false,"context_lines":[{"line_number":3584,"context_line":"        }"},{"line_number":3585,"context_line":"        res \u003d self.catalog_api.create_region("},{"line_number":3586,"context_line":"            new_region.copy())"},{"line_number":3587,"context_line":"        self.assertDictEqual(res, new_region)"},{"line_number":3588,"context_line":""},{"line_number":3589,"context_line":"        # list"},{"line_number":3590,"context_line":"        regions \u003d self.catalog_api.list_regions()"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_6d456c15","line":3587,"updated":"2014-08-13 17:06:13.000000000","message":"Reverse the order here. Although not strictly necessary since `assertDictEqual` names its params d1 and d2, eventually assertEqual is called with d1 and d2. Someone will eventually file this as a bug.","commit_id":"acae383707d09f3fe9c959e115887fc520885710"}],"keystone/tests/test_v3_catalog.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"34107c4f4d880fce69470e7cf18ef50144783bb3","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            \u0027region_id\u0027: self.region_id})"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def test_create_region_with_url(self):"},{"line_number":244,"context_line":"        \"\"\"Call ``POST /regions`` without description in the request body.\"\"\""},{"line_number":245,"context_line":"        ref \u003d self.new_region_ref()"},{"line_number":246,"context_line":"        ref[\u0027url\u0027] \u003d \u0027http://beta.com:5000/v3\u0027"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_9aab421d","line":244,"updated":"2014-07-26 22:54:31.000000000","message":"copy \u0026 paste on the docstring?","commit_id":"25c5b5e20497cd574ab9c4501799530974b66517"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"fdf1be78f64573e16e8010cd7ba4657f1a2e192e","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            \u0027region_id\u0027: self.region_id})"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def test_create_region_with_url(self):"},{"line_number":244,"context_line":"        \"\"\"Call ``POST /regions`` without description in the request body.\"\"\""},{"line_number":245,"context_line":"        ref \u003d self.new_region_ref()"},{"line_number":246,"context_line":"        ref[\u0027url\u0027] \u003d \u0027http://beta.com:5000/v3\u0027"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_edff2aff","line":244,"in_reply_to":"baada198_9aab421d","updated":"2014-07-26 23:07:51.000000000","message":"for sure, nice catch.","commit_id":"25c5b5e20497cd574ab9c4501799530974b66517"}]}
