)]}'
{"designate/api/v1/records.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"cd5525bd68116cf8d1f8bc4850bcfe0a40463264","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def _find_or_create_recordset(context, domain_id, name, type, ttl):"},{"line_number":40,"context_line":"    try:"},{"line_number":41,"context_line":"        recordset \u003d _find_recordset(context, domain_id, name, type)"},{"line_number":42,"context_line":"    except exceptions.RecordSetNotFound:"},{"line_number":43,"context_line":"        # Create an empty recordset"},{"line_number":44,"context_line":"        values \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_8e9e6406","line":41,"updated":"2014-07-08 17:14:10.000000000","message":"subtle issue here (can be fixed later) - if the recordset already exists, the ttl value is silently ignored in creates.","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"9d82c0531460a3f692857759a8dca31d267f575b","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def _find_or_create_recordset(context, domain_id, name, type, ttl):"},{"line_number":40,"context_line":"    try:"},{"line_number":41,"context_line":"        recordset \u003d _find_recordset(context, domain_id, name, type)"},{"line_number":42,"context_line":"    except exceptions.RecordSetNotFound:"},{"line_number":43,"context_line":"        # Create an empty recordset"},{"line_number":44,"context_line":"        values \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_9cf1decf","line":41,"in_reply_to":"baada198_8e9e6406","updated":"2014-07-10 19:16:27.000000000","message":"It\u0027s doesn\u0027t really get ignored in the update. The function _find_recordset doesn\u0027t need the ttl to find an existing recordset, so it\u0027s not passed on to the find.\nEither the original recordset is returned (and the values including ttl) are updated in a different function, or a new recordset is returned with the values given.","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"}],"designate/api/v2/controllers/recordsets.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"be3d605f7cec307c7baf20189f83d5012286b398","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    SORT_KEYS \u003d [\u0027created_at\u0027, \u0027id\u0027, \u0027updated_at\u0027, \u0027domain_id\u0027, \u0027tenant_id\u0027,"},{"line_number":35,"context_line":"                 \u0027name\u0027, \u0027type\u0027, \u0027ttl\u0027, \u0027records\u0027]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    records \u003d records_controller.RecordsController()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @pecan.expose(template\u003d\u0027json:\u0027, content_type\u003d\u0027application/json\u0027)"},{"line_number":40,"context_line":"    @utils.validate_uuid(\u0027zone_id\u0027, \u0027recordset_id\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_495d99eb","line":37,"updated":"2014-06-26 18:42:51.000000000","message":"We should really be removing this entirely in this patchset","commit_id":"3b38ef549556f0aa7251a7d347a96e4eeb59f214"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2d3d8c8685b90d8ea27fdf73aeb2c30a35d7fb8f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    SORT_KEYS \u003d [\u0027created_at\u0027, \u0027id\u0027, \u0027updated_at\u0027, \u0027domain_id\u0027, \u0027tenant_id\u0027,"},{"line_number":35,"context_line":"                 \u0027name\u0027, \u0027type\u0027, \u0027ttl\u0027, \u0027records\u0027]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    records \u003d records_controller.RecordsController()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @pecan.expose(template\u003d\u0027json:\u0027, content_type\u003d\u0027application/json\u0027)"},{"line_number":40,"context_line":"    @utils.validate_uuid(\u0027zone_id\u0027, \u0027recordset_id\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_f8a1cc3a","line":37,"in_reply_to":"1ae5cdf2_242794c8","updated":"2014-06-26 20:16:03.000000000","message":"Cool - just spotted it when I was looking through the code","commit_id":"3b38ef549556f0aa7251a7d347a96e4eeb59f214"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"09f3add6d70a5ac7aff85b2e8876e958410a1f1b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    SORT_KEYS \u003d [\u0027created_at\u0027, \u0027id\u0027, \u0027updated_at\u0027, \u0027domain_id\u0027, \u0027tenant_id\u0027,"},{"line_number":35,"context_line":"                 \u0027name\u0027, \u0027type\u0027, \u0027ttl\u0027, \u0027records\u0027]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    records \u003d records_controller.RecordsController()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @pecan.expose(template\u003d\u0027json:\u0027, content_type\u003d\u0027application/json\u0027)"},{"line_number":40,"context_line":"    @utils.validate_uuid(\u0027zone_id\u0027, \u0027recordset_id\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_242794c8","line":37,"in_reply_to":"1ae5cdf2_495d99eb","updated":"2014-06-26 19:37:59.000000000","message":"You\u0027re talking about the records_controller, right?  I plan to. Just haven\u0027t gotten to the part where I remove the records code yet. Wanted to get all the recordset changes working and I\u0027m not happy with the PUT","commit_id":"3b38ef549556f0aa7251a7d347a96e4eeb59f214"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"cd5525bd68116cf8d1f8bc4850bcfe0a40463264","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    _resource_schema \u003d schema.Schema(\u0027v2\u0027, \u0027recordset\u0027)"},{"line_number":32,"context_line":"    _collection_schema \u003d schema.Schema(\u0027v2\u0027, \u0027recordsets\u0027)"},{"line_number":33,"context_line":"    SORT_KEYS \u003d [\u0027created_at\u0027, \u0027id\u0027, \u0027updated_at\u0027, \u0027domain_id\u0027, \u0027tenant_id\u0027,"},{"line_number":34,"context_line":"                 \u0027name\u0027, \u0027type\u0027, \u0027ttl\u0027, \u0027records\u0027, \u0027priority\u0027]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @pecan.expose(template\u003d\u0027json:\u0027, content_type\u003d\u0027application/json\u0027)"},{"line_number":37,"context_line":"    @utils.validate_uuid(\u0027zone_id\u0027, \u0027recordset_id\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_e968ba23","line":34,"updated":"2014-07-08 17:14:10.000000000","message":"I am not sure if records and priority makes sense to have as the sort keys.  Also if you try to sort on these keys, you get a 500.\n\nAlso (for later) domain_id is exposed as zone_id.  So we need to change the sort_key name to zone_id but change it to domain_id before passing it to storage.  \n\ntenant_id is not exposed as one of the fields returned.  For now domain_id and tenant_id, I would think would be the same for all the recordsets.  So it does not make sense to have these as sort keys","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"bc4dd776626c4d838cf142e7359e140345c64741","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    _resource_schema \u003d schema.Schema(\u0027v2\u0027, \u0027recordset\u0027)"},{"line_number":32,"context_line":"    _collection_schema \u003d schema.Schema(\u0027v2\u0027, \u0027recordsets\u0027)"},{"line_number":33,"context_line":"    SORT_KEYS \u003d [\u0027created_at\u0027, \u0027id\u0027, \u0027updated_at\u0027, \u0027domain_id\u0027, \u0027tenant_id\u0027,"},{"line_number":34,"context_line":"                 \u0027name\u0027, \u0027type\u0027, \u0027ttl\u0027, \u0027records\u0027, \u0027priority\u0027]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @pecan.expose(template\u003d\u0027json:\u0027, content_type\u003d\u0027application/json\u0027)"},{"line_number":37,"context_line":"    @utils.validate_uuid(\u0027zone_id\u0027, \u0027recordset_id\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_4c7e4a1a","line":34,"in_reply_to":"baada198_b76cfb9d","updated":"2014-07-14 20:16:20.000000000","message":"Agreed with Vinod - I don\u0027t think it make sense to try and sort on either of these (or domain/tenant_id actually for that matter..)","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"9d82c0531460a3f692857759a8dca31d267f575b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    _resource_schema \u003d schema.Schema(\u0027v2\u0027, \u0027recordset\u0027)"},{"line_number":32,"context_line":"    _collection_schema \u003d schema.Schema(\u0027v2\u0027, \u0027recordsets\u0027)"},{"line_number":33,"context_line":"    SORT_KEYS \u003d [\u0027created_at\u0027, \u0027id\u0027, \u0027updated_at\u0027, \u0027domain_id\u0027, \u0027tenant_id\u0027,"},{"line_number":34,"context_line":"                 \u0027name\u0027, \u0027type\u0027, \u0027ttl\u0027, \u0027records\u0027, \u0027priority\u0027]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @pecan.expose(template\u003d\u0027json:\u0027, content_type\u003d\u0027application/json\u0027)"},{"line_number":37,"context_line":"    @utils.validate_uuid(\u0027zone_id\u0027, \u0027recordset_id\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_b76cfb9d","line":34,"in_reply_to":"baada198_e968ba23","updated":"2014-07-10 19:16:27.000000000","message":"I\u0027ll remove \u0027records\u0027 and \u0027priority\u0027 from the SORT_KEYS\n\nI\u0027ll also take out domain_id and tenant_id. They were already in there, but you\u0027re right, it doesn\u0027t really make sense to sort on them.","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"cd5525bd68116cf8d1f8bc4850bcfe0a40463264","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        # Fetch the existing recordset"},{"line_number":108,"context_line":"        recordset \u003d self.central_api.get_recordset(context, zone_id,"},{"line_number":109,"context_line":"                                                   recordset_id)"},{"line_number":110,"context_line":"        LOG.debug(\"Initial recordset is %s\" % recordset)"},{"line_number":111,"context_line":"        # Fetch the records associated with the recordset"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # Convert from APIv2 -\u003e Central format"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_442a6be8","line":110,"updated":"2014-07-08 17:14:10.000000000","message":"Did you have the above LOG.debug and the one below for your debugging?  Can they be removed?","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"9d82c0531460a3f692857759a8dca31d267f575b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        # Fetch the existing recordset"},{"line_number":108,"context_line":"        recordset \u003d self.central_api.get_recordset(context, zone_id,"},{"line_number":109,"context_line":"                                                   recordset_id)"},{"line_number":110,"context_line":"        LOG.debug(\"Initial recordset is %s\" % recordset)"},{"line_number":111,"context_line":"        # Fetch the records associated with the recordset"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # Convert from APIv2 -\u003e Central format"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_9c49ded2","line":110,"in_reply_to":"baada198_442a6be8","updated":"2014-07-10 19:16:27.000000000","message":"I\u0027ll remove them.","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"cd5525bd68116cf8d1f8bc4850bcfe0a40463264","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        response.status_int \u003d 200"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        return self._view.show(context, request, recordset)"},{"line_number":163,"context_line":"    \"\"\""},{"line_number":164,"context_line":"    @pecan.expose(template\u003dNone, content_type\u003d\u0027application/json\u0027)"},{"line_number":165,"context_line":"    @utils.validate_uuid(\u0027zone_id\u0027, \u0027recordset_id\u0027)"},{"line_number":166,"context_line":"    def delete_one(self, zone_id, recordset_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_e4d8df81","line":163,"updated":"2014-07-08 17:14:10.000000000","message":"Could you remove the commented out code?  We can go back and look at the history and look at the code if needed later.","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"9d82c0531460a3f692857759a8dca31d267f575b","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        response.status_int \u003d 200"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        return self._view.show(context, request, recordset)"},{"line_number":163,"context_line":"    \"\"\""},{"line_number":164,"context_line":"    @pecan.expose(template\u003dNone, content_type\u003d\u0027application/json\u0027)"},{"line_number":165,"context_line":"    @utils.validate_uuid(\u0027zone_id\u0027, \u0027recordset_id\u0027)"},{"line_number":166,"context_line":"    def delete_one(self, zone_id, recordset_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_d75def16","line":163,"in_reply_to":"baada198_e4d8df81","updated":"2014-07-10 19:16:27.000000000","message":"Just missed it in my cleanup of code.","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"}],"designate/api/v2/views/recordsets.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"cd5525bd68116cf8d1f8bc4850bcfe0a40463264","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            \"type\": recordset[\u0027type\u0027],"},{"line_number":43,"context_line":"            \"ttl\": recordset[\u0027ttl\u0027],"},{"line_number":44,"context_line":"            \"records\": recordset[\u0027records\u0027],"},{"line_number":45,"context_line":"            \"priority\": recordset[\u0027priority\u0027],"},{"line_number":46,"context_line":"            \"description\": recordset[\u0027description\u0027],"},{"line_number":47,"context_line":"            \"version\": recordset[\u0027version\u0027],"},{"line_number":48,"context_line":"            \"created_at\": recordset[\u0027created_at\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_0a0f9d2f","line":45,"updated":"2014-07-08 17:14:10.000000000","message":"Separating records and priority means that the user needs to manually correlate each item in priority with each item in record.  Instead I would like something like the following for both the input and the output\nrecordset\n{\n...\nrecord\n{\n[priority1] data1 [optional description1]\n[priority2] data2 [optional description2]\n....\n}\n...\n}","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"9d82c0531460a3f692857759a8dca31d267f575b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            \"type\": recordset[\u0027type\u0027],"},{"line_number":43,"context_line":"            \"ttl\": recordset[\u0027ttl\u0027],"},{"line_number":44,"context_line":"            \"records\": recordset[\u0027records\u0027],"},{"line_number":45,"context_line":"            \"priority\": recordset[\u0027priority\u0027],"},{"line_number":46,"context_line":"            \"description\": recordset[\u0027description\u0027],"},{"line_number":47,"context_line":"            \"version\": recordset[\u0027version\u0027],"},{"line_number":48,"context_line":"            \"created_at\": recordset[\u0027created_at\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_97c9b77b","line":45,"in_reply_to":"baada198_0a0f9d2f","updated":"2014-07-10 19:16:27.000000000","message":"I\u0027ll look at this","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"bc4dd776626c4d838cf142e7359e140345c64741","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            \"type\": recordset[\u0027type\u0027],"},{"line_number":43,"context_line":"            \"ttl\": recordset[\u0027ttl\u0027],"},{"line_number":44,"context_line":"            \"records\": recordset[\u0027records\u0027],"},{"line_number":45,"context_line":"            \"priority\": recordset[\u0027priority\u0027],"},{"line_number":46,"context_line":"            \"description\": recordset[\u0027description\u0027],"},{"line_number":47,"context_line":"            \"version\": recordset[\u0027version\u0027],"},{"line_number":48,"context_line":"            \"created_at\": recordset[\u0027created_at\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_ec8d5e32","line":45,"in_reply_to":"baada198_97c9b77b","updated":"2014-07-14 20:16:20.000000000","message":"I actually agree with Vinod here, BUT, I also think we should fix it in a follow on patch","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"4d5f71d60b054cccc0985c8b957e59ab146824f3","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        if \u0027records\u0027 in result:"},{"line_number":64,"context_line":"            result[\u0027records\u0027] \u003d objects.RecordList(objects\u003d["},{"line_number":65,"context_line":"                objects.Record(data\u003dr) for r in result[\u0027records\u0027]"},{"line_number":66,"context_line":"            ])"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        return result"}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_38f8d0c3","line":66,"updated":"2014-07-18 03:04:25.000000000","message":"priority is not handled for MX and SRV records","commit_id":"8d4a53cfb63c3b758073d1385556847fc0923425"}],"designate/resources/schemas/v2/recordset.json":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"be3d605f7cec307c7baf20189f83d5012286b398","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                },"},{"line_number":55,"context_line":"                \"records\": {"},{"line_number":56,"context_line":"                    \"type\": \"array\","},{"line_number":57,"context_line":"                    \"description\": \"Records in the RecordSet\""},{"line_number":58,"context_line":"                },"},{"line_number":59,"context_line":"                \"version\": {"},{"line_number":60,"context_line":"                    \"type\": \"integer\","}],"source_content_type":"application/json","patch_set":1,"id":"1ae5cdf2_696255ae","line":57,"updated":"2014-06-26 18:42:51.000000000","message":"Not sure if it is needed in this patchset, but eventually we should be doing validation here - i think it can wait though","commit_id":"3b38ef549556f0aa7251a7d347a96e4eeb59f214"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2d3d8c8685b90d8ea27fdf73aeb2c30a35d7fb8f","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                },"},{"line_number":55,"context_line":"                \"records\": {"},{"line_number":56,"context_line":"                    \"type\": \"array\","},{"line_number":57,"context_line":"                    \"description\": \"Records in the RecordSet\""},{"line_number":58,"context_line":"                },"},{"line_number":59,"context_line":"                \"version\": {"},{"line_number":60,"context_line":"                    \"type\": \"integer\","}],"source_content_type":"application/json","patch_set":1,"id":"1ae5cdf2_583f20df","line":57,"in_reply_to":"1ae5cdf2_18fe7805","updated":"2014-06-26 20:16:03.000000000","message":"Cool, - Although JSON does not like comments, so I think we just need to log a bug for it - as it turns out we don\u0027t validate anything for records in the v2 API","commit_id":"3b38ef549556f0aa7251a7d347a96e4eeb59f214"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"09f3add6d70a5ac7aff85b2e8876e958410a1f1b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                },"},{"line_number":55,"context_line":"                \"records\": {"},{"line_number":56,"context_line":"                    \"type\": \"array\","},{"line_number":57,"context_line":"                    \"description\": \"Records in the RecordSet\""},{"line_number":58,"context_line":"                },"},{"line_number":59,"context_line":"                \"version\": {"},{"line_number":60,"context_line":"                    \"type\": \"integer\","}],"source_content_type":"application/json","patch_set":1,"id":"1ae5cdf2_18fe7805","line":57,"in_reply_to":"1ae5cdf2_696255ae","updated":"2014-06-26 19:37:59.000000000","message":"Yes. I thought about that. It really needs to be hooked up with the records.json, I think. That will probably be much easier after the backend is done. I\u0027ll add a \"To Do\" here.","commit_id":"3b38ef549556f0aa7251a7d347a96e4eeb59f214"}],"designate/storage/impl_sqlalchemy/__init__.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"0bc5109ed3934f06cc726b806d0c86a575276c58","unresolved":false,"context_lines":[{"line_number":552,"context_line":"            LOG.debug(\"The existing records are: id\u003d%s and data\u003d%s\""},{"line_number":553,"context_line":"                      % (r[\u0027id\u0027], r[\u0027data\u0027]))"},{"line_number":554,"context_line":"            del_record \u003d self.delete_record(context, r[\u0027id\u0027])"},{"line_number":555,"context_line":"            LOG.debug(\"The deleted record is %s\" % del_record.address)"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"        records \u003d self.find_records(context, {\u0027recordset_id\u0027: recordset_id})"},{"line_number":558,"context_line":"        for r in records:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_1b2af2e6","line":555,"updated":"2014-06-26 20:23:31.000000000","message":"This is causing at least one error - not all records have addresses (eg.MX etc)","commit_id":"3b38ef549556f0aa7251a7d347a96e4eeb59f214"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"cd5525bd68116cf8d1f8bc4850bcfe0a40463264","unresolved":false,"context_lines":[{"line_number":621,"context_line":"            return objects.RRData_TXT.from_sqla(record)"},{"line_number":622,"context_line":"        else:"},{"line_number":623,"context_line":"            raise TypeError(\"Unknown recordset type - %s\" % recordset.type)"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"    def create_record(self, context, domain_id, recordset_id, record):"},{"line_number":626,"context_line":"        # Fetch the domain as we need the tenant_id"},{"line_number":627,"context_line":"        domain \u003d self._find_domains(context, {\u0027id\u0027: domain_id}, one\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_4a2b5594","line":624,"updated":"2014-07-08 17:14:10.000000000","message":"Should there be separate *_record operations still?  Since records can only exist within the context of the recordset, I would think all the *_record operations should be deleted from storage and central.\nHaving only the recordset interface would make it cleaner and less prone to bugs in the future.","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"9d82c0531460a3f692857759a8dca31d267f575b","unresolved":false,"context_lines":[{"line_number":621,"context_line":"            return objects.RRData_TXT.from_sqla(record)"},{"line_number":622,"context_line":"        else:"},{"line_number":623,"context_line":"            raise TypeError(\"Unknown recordset type - %s\" % recordset.type)"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"    def create_record(self, context, domain_id, recordset_id, record):"},{"line_number":626,"context_line":"        # Fetch the domain as we need the tenant_id"},{"line_number":627,"context_line":"        domain \u003d self._find_domains(context, {\u0027id\u0027: domain_id}, one\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_b79f9b5e","line":624,"in_reply_to":"baada198_4a2b5594","updated":"2014-07-10 19:16:27.000000000","message":"I think these are still needed for v1.","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"bc4dd776626c4d838cf142e7359e140345c64741","unresolved":false,"context_lines":[{"line_number":621,"context_line":"            return objects.RRData_TXT.from_sqla(record)"},{"line_number":622,"context_line":"        else:"},{"line_number":623,"context_line":"            raise TypeError(\"Unknown recordset type - %s\" % recordset.type)"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"    def create_record(self, context, domain_id, recordset_id, record):"},{"line_number":626,"context_line":"        # Fetch the domain as we need the tenant_id"},{"line_number":627,"context_line":"        domain \u003d self._find_domains(context, {\u0027id\u0027: domain_id}, one\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_ec947e38","line":624,"in_reply_to":"baada198_b79f9b5e","updated":"2014-07-14 20:16:20.000000000","message":"These could now be removed with the rebase on top of the objects work, and I think they should be, but again, I believe we should treat that as a separate patchset.","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"}],"designate/storage/impl_sqlalchemy/models.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"be3d605f7cec307c7baf20189f83d5012286b398","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    ttl \u003d Column(Integer, default\u003dNone, nullable\u003dTrue)"},{"line_number":129,"context_line":"    description \u003d Column(Unicode(160), nullable\u003dTrue)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    recordslist \u003d relationship(\u0027Record\u0027,"},{"line_number":132,"context_line":"                               backref\u003dbackref(\u0027recordset\u0027, uselist\u003dFalse),"},{"line_number":133,"context_line":"                               cascade\u003d\"all, delete-orphan\","},{"line_number":134,"context_line":"                               passive_deletes\u003dTrue,)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_895321dd","line":131,"updated":"2014-06-26 18:42:51.000000000","message":"This is the line that is breaking the V1 API - it assumes it has a SQLAlchmeny Object here, not what it returns below.\n\nWe may need to do translations in the V2 API view layer for the time being, as this will return the required data to get records","commit_id":"3b38ef549556f0aa7251a7d347a96e4eeb59f214"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"09f3add6d70a5ac7aff85b2e8876e958410a1f1b","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    ttl \u003d Column(Integer, default\u003dNone, nullable\u003dTrue)"},{"line_number":129,"context_line":"    description \u003d Column(Unicode(160), nullable\u003dTrue)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    recordslist \u003d relationship(\u0027Record\u0027,"},{"line_number":132,"context_line":"                               backref\u003dbackref(\u0027recordset\u0027, uselist\u003dFalse),"},{"line_number":133,"context_line":"                               cascade\u003d\"all, delete-orphan\","},{"line_number":134,"context_line":"                               passive_deletes\u003dTrue,)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_b83ca4c0","line":131,"in_reply_to":"1ae5cdf2_895321dd","updated":"2014-06-26 19:37:59.000000000","message":"Oh, I\u0027ll see. I thought it didn\u0027t matter what the name was. I can change it back to records and rename the property. Would that fix it or better to do a translation?","commit_id":"3b38ef549556f0aa7251a7d347a96e4eeb59f214"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2d3d8c8685b90d8ea27fdf73aeb2c30a35d7fb8f","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    ttl \u003d Column(Integer, default\u003dNone, nullable\u003dTrue)"},{"line_number":129,"context_line":"    description \u003d Column(Unicode(160), nullable\u003dTrue)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    recordslist \u003d relationship(\u0027Record\u0027,"},{"line_number":132,"context_line":"                               backref\u003dbackref(\u0027recordset\u0027, uselist\u003dFalse),"},{"line_number":133,"context_line":"                               cascade\u003d\"all, delete-orphan\","},{"line_number":134,"context_line":"                               passive_deletes\u003dTrue,)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_d8525035","line":131,"in_reply_to":"1ae5cdf2_b83ca4c0","updated":"2014-06-26 20:16:03.000000000","message":"I think we would be better doing a translation from this to what ever we need in the v2 API controller","commit_id":"3b38ef549556f0aa7251a7d347a96e4eeb59f214"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"cd5525bd68116cf8d1f8bc4850bcfe0a40463264","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                           passive_deletes\u003dTrue)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @property"},{"line_number":135,"context_line":"    def data(self):"},{"line_number":136,"context_line":"        x \u003d []"},{"line_number":137,"context_line":"        for r in self.records:"},{"line_number":138,"context_line":"            x.append(r[\u0027data\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_ca02056f","line":135,"updated":"2014-07-08 17:14:10.000000000","message":"Are the properties data and priority supposed to be read only?\nDoes @property mean that they are read/write?","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"9d82c0531460a3f692857759a8dca31d267f575b","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                           passive_deletes\u003dTrue)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @property"},{"line_number":135,"context_line":"    def data(self):"},{"line_number":136,"context_line":"        x \u003d []"},{"line_number":137,"context_line":"        for r in self.records:"},{"line_number":138,"context_line":"            x.append(r[\u0027data\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_f7b673db","line":135,"in_reply_to":"baada198_ca02056f","updated":"2014-07-10 19:16:27.000000000","message":"No. It doesn\u0027t mean that they\u0027re read only. This is just the way sqlalchemy orm works. The list of data gets automatically built from the records relationship. You have to have this property defined in order to get to them. Same for priority.","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"cd5525bd68116cf8d1f8bc4850bcfe0a40463264","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        # as these are set separately in the records when a recordset"},{"line_number":152,"context_line":"        # is updated."},{"line_number":153,"context_line":"        for k, v in values.iteritems():"},{"line_number":154,"context_line":"            if k !\u003d \u0027records\u0027 and k !\u003d \u0027priority\u0027:"},{"line_number":155,"context_line":"                setattr(self, k, v)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_caebe5ae","line":154,"updated":"2014-07-08 17:14:10.000000000","message":"does data need to be excluded too here?","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"9d82c0531460a3f692857759a8dca31d267f575b","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        # as these are set separately in the records when a recordset"},{"line_number":152,"context_line":"        # is updated."},{"line_number":153,"context_line":"        for k, v in values.iteritems():"},{"line_number":154,"context_line":"            if k !\u003d \u0027records\u0027 and k !\u003d \u0027priority\u0027:"},{"line_number":155,"context_line":"                setattr(self, k, v)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_77d183fa","line":154,"in_reply_to":"baada198_caebe5ae","updated":"2014-07-10 19:16:27.000000000","message":"Nope. \u0027Data\u0027 is only on the models object. The values come from the designate object and there it is called record instead of data. I couldn\u0027t call it record in the models.object, because record was already defined there.","commit_id":"660a21782b6baac775bddb0714f012a10b6cd4e0"}],"designate/tests/__init__.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"be3d605f7cec307c7baf20189f83d5012286b398","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    recordset_fixtures \u003d {"},{"line_number":196,"context_line":"        \u0027A\u0027: ["},{"line_number":197,"context_line":"            {\u0027name\u0027: \u0027mail.%s\u0027, \u0027type\u0027: \u0027A\u0027,"},{"line_number":198,"context_line":"             \u0027records\u0027: [\u0027192.3.3.1, 192.3.3.2\u0027]},"},{"line_number":199,"context_line":"            {\u0027name\u0027: \u0027www.%s\u0027, \u0027type\u0027: \u0027A\u0027,"},{"line_number":200,"context_line":"             \u0027records\u0027: [\u0027192.3.3.3\u0027]},"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_a958ddf9","line":197,"updated":"2014-06-26 18:42:51.000000000","message":"I think these will break the unit tests for v1 as well","commit_id":"3b38ef549556f0aa7251a7d347a96e4eeb59f214"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"09f3add6d70a5ac7aff85b2e8876e958410a1f1b","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    recordset_fixtures \u003d {"},{"line_number":196,"context_line":"        \u0027A\u0027: ["},{"line_number":197,"context_line":"            {\u0027name\u0027: \u0027mail.%s\u0027, \u0027type\u0027: \u0027A\u0027,"},{"line_number":198,"context_line":"             \u0027records\u0027: [\u0027192.3.3.1, 192.3.3.2\u0027]},"},{"line_number":199,"context_line":"            {\u0027name\u0027: \u0027www.%s\u0027, \u0027type\u0027: \u0027A\u0027,"},{"line_number":200,"context_line":"             \u0027records\u0027: [\u0027192.3.3.3\u0027]},"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_d85c101d","line":197,"in_reply_to":"1ae5cdf2_a958ddf9","updated":"2014-06-26 19:37:59.000000000","message":"Yes they did, but I think I can write different ones for v1. For v1, the record will need to be created by the recordset, not the recordset first and then the record.","commit_id":"3b38ef549556f0aa7251a7d347a96e4eeb59f214"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2d3d8c8685b90d8ea27fdf73aeb2c30a35d7fb8f","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    recordset_fixtures \u003d {"},{"line_number":196,"context_line":"        \u0027A\u0027: ["},{"line_number":197,"context_line":"            {\u0027name\u0027: \u0027mail.%s\u0027, \u0027type\u0027: \u0027A\u0027,"},{"line_number":198,"context_line":"             \u0027records\u0027: [\u0027192.3.3.1, 192.3.3.2\u0027]},"},{"line_number":199,"context_line":"            {\u0027name\u0027: \u0027www.%s\u0027, \u0027type\u0027: \u0027A\u0027,"},{"line_number":200,"context_line":"             \u0027records\u0027: [\u0027192.3.3.3\u0027]},"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_58364003","line":197,"in_reply_to":"1ae5cdf2_d85c101d","updated":"2014-06-26 20:16:03.000000000","message":"Yeap, just wanted to make sure that it didnt sneak up on you :)","commit_id":"3b38ef549556f0aa7251a7d347a96e4eeb59f214"}],"designate/tests/test_resources/test_schemas/test_v2.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"4d5f71d60b054cccc0985c8b957e59ab146824f3","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                \u0027zone_id\u0027: \u0027b22d09e0-efa3-11e2-b778-0800200c9a66\u0027,"},{"line_number":43,"context_line":"                \u0027name\u0027: \u0027example.com.\u0027,"},{"line_number":44,"context_line":"                \u0027type\u0027: \u0027MX\u0027,"},{"line_number":45,"context_line":"                \u0027records\u0027: [\u0027mail.example.org.\u0027]"},{"line_number":46,"context_line":"            }"},{"line_number":47,"context_line":"        })"}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_d82ef441","line":45,"updated":"2014-07-18 03:04:25.000000000","message":"Could you add priority to the test either here or test for MX recordsets in the recordsets tests","commit_id":"8d4a53cfb63c3b758073d1385556847fc0923425"}]}
