)]}'
{"designate/storage/impl_sqlalchemy/migrate_repo/versions/080_unique_ns_record.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"43e86fa5f063567f2d25104e4fe5dff63f027170","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Author: Endre Karlson \u003cendre.karlson@hp.com\u003e"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_d295dc32","line":1,"updated":"2015-11-19 12:43:39.000000000","message":"need to increment the version of this file.","commit_id":"ce982f8330d4d5dd698278c4e82e7b8cde4581cb"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"9ff4e7a00accaab4d2eeb84282afd87aeca2b962","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Author: Endre Karlson \u003cendre.karlson@hp.com\u003e"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_47877fb5","line":1,"in_reply_to":"ba8a016a_d295dc32","updated":"2015-12-04 12:58:46.000000000","message":"Done","commit_id":"ce982f8330d4d5dd698278c4e82e7b8cde4581cb"}],"designate/storage/impl_sqlalchemy/migrate_repo/versions/082_unique_ns_record.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"44c09a4b4c3fcd9b6c0bb1dae5081dcb4514cca9","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    constraint \u003d UniqueConstraint(\u0027pool_id\u0027, \u0027hostname\u0027,"},{"line_number":31,"context_line":"                                  name\u003dCONSTRAINT_NAME,"},{"line_number":32,"context_line":"                                  table\u003dpool_ns_records_table)"},{"line_number":33,"context_line":"    constraint.create()"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_0df81fc2","line":32,"updated":"2015-12-08 16:33:37.000000000","message":"We\u0027ll need to check if this constraint exists before attempting to create it, which allows us to backport this fix to one of the L placeholder migrations.","commit_id":"d3f6119805342b8d650ce4b979e30edf085a4c5c"},{"author":{"_account_id":16962,"name":"Federico Ceratto","email":"federico.ceratto@gmail.com","username":"ceratto"},"change_message_id":"5af58f8ea09c5477eff452c8265ec2038321ec7e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":13,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":"from migrate.changeset.constraint import UniqueConstraint"},{"line_number":17,"context_line":"from sqlalchemy.schema import MetaData, Table"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_147de36d","line":15,"updated":"2015-12-16 14:50:27.000000000","message":"I would add a module docstring under the license:\n\n\"\"\"\nAdd Unique constraint on (\u0027pool_id\u0027, \u0027hostname\u0027) in the pool_ns_records table\nBug #1517389\n\"\"\"","commit_id":"54a92485b366fb46997247e7380ec92347f9ea9b"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"f022b69cb816573c773bfb0168372266006f9b4c","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":13,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":"from migrate.changeset.constraint import UniqueConstraint"},{"line_number":17,"context_line":"from sqlalchemy.schema import MetaData, Table"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_10cbba73","line":15,"updated":"2016-01-04 17:12:58.000000000","message":"That is not a bad idea.","commit_id":"54a92485b366fb46997247e7380ec92347f9ea9b"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"426da81352bfd564bacf28f889954259cc4dbf0b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":13,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":"from migrate.changeset.constraint import UniqueConstraint"},{"line_number":17,"context_line":"from sqlalchemy.schema import MetaData, Table"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_7723eca7","line":15,"in_reply_to":"5a710552_147de36d","updated":"2016-01-05 11:06:10.000000000","message":"Done","commit_id":"54a92485b366fb46997247e7380ec92347f9ea9b"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"f022b69cb816573c773bfb0168372266006f9b4c","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    constraints \u003d [i.name for i in pool_ns_records_table.constraints]"},{"line_number":35,"context_line":"    if CONSTRAINT_NAME in constraints:"},{"line_number":36,"context_line":"        constraint.create()"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_b0c98e7a","line":36,"updated":"2016-01-04 17:12:58.000000000","message":"+1","commit_id":"54a92485b366fb46997247e7380ec92347f9ea9b"},{"author":{"_account_id":16962,"name":"Federico Ceratto","email":"federico.ceratto@gmail.com","username":"ceratto"},"change_message_id":"5af58f8ea09c5477eff452c8265ec2038321ec7e","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    constraints \u003d [i.name for i in pool_ns_records_table.constraints]"},{"line_number":35,"context_line":"    if CONSTRAINT_NAME in constraints:"},{"line_number":36,"context_line":"        constraint.create()"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_345c9fec","line":36,"updated":"2015-12-16 14:50:27.000000000","message":"Can we fail to create the constraint if there are non-unique rows? We can catch the exception and give guidance to the user on how to fix the issue before running the migration again.","commit_id":"54a92485b366fb46997247e7380ec92347f9ea9b"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"426da81352bfd564bacf28f889954259cc4dbf0b","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    constraints \u003d [i.name for i in pool_ns_records_table.constraints]"},{"line_number":35,"context_line":"    if CONSTRAINT_NAME in constraints:"},{"line_number":36,"context_line":"        constraint.create()"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_dd7519fa","line":36,"in_reply_to":"fa69d971_b0c98e7a","updated":"2016-01-05 11:06:10.000000000","message":"Done","commit_id":"54a92485b366fb46997247e7380ec92347f9ea9b"}],"designate/tests/test_api/test_v1/test_servers.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"840df573a85720e51e480f1ce2258c26acc3705a","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @patch.object(central_service.Service, \u0027update_pool\u0027,"},{"line_number":112,"context_line":"                  side_effect\u003dexceptions.DuplicateServer())"},{"line_number":113,"context_line":"    def test_create_server_duplicate(self, _):"},{"line_number":114,"context_line":"        # Create a server"},{"line_number":115,"context_line":"        fixture \u003d self.get_server_fixture(0)"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_60857705","side":"PARENT","line":113,"updated":"2015-11-18 13:36:00.000000000","message":"Rather than doing this, and making this test depend on central behavior - a new test for the central method should be added.","commit_id":"3e9ec422abb14673653a37152271b76c49482a6a"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"840df573a85720e51e480f1ce2258c26acc3705a","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def test_create_server(self):"},{"line_number":63,"context_line":"        # Create a server"},{"line_number":64,"context_line":"        fixture \u003d self.get_server_fixture(1)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        response \u003d self.post(\u0027servers\u0027, data\u003dfixture)"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_c0746337","line":64,"updated":"2015-11-18 13:36:00.000000000","message":"Why? :)","commit_id":"2466733e7f3c733ae0d5ad9b4747cace26255b60"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"8a135a083e78c6bb9871b7d450510a4d7768f611","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def test_create_server(self):"},{"line_number":63,"context_line":"        # Create a server"},{"line_number":64,"context_line":"        fixture \u003d self.get_server_fixture(1)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        response \u003d self.post(\u0027servers\u0027, data\u003dfixture)"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_7670dddc","line":64,"in_reply_to":"ba8a016a_c0746337","updated":"2015-11-18 14:17:00.000000000","message":"Because apparantly (somewhere) we create a default server in our tests?","commit_id":"2466733e7f3c733ae0d5ad9b4747cace26255b60"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"f022b69cb816573c773bfb0168372266006f9b4c","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def test_create_server(self):"},{"line_number":64,"context_line":"        # Create a server"},{"line_number":65,"context_line":"        fixture \u003d self.get_server_fixture(1)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        response \u003d self.post(\u0027servers\u0027, data\u003dfixture)"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_d0c44260","line":65,"updated":"2016-01-04 17:12:58.000000000","message":"Why are we changing fixture here?","commit_id":"54a92485b366fb46997247e7380ec92347f9ea9b"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"f82547f13166b91002104ebd3984ed1e682c0dab","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def test_create_server(self):"},{"line_number":64,"context_line":"        # Create a server"},{"line_number":65,"context_line":"        fixture \u003d self.get_server_fixture(1)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        response \u003d self.post(\u0027servers\u0027, data\u003dfixture)"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_cbe1f39b","line":65,"in_reply_to":"fa69d971_d0c44260","updated":"2016-01-04 17:53:11.000000000","message":"In a base somewhere, we create the default / 0 server fixture automatically, so this would trigger a duplicate otherwise. Maybe leave a comment explaining this, so people stop asking ;)","commit_id":"54a92485b366fb46997247e7380ec92347f9ea9b"}]}
