)]}'
{"designate/api/v2/controllers/floatingips.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"0e0dea5319e03cf1506541087f38dbfce17acdb4","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from designate.api.v2.views import floatingips as floatingips_views"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"VALID_PTRDNAME \u003d \u0027^(?!.{255,})((^\\*|(?!\\-)[A-Za-z0-9_\\-]{1,63})(?\u003c!\\-)\\.)+$\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"central_api \u003d central_rpcapi.CentralAPI()"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2FtA0%3D","line":25,"updated":"2014-01-09 12:44:14.000000000","message":"The schema should be handling this, we don\u0027t want to introduce more methods of handling validation.\n\nAnd we def don\u0027t want to duplicate this regex twice in the code ;)","commit_id":"4577e6ec5832c195d62ac96c593745524a3bc184"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"0e0dea5319e03cf1506541087f38dbfce17acdb4","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            pass"},{"line_number":66,"context_line":"        else:"},{"line_number":67,"context_line":"            msg \u003d \"Invalid \u0027ptrdname\u0027 - Should be string or null.\""},{"line_number":68,"context_line":"            raise exceptions.InvalidFLoatingIP(msg)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        fip \u003d central_api.update_floatingip(context, fip_key, body)"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2FtAs%3D","line":68,"updated":"2014-01-09 12:44:14.000000000","message":"See above - All API validations happen via Schema.","commit_id":"4577e6ec5832c195d62ac96c593745524a3bc184"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"d9d3ef32cc06efad386e89cdfe1f4422d4e919c4","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class FloatingIPController(rest.RestController):"},{"line_number":28,"context_line":"    _view \u003d floatingips_views.FloatingPTRView()"},{"line_number":29,"context_line":"    _resource_schema \u003d schema.Schema(\u0027v2\u0027, \u0027floatingip\u0027)"},{"line_number":30,"context_line":"    _collection_schema \u003d schema.Schema(\u0027v2\u0027, \u0027floatingips\u0027)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FhWw%3D","line":28,"updated":"2014-01-12 22:15:44.000000000","message":"FloatingIPController vs FloatingPTRView\n\nBoth should be \"FloatingIP..\"","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"ee2157fe9eac769b3a9e1217d24acfac91d34294","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class FloatingIPController(rest.RestController):"},{"line_number":28,"context_line":"    _view \u003d floatingips_views.FloatingPTRView()"},{"line_number":29,"context_line":"    _resource_schema \u003d schema.Schema(\u0027v2\u0027, \u0027floatingip\u0027)"},{"line_number":30,"context_line":"    _collection_schema \u003d schema.Schema(\u0027v2\u0027, \u0027floatingips\u0027)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FgUM%3D","line":28,"in_reply_to":"AAAAUH%2F%2FhWw%3D","updated":"2014-01-13 09:41:53.000000000","message":"Done","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"d9d3ef32cc06efad386e89cdfe1f4422d4e919c4","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        context \u003d request.environ[\u0027context\u0027]"},{"line_number":48,"context_line":"        body \u003d request.body_dict"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        region, id_ \u003d network_api.BaseAPI.fip_key_to_data(fip_key)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        # Validate the request conforms to the schema"},{"line_number":53,"context_line":"        self._resource_schema.validate(body)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FhWo%3D","line":50,"updated":"2014-01-12 22:15:44.000000000","message":"I think we should move this region / ID stuff to an API view.. That wait, in central, there always separate and the conversion happens in the right place (the API)","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"ee2157fe9eac769b3a9e1217d24acfac91d34294","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        context \u003d request.environ[\u0027context\u0027]"},{"line_number":48,"context_line":"        body \u003d request.body_dict"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        region, id_ \u003d network_api.BaseAPI.fip_key_to_data(fip_key)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        # Validate the request conforms to the schema"},{"line_number":53,"context_line":"        self._resource_schema.validate(body)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FgUQ%3D","line":50,"in_reply_to":"AAAAUH%2F%2FhWo%3D","updated":"2014-01-13 09:41:53.000000000","message":"Done","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"}],"designate/api/v2/controllers/reverse.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"76abfdd1152d74e2b9a134ea9689fde484e0a71f","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    _collection_schema \u003d schema.Schema(\u0027v2\u0027, \u0027floatingips\u0027)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @pecan.expose(template\u003d\u0027json\u0027)"},{"line_number":39,"context_line":"    @pecan.expose(template\u003d\u0027json:\u0027, content_type\u003d\u0027application/json\u0027)"},{"line_number":40,"context_line":"    def get_all(self, **params):"},{"line_number":41,"context_line":"        \"\"\" List Floating IP PTRs for a Tenant \"\"\""},{"line_number":42,"context_line":"        request \u003d pecan.request"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BZFM%3D","line":39,"updated":"2013-11-26 16:06:41.000000000","message":"Do you need 2 @pecan.exposes here?  If so are both of these also needed for the other methods?","commit_id":"eb61da0de9806e7cd586bcdf10b67084002940b6"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"d8cffea4872dddddb5eaed6c1eecb3f8839dd129","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    _collection_schema \u003d schema.Schema(\u0027v2\u0027, \u0027floatingips\u0027)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @pecan.expose(template\u003d\u0027json\u0027)"},{"line_number":39,"context_line":"    @pecan.expose(template\u003d\u0027json:\u0027, content_type\u003d\u0027application/json\u0027)"},{"line_number":40,"context_line":"    def get_all(self, **params):"},{"line_number":41,"context_line":"        \"\"\" List Floating IP PTRs for a Tenant \"\"\""},{"line_number":42,"context_line":"        request \u003d pecan.request"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BY38%3D","line":39,"in_reply_to":"AAAATn%2F%2BZFM%3D","updated":"2013-11-26 16:16:55.000000000","message":"Correct - The first pecan.expose is unnecessary.","commit_id":"eb61da0de9806e7cd586bcdf10b67084002940b6"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"7b08fa586164751c772883ca59e02e24fddac3c5","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        return self._view.detail(context, request, fip)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"class ReverseController(rest.RestController):"},{"line_number":78,"context_line":"    floatingips \u003d FloatingIPController()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BacI%3D","line":77,"updated":"2013-11-26 11:41:59.000000000","message":"These two controllers should be split out into separate files,\n\npossibly api/v2/controllers/reverse/base.py and api/v2/controllers/reverse/floatingip.py","commit_id":"eb61da0de9806e7cd586bcdf10b67084002940b6"}],"designate/api/v2/views/floatingips.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":35,"context_line":"#            \u0027id\u0027: key"},{"line_number":36,"context_line":"#        }"},{"line_number":37,"context_line":"#        for i in [\u0027created_at\u0027, \u0027updated_at\u0027, \u0027deleted_at\u0027]:"},{"line_number":38,"context_line":"#            fip[i] \u003d data.get(i, None)"},{"line_number":39,"context_line":"        return {\u0027floatingip\u0027: data}"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2Fyy8%3D","line":38,"updated":"2014-01-08 12:01:44.000000000","message":"We can rm -rf this block of code I reckon?","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fc4d4f816bdf554071a1c36f0353ae200c62423","unresolved":false,"context_lines":[{"line_number":35,"context_line":"#            \u0027id\u0027: key"},{"line_number":36,"context_line":"#        }"},{"line_number":37,"context_line":"#        for i in [\u0027created_at\u0027, \u0027updated_at\u0027, \u0027deleted_at\u0027]:"},{"line_number":38,"context_line":"#            fip[i] \u003d data.get(i, None)"},{"line_number":39,"context_line":"        return {\u0027floatingip\u0027: data}"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2Fytw%3D","line":38,"in_reply_to":"AAAAUH%2F%2Fyy8%3D","updated":"2014-01-09 07:55:55.000000000","message":"Done","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"661ea15f2c87cdecbafab5237c71c7eebda9fda4","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    _resource_name \u003d \u0027floatingip\u0027"},{"line_number":26,"context_line":"    _collection_name \u003d \u0027floatingips\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def detail(self, context, request, data):"},{"line_number":29,"context_line":"        data[\u0027id\u0027] \u003d \":\".join([data.pop(\u0027region\u0027), data.pop(\u0027id\u0027)])"},{"line_number":30,"context_line":"        return {\u0027floatingip\u0027: data}"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAUH%2F%2Fd4A%3D","line":28,"updated":"2014-01-13 15:58:51.000000000","message":"needs to be changed to \u0027basic\u0027","commit_id":"ce4a4daa4b5f2abe7cdcfcb07e1dc72f1a034279"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"b85b1d7e82c3438a1d1493abe2599f7e583f57c5","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    _collection_name \u003d \u0027floatingips\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def _get_base_href(self, parents\u003dNone):"},{"line_number":29,"context_line":"        return \u0027/reverse/floatingips\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def basic(self, context, request, data):"},{"line_number":32,"context_line":"        data[\u0027id\u0027] \u003d \":\".join([data.pop(\u0027region\u0027), data.pop(\u0027id\u0027)])"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAUH%2F%2FW6o%3D","line":29,"updated":"2014-01-14 19:25:58.000000000","message":"you should copy the style used in the records view.\n\nAlso the base is wrong, it needs to have the form http(s)://FQDN:port/\u003cAPI-Version\u003e","commit_id":"7b5253b9b4b47a43cb0003117f6045dbdaad6b21"}],"designate/api/v2/views/reverse.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"76abfdd1152d74e2b9a134ea9689fde484e0a71f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    def detail(self, context, request, data):"},{"line_number":29,"context_line":"        fip \u003d {"},{"line_number":30,"context_line":"            \u0027ptrdname\u0027: data[\u0027data\u0027],"},{"line_number":31,"context_line":"            \u0027address\u0027: data[\u0027address\u0027],"},{"line_number":32,"context_line":"            \u0027description\u0027: data[\u0027description\u0027],"},{"line_number":33,"context_line":"            \u0027ttl\u0027: data[\u0027ttl\u0027],"},{"line_number":34,"context_line":"            \u0027id\u0027: data[\u0027region\u0027] + \u0027:\u0027 + data[\u0027managed_resource_id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BZA0%3D","line":31,"updated":"2013-11-26 16:06:41.000000000","message":"The schema for floatingip does not contain \u0027address\u0027.  Should it be added to the schema?","commit_id":"eb61da0de9806e7cd586bcdf10b67084002940b6"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"76abfdd1152d74e2b9a134ea9689fde484e0a71f","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            \u0027ttl\u0027: data[\u0027ttl\u0027],"},{"line_number":34,"context_line":"            \u0027id\u0027: data[\u0027region\u0027] + \u0027:\u0027 + data[\u0027managed_resource_id\u0027]"},{"line_number":35,"context_line":"        }"},{"line_number":36,"context_line":"        for i in [\u0027created_at\u0027, \u0027updated_at\u0027, \u0027deleted_at\u0027]:"},{"line_number":37,"context_line":"            fip[i] \u003d data.get(i, None)"},{"line_number":38,"context_line":"        return fip"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BZAs%3D","line":36,"updated":"2013-11-26 16:06:41.000000000","message":"The schema for floatingip does not contain \u0027deleted_at\u0027.  Should it be added to the schema?","commit_id":"eb61da0de9806e7cd586bcdf10b67084002940b6"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"7b08fa586164751c772883ca59e02e24fddac3c5","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            fip[i] \u003d data.get(i, None)"},{"line_number":38,"context_line":"        return fip"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    # TODO: Use this or not ?"},{"line_number":41,"context_line":"    def load(self, context, request, body):"},{"line_number":42,"context_line":"        \"\"\" Extract a \"central\" compatible dict from an API call \"\"\""},{"line_number":43,"context_line":"        result \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Babs%3D","line":40,"updated":"2013-11-26 11:41:59.000000000","message":"If the base view doesn\u0027t already do this, it should probably just default to returning `body[self._resource_name]` since that\u0027s what new V2 API\u0027s will need","commit_id":"eb61da0de9806e7cd586bcdf10b67084002940b6"}],"designate/central/__init__.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    cfg.IntOpt(\u0027max_recordset_name_len\u0027, default\u003d255,"},{"line_number":42,"context_line":"               help\u003d\"Maximum recordset name length\","},{"line_number":43,"context_line":"               deprecated_name\u003d\u0027max_record_name_len\u0027),"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027managed_email\u0027, default\u003d\u0027n/a\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027E-Mail for Managed zones\u0027),"},{"line_number":46,"context_line":"], group\u003d\u0027service:central\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2Fyy4%3D","line":44,"updated":"2014-01-08 12:01:44.000000000","message":"We should figure out a better name for this, not sure what though!","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fc4d4f816bdf554071a1c36f0353ae200c62423","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    cfg.IntOpt(\u0027max_recordset_name_len\u0027, default\u003d255,"},{"line_number":42,"context_line":"               help\u003d\"Maximum recordset name length\","},{"line_number":43,"context_line":"               deprecated_name\u003d\u0027max_record_name_len\u0027),"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027managed_email\u0027, default\u003d\u0027n/a\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027E-Mail for Managed zones\u0027),"},{"line_number":46,"context_line":"], group\u003d\u0027service:central\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2Fytg%3D","line":44,"in_reply_to":"AAAAUH%2F%2Fyy4%3D","updated":"2014-01-09 07:55:55.000000000","message":"What to call it then ?","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"751f9e4a6135f801b1c3378d53162077f22b692c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    cfg.IntOpt(\u0027max_recordset_name_len\u0027, default\u003d255,"},{"line_number":42,"context_line":"               help\u003d\"Maximum recordset name length\","},{"line_number":43,"context_line":"               deprecated_name\u003d\u0027max_record_name_len\u0027),"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027managed_email\u0027, default\u003d\u0027n/a\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027E-Mail for Managed zones\u0027),"},{"line_number":46,"context_line":"], group\u003d\u0027service:central\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Flh8%3D","line":44,"updated":"2014-01-10 21:37:24.000000000","message":"This can\u0027t be n/a - change to email@example.com as this will break all zone transfers, and creates a invalid zone","commit_id":"4a0e90480b9f9090f0f102670c94a23015ef158b"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"a3b2003b11ab6c7cb6feafafdfe183ff0644baf9","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    cfg.IntOpt(\u0027max_recordset_name_len\u0027, default\u003d255,"},{"line_number":42,"context_line":"               help\u003d\"Maximum recordset name length\","},{"line_number":43,"context_line":"               deprecated_name\u003d\u0027max_record_name_len\u0027),"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027managed_email\u0027, default\u003d\u0027n/a\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027E-Mail for Managed zones\u0027),"},{"line_number":46,"context_line":"], group\u003d\u0027service:central\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Fi5w%3D","line":44,"in_reply_to":"AAAAUH%2F%2Flh8%3D","updated":"2014-01-12 21:23:22.000000000","message":"Done","commit_id":"4a0e90480b9f9090f0f102670c94a23015ef158b"}],"designate/central/rpcapi.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"76abfdd1152d74e2b9a134ea9689fde484e0a71f","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":"    def __init__(self, topic\u003dNone):"},{"line_number":38,"context_line":"        topic \u003d topic if topic else cfg.CONF.central_topic"},{"line_number":39,"context_line":"        super(CentralAPI, self).__init__(topic\u003dtopic, default_version\u003d\u00272.0\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    # Misc Methods"},{"line_number":42,"context_line":"    def get_absolute_limits(self, context):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BY8I%3D","line":39,"updated":"2013-11-26 16:06:41.000000000","message":"Can the version number stay at 2.0 here?","commit_id":"eb61da0de9806e7cd586bcdf10b67084002940b6"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"d8cffea4872dddddb5eaed6c1eecb3f8839dd129","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":"    def __init__(self, topic\u003dNone):"},{"line_number":38,"context_line":"        topic \u003d topic if topic else cfg.CONF.central_topic"},{"line_number":39,"context_line":"        super(CentralAPI, self).__init__(topic\u003dtopic, default_version\u003d\u00272.0\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    # Misc Methods"},{"line_number":42,"context_line":"    def get_absolute_limits(self, context):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BY3M%3D","line":39,"in_reply_to":"AAAATn%2F%2BY8I%3D","updated":"2013-11-26 16:16:55.000000000","message":"Yes, this is the version # used for all methods without an explicit version #, and generally speaking should be equal to the latest major version.","commit_id":"eb61da0de9806e7cd586bcdf10b67084002940b6"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"7b08fa586164751c772883ca59e02e24fddac3c5","unresolved":false,"context_lines":[{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def list_floatingips(self, context):"},{"line_number":299,"context_line":"        msg \u003d self.make_msg(\u0027list_floatingips\u0027)"},{"line_number":300,"context_line":"        return self.call(context, msg)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    def get_floatingip(self, context, fip):"},{"line_number":303,"context_line":"        msg \u003d self.make_msg(\u0027get_floatingip\u0027, fip\u003dfip)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Babg%3D","line":300,"updated":"2013-11-26 11:41:59.000000000","message":"All 3 of these new methods needs to be:\n\n`return self.call(context, msg, version\u003d\u00272.2\u0027)`","commit_id":"eb61da0de9806e7cd586bcdf10b67084002940b6"}],"designate/central/service.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"7b08fa586164751c772883ca59e02e24fddac3c5","unresolved":false,"context_lines":[{"line_number":879,"context_line":"        \"\"\""},{"line_number":880,"context_line":"        Utility method to delete a list of records."},{"line_number":881,"context_line":"        \"\"\""},{"line_number":882,"context_line":"        admin_context \u003d Context.get_admin_context()"},{"line_number":883,"context_line":""},{"line_number":884,"context_line":"        if records \u003e 0:"},{"line_number":885,"context_line":"            for r in records:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Baak%3D","line":882,"updated":"2013-11-26 11:41:59.000000000","message":"We should avoid this if at all possible.\n\nThe issue is that we loose the ability to trace the request after this point, the request_id/user_id/tenant_id etc have all changed.\n\nWe probably want to implement a method of elevating a pre-existing context to an admin context instead.\n\nI\u0027ll ping you on IRC once I\u0027ve thought it through","commit_id":"eb61da0de9806e7cd586bcdf10b67084002940b6"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"7b08fa586164751c772883ca59e02e24fddac3c5","unresolved":false,"context_lines":[{"line_number":941,"context_line":"            tenant_fips)"},{"line_number":942,"context_line":"        return records[0]"},{"line_number":943,"context_line":""},{"line_number":944,"context_line":"    def set_floatingip_reverse(self, api, fip, ptrdname):"},{"line_number":945,"context_line":"        admin_context \u003d DesignateContext.get_admin_context()"},{"line_number":946,"context_line":""},{"line_number":947,"context_line":"        tenant_fips \u003d dict([(f[\u0027region\u0027] + \u0027:\u0027 + f[\u0027id\u0027], f)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BaZc%3D","line":944,"updated":"2013-11-26 11:41:59.000000000","message":"set and unset are private methods, correct? They should be prefixed with an underscore.","commit_id":"eb61da0de9806e7cd586bcdf10b67084002940b6"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":1097,"context_line":"        records, invalid_ids \u003d self._records_with_floatingips("},{"line_number":1098,"context_line":"            elevated_context, records_dict, tenant_fips)"},{"line_number":1099,"context_line":""},{"line_number":1100,"context_line":"        self._delete_records(context, invalid_ids)"},{"line_number":1101,"context_line":""},{"line_number":1102,"context_line":"        record_sets \u003d self.find_recordsets(context)"},{"line_number":1103,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FyyQ%3D","line":1100,"updated":"2014-01-08 12:01:44.000000000","message":"We should have a single method that takes the return from `network_api.list_flotingips()` and handles figuring out what records are invalid, which need purging, and the actual purge etc rather than duplicating this logic.","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":1142,"context_line":""},{"line_number":1143,"context_line":"        # NOTE: Some defaults and corrections"},{"line_number":1144,"context_line":"        if not values[\u0027ptrdname\u0027].endswith(\u0027.\u0027):"},{"line_number":1145,"context_line":"            values[\u0027ptrdname\u0027] \u003d values[\u0027ptrdname\u0027] + \u0027.\u0027"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"        values.setdefault(\u0027description\u0027, None)"},{"line_number":1148,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FyyA%3D","line":1145,"updated":"2014-01-08 12:01:44.000000000","message":"If the . is missing, the API should have rejected the call as invalid..","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fc4d4f816bdf554071a1c36f0353ae200c62423","unresolved":false,"context_lines":[{"line_number":1142,"context_line":""},{"line_number":1143,"context_line":"        # NOTE: Some defaults and corrections"},{"line_number":1144,"context_line":"        if not values[\u0027ptrdname\u0027].endswith(\u0027.\u0027):"},{"line_number":1145,"context_line":"            values[\u0027ptrdname\u0027] \u003d values[\u0027ptrdname\u0027] + \u0027.\u0027"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"        values.setdefault(\u0027description\u0027, None)"},{"line_number":1148,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FyZo%3D","line":1145,"in_reply_to":"AAAAUH%2F%2FyyA%3D","updated":"2014-01-09 07:55:55.000000000","message":"Moved to patch_one() in the api.","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":1232,"context_line":"        try:"},{"line_number":1233,"context_line":"            name \u003d values[\u0027ptrdname\u0027]"},{"line_number":1234,"context_line":"        except KeyError:"},{"line_number":1235,"context_line":"            msg \u003d \u0027Missing \\\u0027ptrdname\\\u0027\u0027"},{"line_number":1236,"context_line":"            raise exceptions.InvalidFLoatingIP(msg)"},{"line_number":1237,"context_line":""},{"line_number":1238,"context_line":"        # NOTE: Behaviour is to unset if ptrdname is \u0027\u0027 or None"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2Fyw0%3D","line":1235,"updated":"2014-01-08 12:01:44.000000000","message":"We should never get this far without the prtdname being present .. The API should have rejected the call","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fc4d4f816bdf554071a1c36f0353ae200c62423","unresolved":false,"context_lines":[{"line_number":1232,"context_line":"        try:"},{"line_number":1233,"context_line":"            name \u003d values[\u0027ptrdname\u0027]"},{"line_number":1234,"context_line":"        except KeyError:"},{"line_number":1235,"context_line":"            msg \u003d \u0027Missing \\\u0027ptrdname\\\u0027\u0027"},{"line_number":1236,"context_line":"            raise exceptions.InvalidFLoatingIP(msg)"},{"line_number":1237,"context_line":""},{"line_number":1238,"context_line":"        # NOTE: Behaviour is to unset if ptrdname is \u0027\u0027 or None"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FyZ8%3D","line":1235,"in_reply_to":"AAAAUH%2F%2Fyw0%3D","updated":"2014-01-09 07:55:55.000000000","message":"Moved the d.api.v2.controllers.floatingips - patch_one","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":1235,"context_line":"            msg \u003d \u0027Missing \\\u0027ptrdname\\\u0027\u0027"},{"line_number":1236,"context_line":"            raise exceptions.InvalidFLoatingIP(msg)"},{"line_number":1237,"context_line":""},{"line_number":1238,"context_line":"        # NOTE: Behaviour is to unset if ptrdname is \u0027\u0027 or None"},{"line_number":1239,"context_line":"        if name is None or name \u003d\u003d \u0027\u0027:"},{"line_number":1240,"context_line":"            self._unset_floatingip_reverse(context, fip_key)"},{"line_number":1241,"context_line":"        elif isinstance(name, basestring):"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2Fywc%3D","line":1238,"updated":"2014-01-08 12:01:44.000000000","message":"just None? An empty string won\u0027t pass the validation at the API layer.","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fc4d4f816bdf554071a1c36f0353ae200c62423","unresolved":false,"context_lines":[{"line_number":1235,"context_line":"            msg \u003d \u0027Missing \\\u0027ptrdname\\\u0027\u0027"},{"line_number":1236,"context_line":"            raise exceptions.InvalidFLoatingIP(msg)"},{"line_number":1237,"context_line":""},{"line_number":1238,"context_line":"        # NOTE: Behaviour is to unset if ptrdname is \u0027\u0027 or None"},{"line_number":1239,"context_line":"        if name is None or name \u003d\u003d \u0027\u0027:"},{"line_number":1240,"context_line":"            self._unset_floatingip_reverse(context, fip_key)"},{"line_number":1241,"context_line":"        elif isinstance(name, basestring):"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FyZ0%3D","line":1238,"in_reply_to":"AAAAUH%2F%2Fywc%3D","updated":"2014-01-09 07:55:55.000000000","message":"Done","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"0e0dea5319e03cf1506541087f38dbfce17acdb4","unresolved":false,"context_lines":[{"line_number":1218,"context_line":"        elif isinstance(values[\u0027ptrdname\u0027], basestring):"},{"line_number":1219,"context_line":"            return self._set_floatingip_reverse(context, fip_key, values)"},{"line_number":1220,"context_line":"        else:"},{"line_number":1221,"context_line":"            msg \u003d \"Invalid FloatingIP \u0027ptrdname\u0027 %s\" % values[\u0027ptrdname\u0027]"},{"line_number":1222,"context_line":"            raise exceptions.InvalidFLoatingIP(msg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2Fs%2F0%3D","line":1221,"updated":"2014-01-09 12:44:14.000000000","message":"Again, we should never get this far if the value is not a string, or None","commit_id":"4577e6ec5832c195d62ac96c593745524a3bc184"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"751f9e4a6135f801b1c3378d53162077f22b692c","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"        try:"},{"line_number":1114,"context_line":"            record \u003d self.storage_api.find_record("},{"line_number":1115,"context_line":"                elevated_context, criterion\u003dcriterion)"},{"line_number":1116,"context_line":"        except exceptions.RecordNotFound:"},{"line_number":1117,"context_line":"            msg \u003d \u0027No such FloatingIP %s\u0027 % fip_key"},{"line_number":1118,"context_line":"            raise exceptions.NotFound(msg)"},{"line_number":1119,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2FlkU%3D","line":1116,"updated":"2014-01-10 21:37:24.000000000","message":"This should not return an error if it is not found, but return a record with \u0027None\u0027 as the ptrdname","commit_id":"4a0e90480b9f9090f0f102670c94a23015ef158b"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"a3b2003b11ab6c7cb6feafafdfe183ff0644baf9","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"        try:"},{"line_number":1114,"context_line":"            record \u003d self.storage_api.find_record("},{"line_number":1115,"context_line":"                elevated_context, criterion\u003dcriterion)"},{"line_number":1116,"context_line":"        except exceptions.RecordNotFound:"},{"line_number":1117,"context_line":"            msg \u003d \u0027No such FloatingIP %s\u0027 % fip_key"},{"line_number":1118,"context_line":"            raise exceptions.NotFound(msg)"},{"line_number":1119,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Fi5s%3D","line":1116,"in_reply_to":"AAAAUH%2F%2FlkU%3D","updated":"2014-01-12 21:23:22.000000000","message":"Hmm, should it create the record in db you mean with the ptrdname as None if the FIP is associated?","commit_id":"4a0e90480b9f9090f0f102670c94a23015ef158b"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"d9d3ef32cc06efad386e89cdfe1f4422d4e919c4","unresolved":false,"context_lines":[{"line_number":1108,"context_line":""},{"line_number":1109,"context_line":"        return self._format_floatingips(context, fips, record_sets)"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"    def get_floatingip(self, context, region, id_):"},{"line_number":1112,"context_line":"        \"\"\""},{"line_number":1113,"context_line":"        Get Floating IP PTR"},{"line_number":1114,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FhWA%3D","line":1111,"updated":"2014-01-12 22:15:44.000000000","message":"In all our other methods, we use \"domain_id\", \"record_id\" etc..\n This should be \"floatingip_id\" throughout.","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"ee2157fe9eac769b3a9e1217d24acfac91d34294","unresolved":false,"context_lines":[{"line_number":1108,"context_line":""},{"line_number":1109,"context_line":"        return self._format_floatingips(context, fips, record_sets)"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"    def get_floatingip(self, context, region, id_):"},{"line_number":1112,"context_line":"        \"\"\""},{"line_number":1113,"context_line":"        Get Floating IP PTR"},{"line_number":1114,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FgU0%3D","line":1111,"in_reply_to":"AAAAUH%2F%2FhWA%3D","updated":"2014-01-13 09:41:53.000000000","message":"Done","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"d9d3ef32cc06efad386e89cdfe1f4422d4e919c4","unresolved":false,"context_lines":[{"line_number":1161,"context_line":"                elevated_context, {\u0027name\u0027: zone_name})"},{"line_number":1162,"context_line":"        except exceptions.DomainNotFound:"},{"line_number":1163,"context_line":"            msg \u003d \u0027No zone for %s:%s - %s zone %s\u0027 % \\"},{"line_number":1164,"context_line":"                (id_, region, fip[\u0027address\u0027], zone_name)"},{"line_number":1165,"context_line":"            LOG.info(msg)"},{"line_number":1166,"context_line":""},{"line_number":1167,"context_line":"            email \u003d cfg.CONF[\u0027service:central\u0027].managed_resource_email"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FhV0%3D","line":1164,"updated":"2014-01-12 22:15:44.000000000","message":"Can we make it clear in this log message that we\u0027re about to create the zone?","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"ee2157fe9eac769b3a9e1217d24acfac91d34294","unresolved":false,"context_lines":[{"line_number":1161,"context_line":"                elevated_context, {\u0027name\u0027: zone_name})"},{"line_number":1162,"context_line":"        except exceptions.DomainNotFound:"},{"line_number":1163,"context_line":"            msg \u003d \u0027No zone for %s:%s - %s zone %s\u0027 % \\"},{"line_number":1164,"context_line":"                (id_, region, fip[\u0027address\u0027], zone_name)"},{"line_number":1165,"context_line":"            LOG.info(msg)"},{"line_number":1166,"context_line":""},{"line_number":1167,"context_line":"            email \u003d cfg.CONF[\u0027service:central\u0027].managed_resource_email"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FgUs%3D","line":1164,"in_reply_to":"AAAAUH%2F%2FhV0%3D","updated":"2014-01-13 09:41:53.000000000","message":"Done","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"d9d3ef32cc06efad386e89cdfe1f4422d4e919c4","unresolved":false,"context_lines":[{"line_number":1185,"context_line":"        except exceptions.RecordSetNotFound:"},{"line_number":1186,"context_line":"            pass"},{"line_number":1187,"context_line":""},{"line_number":1188,"context_line":"        # NOTE: \u0027description\u0027 is the same as from the record itself for now."},{"line_number":1189,"context_line":"        recordset_values \u003d {"},{"line_number":1190,"context_line":"            \u0027name\u0027: record_name,"},{"line_number":1191,"context_line":"            \u0027type\u0027: \u0027PTR\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FhVs%3D","line":1188,"updated":"2014-01-12 22:15:44.000000000","message":"I don\u0027t think we need to try and copy the description here, end users will never see the actual recordset","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"ee2157fe9eac769b3a9e1217d24acfac91d34294","unresolved":false,"context_lines":[{"line_number":1185,"context_line":"        except exceptions.RecordSetNotFound:"},{"line_number":1186,"context_line":"            pass"},{"line_number":1187,"context_line":""},{"line_number":1188,"context_line":"        # NOTE: \u0027description\u0027 is the same as from the record itself for now."},{"line_number":1189,"context_line":"        recordset_values \u003d {"},{"line_number":1190,"context_line":"            \u0027name\u0027: record_name,"},{"line_number":1191,"context_line":"            \u0027type\u0027: \u0027PTR\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FgUo%3D","line":1188,"in_reply_to":"AAAAUH%2F%2FhVs%3D","updated":"2014-01-13 09:41:53.000000000","message":"Done","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"9eb1006bc02141f8c20b3c808d32bb723b6784f2","unresolved":false,"context_lines":[{"line_number":996,"context_line":"                if record_tenant !\u003d tenant_id:"},{"line_number":997,"context_line":"                    msg \u003d \"Invalid FloatingIP %s belongs to %s but record \" \\"},{"line_number":998,"context_line":"                          \"owner %s\""},{"line_number":999,"context_line":"                    LOG.debug(msg, fip_key, tenant_id, record_tenant)"},{"line_number":1000,"context_line":""},{"line_number":1001,"context_line":"                    invalid.append(record)"},{"line_number":1002,"context_line":"                    record \u003d None"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F%2Fe64%3D","line":999,"updated":"2014-01-13 13:17:19.000000000","message":"not sure what is happening here, but the comparison seems to be failing - \n\n2014-01-13 13:01:49.520 17438 DEBUG designate.central.service [req-32e8c50a-0087-4424-9c28-5901c80bdf50 10035626112345 10834785261169 - - -] Invalid FloatingIP region-a.geo-1:1dd96e2d-a05c-4164-a599-c6ea4345843c belongs to 10834785261169 but record owner 10834785261169 _determine_floatingips /home/graham/HP/designate/designate/central/service.py:999","commit_id":"8ef1d10a36819778730b3226582dd401ea293191"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"9eb1006bc02141f8c20b3c808d32bb723b6784f2","unresolved":false,"context_lines":[{"line_number":1153,"context_line":""},{"line_number":1154,"context_line":"        tenant_fips \u003d self._list_floatingips(context, region\u003dregion)"},{"line_number":1155,"context_line":""},{"line_number":1156,"context_line":"        fip \u003d self._get_floatingip(context, region, floatingip_id, tenant_fips)"},{"line_number":1157,"context_line":""},{"line_number":1158,"context_line":"        zone_name \u003d self.network_api.address_zone(fip[\u0027address\u0027])"},{"line_number":1159,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F%2Fe7c%3D","line":1156,"updated":"2014-01-13 13:17:19.000000000","message":"Seem to be using the wrong context here... Means that if you do a creation on a PTR, then do a list, it fails","commit_id":"8ef1d10a36819778730b3226582dd401ea293191"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"661ea15f2c87cdecbafab5237c71c7eebda9fda4","unresolved":false,"context_lines":[{"line_number":1133,"context_line":"        try:"},{"line_number":1134,"context_line":"            record \u003d self.storage_api.find_record("},{"line_number":1135,"context_line":"                elevated_context, criterion\u003dcriterion)"},{"line_number":1136,"context_line":"        except exceptions.RecordNotFound:"},{"line_number":1137,"context_line":"            msg \u003d \u0027No such FloatingIP %s:%s\u0027 % (region, floatingip_id)"},{"line_number":1138,"context_line":"            raise exceptions.NotFound(msg)"},{"line_number":1139,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAUH%2F%2Fd3Q%3D","line":1136,"updated":"2014-01-13 15:58:51.000000000","message":"This should return the floating IP block, with a blank ptrdname, not raise an exception","commit_id":"ce4a4daa4b5f2abe7cdcfcb07e1dc72f1a034279"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"19513260bee3c3cb4d907c82b47de8316d2d966a","unresolved":false,"context_lines":[{"line_number":1015,"context_line":"            data[fip_key] \u003d (fip_values, record)"},{"line_number":1016,"context_line":""},{"line_number":1017,"context_line":"        self._delete_records(context, invalid)"},{"line_number":1018,"context_line":"        return data"},{"line_number":1019,"context_line":""},{"line_number":1020,"context_line":"    def _format_floatingips(self, context, data, recordsets\u003dNone):"},{"line_number":1021,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAUH%2F%2FSfE%3D","line":1018,"updated":"2014-01-15 12:54:48.000000000","message":"This method is doing much more than determining the floating IPs :)\n\nLets have this return a tuple of (valid, invalid), and explicitly call `self._invalidate_floatingips(context, invalid)`","commit_id":"1d389467fa53df47aba78047cf6a7866e435fbcc"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"34466ff0a38da5b5dc94bbc83e9cde67789fdb11","unresolved":false,"context_lines":[{"line_number":1063,"context_line":"            fips[key] \u003d fip_ptr"},{"line_number":1064,"context_line":"        return fips"},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"    def _delete_records(self, context, records):"},{"line_number":1067,"context_line":"        \"\"\""},{"line_number":1068,"context_line":"        Utility method to delete a list of records."},{"line_number":1069,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAUH%2F%2FSho%3D","line":1066,"updated":"2014-01-15 12:47:14.000000000","message":"This name needs to change! seen as this is ran once, it could be inlined.","commit_id":"1d389467fa53df47aba78047cf6a7866e435fbcc"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"59c8b101428c5b7e406b436f72d58372e0ce8670","unresolved":false,"context_lines":[{"line_number":1063,"context_line":"            fips[key] \u003d fip_ptr"},{"line_number":1064,"context_line":"        return fips"},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"    def _delete_records(self, context, records):"},{"line_number":1067,"context_line":"        \"\"\""},{"line_number":1068,"context_line":"        Utility method to delete a list of records."},{"line_number":1069,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAUH%2F%2FSeM%3D","line":1066,"in_reply_to":"AAAAUH%2F%2FSfQ%3D","updated":"2014-01-15 12:55:53.000000000","message":"Nevermind - that middle sentence, just renaming to `_invalidate_floatingips` makes sense.","commit_id":"1d389467fa53df47aba78047cf6a7866e435fbcc"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"19513260bee3c3cb4d907c82b47de8316d2d966a","unresolved":false,"context_lines":[{"line_number":1063,"context_line":"            fips[key] \u003d fip_ptr"},{"line_number":1064,"context_line":"        return fips"},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"    def _delete_records(self, context, records):"},{"line_number":1067,"context_line":"        \"\"\""},{"line_number":1068,"context_line":"        Utility method to delete a list of records."},{"line_number":1069,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAUH%2F%2FSfQ%3D","line":1066,"in_reply_to":"AAAAUH%2F%2FSho%3D","updated":"2014-01-15 12:54:48.000000000","message":"Agreed - Nice spot.\n\nThis name is way too generic for a very specialized task. Seeing as the method is called exactly once, we could probably just move the code into the  _determine_floatingips method.\n\n`self._invalidate_floatingips(context, invalid)` is probably a better name?","commit_id":"1d389467fa53df47aba78047cf6a7866e435fbcc"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"34466ff0a38da5b5dc94bbc83e9cde67789fdb11","unresolved":false,"context_lines":[{"line_number":1067,"context_line":"        \"\"\""},{"line_number":1068,"context_line":"        Utility method to delete a list of records."},{"line_number":1069,"context_line":"        \"\"\""},{"line_number":1070,"context_line":"        elevated_context \u003d context.elevated()"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"        if records \u003e 0:"},{"line_number":1073,"context_line":"            for r in records:"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAUH%2F%2FSic%3D","line":1070,"updated":"2014-01-15 12:47:14.000000000","message":"this needs to have \nelevated_context.all_tenants \u003d True","commit_id":"1d389467fa53df47aba78047cf6a7866e435fbcc"}],"designate/cmd/__init__.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":"import eventlet"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"eventlet.monkey_patch(os\u003dFalse, thread\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FywY%3D","line":18,"updated":"2014-01-08 12:01:44.000000000","message":"Debugging leftover?","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"}],"designate/exceptions.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ce48e988d840819ad0c660d614ef1d29068d38b7","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    error_type \u003d \u0027invalid_recordset_location\u0027"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"class InvalidFLoatingIP(Base):"},{"line_number":118,"context_line":"    error_code \u003d 400"},{"line_number":119,"context_line":"    error_type \u003d \u0027invalid_floatingip\u0027"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2Fs7Y%3D","line":117,"updated":"2014-01-09 12:45:19.000000000","message":"This should probably be removed, the schema validation will raise an exception with the appropriate detail, in the same format as all other validation errors.","commit_id":"4577e6ec5832c195d62ac96c593745524a3bc184"}],"designate/network_api/__init__.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"cfg.CONF.register_opts(["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027network_api\u0027, default\u003d\u0027neutron\u0027, help\u003d\u0027Which API to use.\u0027)"},{"line_number":26,"context_line":"])"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"FIP_REGEX \u003d \u0027^(?P\u003cregion\u003e[A-Za-z0-9\\\\.\\\\-_]{1,100}):\u0027 \\"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2Fy%2Bg%3D","line":25,"updated":"2014-01-08 12:01:44.000000000","message":"For backends etc, we use \"backend_driver\" .. we should follow that convention for \"network_driver\"\u0027s..","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fc4d4f816bdf554071a1c36f0353ae200c62423","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"cfg.CONF.register_opts(["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027network_api\u0027, default\u003d\u0027neutron\u0027, help\u003d\u0027Which API to use.\u0027)"},{"line_number":26,"context_line":"])"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"FIP_REGEX \u003d \u0027^(?P\u003cregion\u003e[A-Za-z0-9\\\\.\\\\-_]{1,100}):\u0027 \\"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FwHI%3D","line":25,"in_reply_to":"AAAAUH%2F%2Fy%2Bg%3D","updated":"2014-01-09 07:55:55.000000000","message":"No, backend_driver is already in use.","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"d9d3ef32cc06efad386e89cdfe1f4422d4e919c4","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        raise NotImplementedError"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @staticmethod"},{"line_number":83,"context_line":"    def fip_key_to_data(key):"},{"line_number":84,"context_line":"        m \u003d re.match(FIP_REGEX, key)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        # NOTE: Ensure that the fip matches region:floatingip_id or raise, if"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FhU4%3D","line":83,"updated":"2014-01-12 22:15:44.000000000","message":"This method should be removable, once the API handles the conversion from region:fip-id and back again","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"ee2157fe9eac769b3a9e1217d24acfac91d34294","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        raise NotImplementedError"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @staticmethod"},{"line_number":83,"context_line":"    def fip_key_to_data(key):"},{"line_number":84,"context_line":"        m \u003d re.match(FIP_REGEX, key)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        # NOTE: Ensure that the fip matches region:floatingip_id or raise, if"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FgWA%3D","line":83,"in_reply_to":"AAAAUH%2F%2FhU4%3D","updated":"2014-01-13 09:41:53.000000000","message":"Done","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"d9d3ef32cc06efad386e89cdfe1f4422d4e919c4","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        return m.groups()"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @staticmethod"},{"line_number":94,"context_line":"    def fip_data_to_key(data):"},{"line_number":95,"context_line":"        \"\"\""},{"line_number":96,"context_line":"        Returns the FIP as a string:"},{"line_number":97,"context_line":"        \u003cregion\u003e:\u003cid\u003e - Example: RegionOne:dcb8861c-9fbf-4804-b3e7-934c490d84f3"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FhU0%3D","line":94,"updated":"2014-01-12 22:15:44.000000000","message":"This method should be removable, once the API handles the conversion from region:fip-id and back again","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"ee2157fe9eac769b3a9e1217d24acfac91d34294","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        return m.groups()"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @staticmethod"},{"line_number":94,"context_line":"    def fip_data_to_key(data):"},{"line_number":95,"context_line":"        \"\"\""},{"line_number":96,"context_line":"        Returns the FIP as a string:"},{"line_number":97,"context_line":"        \u003cregion\u003e:\u003cid\u003e - Example: RegionOne:dcb8861c-9fbf-4804-b3e7-934c490d84f3"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FgV8%3D","line":94,"in_reply_to":"AAAAUH%2F%2FhU0%3D","updated":"2014-01-13 09:41:53.000000000","message":"Done","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"}],"designate/network_api/neutron.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"neutron_opts \u003d ["},{"line_number":35,"context_line":"    cfg.ListOpt(\u0027urls\u0027,"},{"line_number":36,"context_line":"               help\u003d\u0027URL to use if None in the ServiceCatalog that is \u0027"},{"line_number":37,"context_line":"                    \u0027passed by the requrest context. Format: \u003cregion\u003e|\u003curl\u003e\u0027),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027timeout\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2Fyzk%3D","line":35,"updated":"2014-01-08 12:01:44.000000000","message":"We should probably use \"endpoints\", as that\u0027s what there called in keystone.","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fc4d4f816bdf554071a1c36f0353ae200c62423","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"neutron_opts \u003d ["},{"line_number":35,"context_line":"    cfg.ListOpt(\u0027urls\u0027,"},{"line_number":36,"context_line":"               help\u003d\u0027URL to use if None in the ServiceCatalog that is \u0027"},{"line_number":37,"context_line":"                    \u0027passed by the requrest context. Format: \u003cregion\u003e|\u003curl\u003e\u0027),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027timeout\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FuUM%3D","line":35,"in_reply_to":"AAAAUH%2F%2Fyzk%3D","updated":"2014-01-09 07:55:55.000000000","message":"Done","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":45,"context_line":"               secret\u003dTrue),"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027admin_tenant_name\u0027,"},{"line_number":47,"context_line":"               help\u003d\u0027tenant name for connecting to neutron in admin context\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027admin_auth_url\u0027,"},{"line_number":49,"context_line":"               help\u003d\u0027auth url for connecting to neutron in admin context\u0027),"},{"line_number":50,"context_line":"    cfg.BoolOpt(\u0027insecure\u0027,"},{"line_number":51,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FyzQ%3D","line":48,"updated":"2014-01-08 12:01:44.000000000","message":"Probably worth matching the keystone middleware option naming here - so - just \"auth_url\"","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fc4d4f816bdf554071a1c36f0353ae200c62423","unresolved":false,"context_lines":[{"line_number":45,"context_line":"               secret\u003dTrue),"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027admin_tenant_name\u0027,"},{"line_number":47,"context_line":"               help\u003d\u0027tenant name for connecting to neutron in admin context\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027admin_auth_url\u0027,"},{"line_number":49,"context_line":"               help\u003d\u0027auth url for connecting to neutron in admin context\u0027),"},{"line_number":50,"context_line":"    cfg.BoolOpt(\u0027insecure\u0027,"},{"line_number":51,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FuUQ%3D","line":48,"in_reply_to":"AAAAUH%2F%2FyzQ%3D","updated":"2014-01-09 07:55:55.000000000","message":"Done","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                    \u0027neutron client requests.\u0027)"},{"line_number":60,"context_line":"]"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"cfg.CONF.register_opts(neutron_opts, group\u003d\u0027neutron\u0027)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def _get_client(context, endpoint\u003dNone):"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2Fy%2BI%3D","line":62,"updated":"2014-01-08 12:01:44.000000000","message":"Convention from other drivers is a group of \"network:neutron\"","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fc4d4f816bdf554071a1c36f0353ae200c62423","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                    \u0027neutron client requests.\u0027)"},{"line_number":60,"context_line":"]"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"cfg.CONF.register_opts(neutron_opts, group\u003d\u0027neutron\u0027)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def _get_client(context, endpoint\u003dNone):"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FuUI%3D","line":62,"in_reply_to":"AAAAUH%2F%2Fy%2BI%3D","updated":"2014-01-09 07:55:55.000000000","message":"Done","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def _get_client(context, endpoint\u003dNone):"},{"line_number":66,"context_line":"    endpoint_url \u003d endpoint or CONF.neutron.url"},{"line_number":67,"context_line":"    params \u003d {"},{"line_number":68,"context_line":"        \u0027endpoint_url\u0027: endpoint_url,"},{"line_number":69,"context_line":"        \u0027timeout\u0027: CONF.neutron.timeout,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2Fy0E%3D","line":66,"updated":"2014-01-08 12:01:44.000000000","message":"there is no \"url\" config option","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fc4d4f816bdf554071a1c36f0353ae200c62423","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def _get_client(context, endpoint\u003dNone):"},{"line_number":66,"context_line":"    endpoint_url \u003d endpoint or CONF.neutron.url"},{"line_number":67,"context_line":"    params \u003d {"},{"line_number":68,"context_line":"        \u0027endpoint_url\u0027: endpoint_url,"},{"line_number":69,"context_line":"        \u0027timeout\u0027: CONF.neutron.timeout,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FuUE%3D","line":66,"in_reply_to":"AAAAUH%2F%2Fy0E%3D","updated":"2014-01-09 07:55:55.000000000","message":"Done","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    return clientv20.Client(**params)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"def get_client(context, endpoint\u003dNone, admin\u003dFalse):"},{"line_number":87,"context_line":"    # NOTE(dims): We need to use admin token, let us cache a"},{"line_number":88,"context_line":"    # thread local copy for re-using this client"},{"line_number":89,"context_line":"    # multiple times and to avoid excessive calls"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2Fyzs%3D","line":86,"updated":"2014-01-08 12:01:44.000000000","message":"This seems unnecessary? I had to delete this method, and rename the _get_client method to get_client to get something working!","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fc4d4f816bdf554071a1c36f0353ae200c62423","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    return clientv20.Client(**params)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"def get_client(context, endpoint\u003dNone, admin\u003dFalse):"},{"line_number":87,"context_line":"    # NOTE(dims): We need to use admin token, let us cache a"},{"line_number":88,"context_line":"    # thread local copy for re-using this client"},{"line_number":89,"context_line":"    # multiple times and to avoid excessive calls"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FuUA%3D","line":86,"in_reply_to":"AAAAUH%2F%2Fyzs%3D","updated":"2014-01-09 07:55:55.000000000","message":"It\u0027s working..","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    if admin or context.is_admin:"},{"line_number":95,"context_line":"        if not hasattr(local.strong_store, \u0027neutron_client\u0027):"},{"line_number":96,"context_line":"            local.strong_store.neutron_client \u003d _get_client("},{"line_number":97,"context_line":"                context, endpoint\u003dendpoint, token\u003dNone)"},{"line_number":98,"context_line":"        return local.strong_store.neutron_client"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    # We got a user token that we can use that as-is"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2Fyz8%3D","line":97,"updated":"2014-01-08 12:01:44.000000000","message":"_get_client doesn\u0027t take a token param","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fc4d4f816bdf554071a1c36f0353ae200c62423","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    if admin or context.is_admin:"},{"line_number":95,"context_line":"        if not hasattr(local.strong_store, \u0027neutron_client\u0027):"},{"line_number":96,"context_line":"            local.strong_store.neutron_client \u003d _get_client("},{"line_number":97,"context_line":"                context, endpoint\u003dendpoint, token\u003dNone)"},{"line_number":98,"context_line":"        return local.strong_store.neutron_client"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    # We got a user token that we can use that as-is"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FuT8%3D","line":97,"in_reply_to":"AAAAUH%2F%2Fyz8%3D","updated":"2014-01-09 07:55:55.000000000","message":"Done","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                e_region, e \u003d u.split(\u0027|\u0027)"},{"line_number":120,"context_line":"                # Filter if region is given"},{"line_number":121,"context_line":"                if e_region is not None and e_region !\u003d region:"},{"line_number":122,"context_line":"                    continue"},{"line_number":123,"context_line":"                endpoints.append((e, e_region))"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"            if not endpoints:"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FyzM%3D","line":122,"updated":"2014-01-08 12:01:44.000000000","message":"I had to comment this if block out for anything to work.. :)","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fc4d4f816bdf554071a1c36f0353ae200c62423","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                e_region, e \u003d u.split(\u0027|\u0027)"},{"line_number":120,"context_line":"                # Filter if region is given"},{"line_number":121,"context_line":"                if e_region is not None and e_region !\u003d region:"},{"line_number":122,"context_line":"                    continue"},{"line_number":123,"context_line":"                endpoints.append((e, e_region))"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"            if not endpoints:"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FuI8%3D","line":122,"in_reply_to":"AAAAUH%2F%2FyzM%3D","updated":"2014-01-09 07:55:55.000000000","message":"Works fine for me .","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ff78b41c54f5b3553381350568458132cdcce5a4","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            return endpoints"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        return self._endpoints_from_catalog("},{"line_number":131,"context_line":"            context, \u0027network\u0027, \u0027publicURL\u0027, region\u003dregion)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def list_floatingips(self, context, region\u003dNone):"},{"line_number":134,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FyzE%3D","line":131,"updated":"2014-01-08 12:01:44.000000000","message":"The URL type should be configurable.. Most deployments will want internalURL for example.","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fc4d4f816bdf554071a1c36f0353ae200c62423","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            return endpoints"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        return self._endpoints_from_catalog("},{"line_number":131,"context_line":"            context, \u0027network\u0027, \u0027publicURL\u0027, region\u003dregion)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def list_floatingips(self, context, region\u003dNone):"},{"line_number":134,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FuIo%3D","line":131,"in_reply_to":"AAAAUH%2F%2FyzE%3D","updated":"2014-01-09 07:55:55.000000000","message":"Done","commit_id":"f9d18701794138e7fdef01ec12e665714e4deca4"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"751f9e4a6135f801b1c3378d53162077f22b692c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    return clientv20.Client(**params)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def get_client(context, endpoint\u003dNone, admin\u003dFalse):"},{"line_number":88,"context_line":"    # NOTE(dims): We need to use admin token, let us cache a"},{"line_number":89,"context_line":"    # thread local copy for re-using this client"},{"line_number":90,"context_line":"    # multiple times and to avoid excessive calls"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2FlNw%3D","line":87,"updated":"2014-01-10 21:37:24.000000000","message":"I had to remove this to get the call to work\n\nI replaced it with the _call method above","commit_id":"4a0e90480b9f9090f0f102670c94a23015ef158b"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"a3b2003b11ab6c7cb6feafafdfe183ff0644baf9","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    return clientv20.Client(**params)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def get_client(context, endpoint\u003dNone, admin\u003dFalse):"},{"line_number":88,"context_line":"    # NOTE(dims): We need to use admin token, let us cache a"},{"line_number":89,"context_line":"    # thread local copy for re-using this client"},{"line_number":90,"context_line":"    # multiple times and to avoid excessive calls"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Fi5k%3D","line":87,"in_reply_to":"AAAAUH%2F%2FlNw%3D","updated":"2014-01-12 21:23:22.000000000","message":"I fixed it *Thinks*","commit_id":"4a0e90480b9f9090f0f102670c94a23015ef158b"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"1dbeb900a97fe114c093335ddcca65fdd42346b2","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    # will go away once BP auth-plugins is implemented."},{"line_number":93,"context_line":"    # That blue print will ensure that tokens can be shared"},{"line_number":94,"context_line":"    # across clients as well"},{"line_number":95,"context_line":"    if admin or context.is_admin:"},{"line_number":96,"context_line":"        if not hasattr(local.strong_store, \u0027neutron_client\u0027):"},{"line_number":97,"context_line":"            local.strong_store.neutron_client \u003d _get_client("},{"line_number":98,"context_line":"                context, endpoint\u003dendpoint)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2FlWw%3D","line":95,"updated":"2014-01-10 19:39:30.000000000","message":"This should be changed to: \n\n    if CONF[\u0027network_api:neutron\u0027].admin_username is not None:\n\nAdditionally, with multiple regions, the same client instance is returned everytime.. The net result is only 1 region get\u0027s queried.\n\nCan we remove the caching is local.store all together, and leave TODO note for adding it later.","commit_id":"4a0e90480b9f9090f0f102670c94a23015ef158b"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"a3b2003b11ab6c7cb6feafafdfe183ff0644baf9","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    # will go away once BP auth-plugins is implemented."},{"line_number":93,"context_line":"    # That blue print will ensure that tokens can be shared"},{"line_number":94,"context_line":"    # across clients as well"},{"line_number":95,"context_line":"    if admin or context.is_admin:"},{"line_number":96,"context_line":"        if not hasattr(local.strong_store, \u0027neutron_client\u0027):"},{"line_number":97,"context_line":"            local.strong_store.neutron_client \u003d _get_client("},{"line_number":98,"context_line":"                context, endpoint\u003dendpoint)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Fi5o%3D","line":95,"in_reply_to":"AAAAUH%2F%2FlWw%3D","updated":"2014-01-12 21:23:22.000000000","message":"Done","commit_id":"4a0e90480b9f9090f0f102670c94a23015ef158b"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"751f9e4a6135f801b1c3378d53162077f22b692c","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            for u in CONF[\u0027network_api:neutron\u0027].endpoints:"},{"line_number":120,"context_line":"                e_region, e \u003d u.split(\u0027|\u0027)"},{"line_number":121,"context_line":"                # Filter if region is given"},{"line_number":122,"context_line":"                if e_region is not None and e_region !\u003d region:"},{"line_number":123,"context_line":"                    continue"},{"line_number":124,"context_line":"                endpoints.append((e, e_region))"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2FmNg%3D","line":122,"updated":"2014-01-10 21:37:24.000000000","message":"this line prevents anyone from defining their own endpoints... as when it is split it is not \u0027None\u0027 and, as the region is defaulted to \u0027None\u0027 as well, the code continues without appending the endpoints.","commit_id":"4a0e90480b9f9090f0f102670c94a23015ef158b"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"a3b2003b11ab6c7cb6feafafdfe183ff0644baf9","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            for u in CONF[\u0027network_api:neutron\u0027].endpoints:"},{"line_number":120,"context_line":"                e_region, e \u003d u.split(\u0027|\u0027)"},{"line_number":121,"context_line":"                # Filter if region is given"},{"line_number":122,"context_line":"                if e_region is not None and e_region !\u003d region:"},{"line_number":123,"context_line":"                    continue"},{"line_number":124,"context_line":"                endpoints.append((e, e_region))"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Fi5g%3D","line":122,"in_reply_to":"AAAAUH%2F%2FmNg%3D","updated":"2014-01-12 21:23:22.000000000","message":"Done","commit_id":"4a0e90480b9f9090f0f102670c94a23015ef158b"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"751f9e4a6135f801b1c3378d53162077f22b692c","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        for endpoint, region in endpoints:"},{"line_number":156,"context_line":"            tg.add_thread(_call, endpoint, region,"},{"line_number":157,"context_line":"                          tenant_id\u003dcontext.tenant_id)"},{"line_number":158,"context_line":"        tg.wait()"},{"line_number":159,"context_line":"        return data"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2FlHc%3D","line":158,"updated":"2014-01-10 21:37:24.000000000","message":"we need to make sure that all neutrons return successfully before returning the data.\n\nCurrently if one region fails, it just shows the fip\u0027s from one region.","commit_id":"4a0e90480b9f9090f0f102670c94a23015ef158b"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"a3b2003b11ab6c7cb6feafafdfe183ff0644baf9","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        for endpoint, region in endpoints:"},{"line_number":156,"context_line":"            tg.add_thread(_call, endpoint, region,"},{"line_number":157,"context_line":"                          tenant_id\u003dcontext.tenant_id)"},{"line_number":158,"context_line":"        tg.wait()"},{"line_number":159,"context_line":"        return data"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUH%2F%2Fhtg%3D","line":158,"in_reply_to":"AAAAUH%2F%2FlHc%3D","updated":"2014-01-12 21:23:22.000000000","message":"Done","commit_id":"4a0e90480b9f9090f0f102670c94a23015ef158b"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"d9d3ef32cc06efad386e89cdfe1f4422d4e919c4","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    raise exceptions.Unauthorized()"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"class API(BaseAPI):"},{"line_number":98,"context_line":"    \"\"\""},{"line_number":99,"context_line":"    Interact with the Neutron API"},{"line_number":100,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FhUo%3D","line":97,"updated":"2014-01-12 22:15:44.000000000","message":"Can we add LOTS of debug and info level logging throughout this class?\n\nThings are most likely to go wrong at the boundaries between systems.. Any log messages we add here are going to be worth their weight in gold ;)","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"ee2157fe9eac769b3a9e1217d24acfac91d34294","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    raise exceptions.Unauthorized()"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"class API(BaseAPI):"},{"line_number":98,"context_line":"    \"\"\""},{"line_number":99,"context_line":"    Interact with the Neutron API"},{"line_number":100,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2FgU4%3D","line":97,"in_reply_to":"AAAAUH%2F%2FhUo%3D","updated":"2014-01-13 09:41:53.000000000","message":"Done","commit_id":"2ea38b0f924d588753a3588364a032ddb10399a6"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"9eb1006bc02141f8c20b3c808d32bb723b6784f2","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    if context.auth_token:"},{"line_number":93,"context_line":"        return _get_client(context, endpoint\u003dendpoint)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    raise exceptions.Unauthorized()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class API(BaseAPI):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F%2FfKQ%3D","line":95,"updated":"2014-01-13 13:17:19.000000000","message":"There is no Unauthorized exception - eg:\n\n2014-01-13 12:11:00.929 13688 TRACE designate.openstack.common.threadgroup   File \"/home/graham/HP/designate/designate/network_api/neutron.py\", line 95, in get_client\n2014-01-13 12:11:00.929 13688 TRACE designate.openstack.common.threadgroup     raise exceptions.Unauthorized()\n2014-01-13 12:11:00.929 13688 TRACE designate.openstack.common.threadgroup AttributeError: \u0027module\u0027 object has no attribute \u0027Unauthorized\u0027\n\nAlso, not sure that a plain designate Unauthorized response is correct... Its more of an external auth issue.","commit_id":"8ef1d10a36819778730b3226582dd401ea293191"}],"designate/resources/schemas/v2/floatingip.json":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"0e0dea5319e03cf1506541087f38dbfce17acdb4","unresolved":false,"context_lines":[{"line_number":22,"context_line":"                    \"pattern\": \"^[A-Za-z0-9\\\\.\\\\-_]{1,100}:([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$\","},{"line_number":23,"context_line":"                    \"readOnly\": true"},{"line_number":24,"context_line":"                },"},{"line_number":25,"context_line":"                \"ptrdname\": {\"$ref\": \"rdata/ptr#/properties/ptrdname\"},"},{"line_number":26,"context_line":"                \"description\": {"},{"line_number":27,"context_line":"                    \"type\": [\"string\", \"null\"],"},{"line_number":28,"context_line":"                    \"description\": \"Description for the PTR\","}],"source_content_type":"application/json","patch_set":20,"id":"AAAAUH%2F%2Fs7s%3D","line":25,"updated":"2014-01-09 12:44:14.000000000","message":"let\u0027s dereference this and see if it validates correctly.","commit_id":"4577e6ec5832c195d62ac96c593745524a3bc184"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"60b8fb3571d0cf098c5dcddf7b977b103b2c6887","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                    \"description\": \"Date and time of Zone creation\","},{"line_number":43,"context_line":"                    \"format\": \"date-time\","},{"line_number":44,"context_line":"                    \"readOnly\": true"},{"line_number":45,"context_line":"                },"},{"line_number":46,"context_line":"                \"updated_at\": {"},{"line_number":47,"context_line":"                    \"type\": [\"string\", \"null\"],"},{"line_number":48,"context_line":"                    \"description\": \"Date and time of last zone modification\","}],"source_content_type":"application/json","patch_set":35,"id":"AAAAUH%2F%2FSdc%3D","line":45,"updated":"2014-01-15 12:59:34.000000000","message":"created_at should be removed, since Neutron doesn\u0027t give us this info.","commit_id":"1d389467fa53df47aba78047cf6a7866e435fbcc"}],"designate/resources/schemas/v2/floatingips.json":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"76abfdd1152d74e2b9a134ea9689fde484e0a71f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    \"required\": [\"floatingips\"],"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    \"properties\": {"},{"line_number":13,"context_line":"        \"recordsets\": {"},{"line_number":14,"context_line":"            \"type\": \"array\","},{"line_number":15,"context_line":"            \"description\": \"Floating IP\","},{"line_number":16,"context_line":"            \"items\": {\"$ref\": \"floatingips#/properties/flaotingip\"}"}],"source_content_type":"application/json","patch_set":1,"id":"AAAATn%2F%2Bec4%3D","line":13,"updated":"2013-11-26 16:06:41.000000000","message":"Should this be renamed to floatingips?","commit_id":"eb61da0de9806e7cd586bcdf10b67084002940b6"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"76abfdd1152d74e2b9a134ea9689fde484e0a71f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"        \"recordsets\": {"},{"line_number":14,"context_line":"            \"type\": \"array\","},{"line_number":15,"context_line":"            \"description\": \"Floating IP\","},{"line_number":16,"context_line":"            \"items\": {\"$ref\": \"floatingips#/properties/flaotingip\"}"},{"line_number":17,"context_line":"        },"},{"line_number":18,"context_line":"        \"links\": {"},{"line_number":19,"context_line":"            \"type\": \"object\","}],"source_content_type":"application/json","patch_set":1,"id":"AAAATn%2F%2BedQ%3D","line":16,"updated":"2013-11-26 16:06:41.000000000","message":"Type in the last word above \u003d \"flaotingip\"","commit_id":"eb61da0de9806e7cd586bcdf10b67084002940b6"}],"designate/storage/impl_sqlalchemy/models.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"7b08fa586164751c772883ca59e02e24fddac3c5","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    managed_plugin_name \u003d Column(Unicode(50), default\u003dNone, nullable\u003dTrue)"},{"line_number":126,"context_line":"    managed_resource_type \u003d Column(Unicode(50), default\u003dNone, nullable\u003dTrue)"},{"line_number":127,"context_line":"    managed_resource_id \u003d Column(UUID, default\u003dNone, nullable\u003dTrue)"},{"line_number":128,"context_line":"    managed_tenant_id \u003d Column(UUID, default\u003dNone, nullable\u003dTrue)"},{"line_number":129,"context_line":"    status \u003d Column(Enum(name\u003d\u0027resource_statuses\u0027, *RESOURCE_STATUSES),"},{"line_number":130,"context_line":"                    nullable\u003dFalse, server_default\u003d\u0027ACTIVE\u0027,"},{"line_number":131,"context_line":"                    default\u003d\u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BaY4%3D","line":128,"updated":"2013-11-26 11:41:59.000000000","message":"We can\u0027t use a UUID here. Not all KS API implementations use UUIDs.\n\ne.g. HP Cloud uses integers, and according to the first RAX doc I found with a tenant_id in it, they also use integers.","commit_id":"eb61da0de9806e7cd586bcdf10b67084002940b6"}],"designate/tests/test_central/test_service.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"ab4fa75ae57e49f0daff80ab9ee5bd85239189a4","unresolved":false,"context_lines":[{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"        # Now give the fip id to tenant \u0027b\u0027 and see that it get\u0027s deleted"},{"line_number":1475,"context_line":"        self.network_api.fake.allocate_floatingip("},{"line_number":1476,"context_line":"            context_b.tenant_id, fip[\u0027id\u0027])"},{"line_number":1477,"context_line":""},{"line_number":1478,"context_line":"    def test_list_floatingips_no_allocations(self):"},{"line_number":1479,"context_line":"        context \u003d self.get_context(tenant\u003d\u0027a\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAUH%2F%2FXus%3D","line":1476,"updated":"2014-01-14 14:47:29.000000000","message":"We\u0027re not actually testing that TenantB requesting the IP invalidates here? Looks like you forgot to finish the method :D","commit_id":"dd7f17340221f368ff63dd094151e514e896883d"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"5a8e97f63c08cc64503e7562e25837189a4f809f","unresolved":false,"context_lines":[{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"        # Now give the fip id to tenant \u0027b\u0027 and see that it get\u0027s deleted"},{"line_number":1475,"context_line":"        self.network_api.fake.allocate_floatingip("},{"line_number":1476,"context_line":"            context_b.tenant_id, fip[\u0027id\u0027])"},{"line_number":1477,"context_line":""},{"line_number":1478,"context_line":"    def test_list_floatingips_no_allocations(self):"},{"line_number":1479,"context_line":"        context \u003d self.get_context(tenant\u003d\u0027a\u0027)"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAUH%2F%2FWvU%3D","line":1476,"updated":"2014-01-14 17:56:36.000000000","message":"We\u0027re not actually testing that TenantB requesting the IP invalidates here? Looks like you forgot to finish the method.","commit_id":"7b5253b9b4b47a43cb0003117f6045dbdaad6b21"}],"etc/designate/designate.conf.sample":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"9eb1006bc02141f8c20b3c808d32bb723b6784f2","unresolved":false,"context_lines":[{"line_number":55,"context_line":"#max_record_name_len \u003d 255"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"# Email to use for managed resources like domains created by the FloatingIP API"},{"line_number":58,"context_line":"# managed_email \u003d root@example.io."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"#-----------------------"},{"line_number":61,"context_line":"# API Service"}],"source_content_type":"application/octet-stream","patch_set":28,"id":"AAAAUH%2F%2Fe5Y%3D","line":58,"updated":"2014-01-13 13:17:19.000000000","message":"Need to add managed_resource_tenant_id as well here.\n\nAlso, one needs to change to be consistent with the other.\n\nI personally prefer managed_resource, so this should go to \u0027managed_resource_email\u0027","commit_id":"8ef1d10a36819778730b3226582dd401ea293191"}],"setup.cfg":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"7b08fa586164751c772883ca59e02e24fddac3c5","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    fake \u003d designate.backend.impl_fake:FakeBackend"},{"line_number":70,"context_line":"    nsd4slave \u003d designate.backend.impl_nsd4slave:NSD4SlaveBackend"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"designate.ptr_api \u003d"},{"line_number":73,"context_line":"    neutron \u003d designate.central.ptr_api.neutron:API"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"designate.quota \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"AAAATn%2F%2BaYo%3D","line":72,"updated":"2013-11-26 11:41:59.000000000","message":"I\u0027m really not liking \"ptr_api\"\n\nHow about \"network_api\" with the methods inside indicating their use for the floating IP stuff (But - PTR is still the wrong word, as discussed before! `floatingip_ptr` maybe, but not `ptr`)","commit_id":"eb61da0de9806e7cd586bcdf10b67084002940b6"}]}
