)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"7c6d8352659469cdbfcd13b03a0e3da12aa70858","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Asynchronous Zone Import"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* Creates /v2/zones/tasks/imports, which allows users to view imports as resources"},{"line_number":10,"context_line":"* Brings back export in /v2/zones/id/tasks/export unchanged"},{"line_number":11,"context_line":"* Creates new database table zone_tasks for asynchronous tasks related to zones, along"},{"line_number":12,"context_line":"with the associated objects/adapters"},{"line_number":13,"context_line":"* Imports are done by passing over the request body, creating an async record in the db,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1aca2d91_35233e58","line":10,"updated":"2015-05-09 16:39:41.000000000","message":"I think I\u0027d like to see export happen in a separate review, as it needs similar aync treatment IMO, so we should bring it back into the V2 API with that from the start..","commit_id":"9297c62336cca466120d873af445d36c701062c7"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"cc5eda2461def998e59b4ad20bdbeb02c04b808b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Asynchronous Zone Import"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* Creates /v2/zones/tasks/imports, which allows users to view imports as resources"},{"line_number":10,"context_line":"* Brings back export in /v2/zones/id/tasks/export unchanged"},{"line_number":11,"context_line":"* Creates new database table zone_tasks for asynchronous tasks related to zones, along"},{"line_number":12,"context_line":"with the associated objects/adapters"},{"line_number":13,"context_line":"* Imports are done by passing over the request body, creating an async record in the db,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9af37de9_12eeaaec","line":10,"in_reply_to":"1aca2d91_35233e58","updated":"2015-05-11 15:29:56.000000000","message":"So I haven\u0027t done *extensive* testing of export, but it seemed to me like getting the SQL query right to get the data should be good enough for our needs, rather than making it fully async. \n\nI suppose you could add some cool functionality to push out all of a user\u0027s zones to swift or something.","commit_id":"9297c62336cca466120d873af445d36c701062c7"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"8e119b94b491a2bc4a9075466ab9d618e7ca9711","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Asynchronous Zone Import"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* Creates /v2/zones/tasks/imports, which allows users to view imports as resources"},{"line_number":10,"context_line":"* Brings back export in /v2/zones/id/tasks/export unchanged"},{"line_number":11,"context_line":"* Creates new database table zone_tasks for asynchronous tasks related to zones, along"},{"line_number":12,"context_line":"with the associated objects/adapters"},{"line_number":13,"context_line":"* Imports are done by passing over the request body, creating an async record in the db,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a0c5dc1_1f68e9f4","line":10,"in_reply_to":"9af37de9_12eeaaec","updated":"2015-05-12 11:56:12.000000000","message":"Even with zones of, say half a million records? (I\u0027ve, sadly, seen some zones approaching this recently!) Once we land a feature in the V2 API now, it\u0027s considered supported and can\u0027t have API incompatible changes made to it.. So, unless were sure the export wont need to be made aync, I\u0027d much rather that it out for now!","commit_id":"9297c62336cca466120d873af445d36c701062c7"}],"contrib/devstack/lib/designate":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"684682f82a9cf8a0db8502d25b36325d09582348","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    iniset $DESIGNATE_CONF service:api enable_api_v1 True"},{"line_number":147,"context_line":"    iniset $DESIGNATE_CONF service:api enable_api_v2 True"},{"line_number":148,"context_line":"    iniset $DESIGNATE_CONF service:api enable_api_admin True"},{"line_number":149,"context_line":"    iniset $DESIGNATE_CONF service:api enable_v2_zone_import True"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    # mDNS Configuration"},{"line_number":152,"context_line":"    iniset $DESIGNATE_CONF service:mdns host $DESIGNATE_SERVICE_HOST"}],"source_content_type":"application/octet-stream","patch_set":11,"id":"5afe65bd_2bf6ab8f","line":149,"updated":"2015-06-02 17:09:43.000000000","message":"Probably not needed now that the option is gone ;)","commit_id":"8b6f90bfcd6353baec79dda5d04234ce1ee5ff31"}],"designate/api/__init__.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"1ea4ab6b2ac48343747c00f0a25d49dc36ce4876","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    cfg.BoolOpt(\u0027enable-api-v1\u0027, default\u003dTrue),"},{"line_number":39,"context_line":"    cfg.BoolOpt(\u0027enable-api-v2\u0027, default\u003dFalse),"},{"line_number":40,"context_line":"    cfg.BoolOpt(\u0027enable-api-admin\u0027, default\u003dFalse),"},{"line_number":41,"context_line":"    cfg.BoolOpt(\u0027enable_v2_zone_import\u0027, default\u003dFalse),"},{"line_number":42,"context_line":"    cfg.IntOpt(\u0027max_header_line\u0027, default\u003d16384,"},{"line_number":43,"context_line":"               help\u003d\"Maximum line size of message headers to be accepted. \""},{"line_number":44,"context_line":"                    \"max_header_line may need to be increased when using \""}],"source_content_type":"text/x-python","patch_set":10,"id":"5afe65bd_57b07243","line":41,"updated":"2015-06-02 15:46:59.000000000","message":"I know it was me who suggested a feature flag, but, looking at this I\u0027m not so sure anymore!\n\nCan we instead rely on policy to disable the feature?","commit_id":"80e94da0cf45d5ef296d5e44a29600b562b9d56b"}],"designate/central/service.py":[{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"07970903450e6c21b7f52a8349ce0c7d1545ecc5","unresolved":false,"context_lines":[{"line_number":2458,"context_line":""},{"line_number":2459,"context_line":"    # Zone Import Methods"},{"line_number":2460,"context_line":"    @notification(\u0027dns.zone_import.create\u0027)"},{"line_number":2461,"context_line":"    @transaction"},{"line_number":2462,"context_line":"    def create_zone_import(self, context, request_body):"},{"line_number":2463,"context_line":"        target \u003d {\u0027tenant_id\u0027: context.tenant}"},{"line_number":2464,"context_line":"        policy.check(\u0027create_zone_import\u0027, context, target)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_d8a20999","line":2461,"updated":"2015-05-08 21:56:19.000000000","message":"I thought it might have been because of this, but it wasn\u0027t.","commit_id":"9297c62336cca466120d873af445d36c701062c7"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"a31e6b3d0e99c85ce07b42349a7a717813ab400a","unresolved":false,"context_lines":[{"line_number":2476,"context_line":"                                                            zone_import)"},{"line_number":2477,"context_line":""},{"line_number":2478,"context_line":"        self.tg.add_thread(self._import_zone, context, created_zone_import,"},{"line_number":2479,"context_line":"                    request_body)"},{"line_number":2480,"context_line":""},{"line_number":2481,"context_line":"        return created_zone_import"},{"line_number":2482,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_1829a137","line":2479,"updated":"2015-05-08 21:47:34.000000000","message":"So....for some reason, this doesn\u0027t yield to the return statement on the next line. At It waits until roughly line 2501 to return. Even though I can see via ghetto debug statements that the thread successfully kicks off. It seems like central is locked up doing the import and doesn\u0027t do the `return created_zone_import`","commit_id":"9297c62336cca466120d873af445d36c701062c7"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"cc5eda2461def998e59b4ad20bdbeb02c04b808b","unresolved":false,"context_lines":[{"line_number":2476,"context_line":"                                                            zone_import)"},{"line_number":2477,"context_line":""},{"line_number":2478,"context_line":"        self.tg.add_thread(self._import_zone, context, created_zone_import,"},{"line_number":2479,"context_line":"                    request_body)"},{"line_number":2480,"context_line":""},{"line_number":2481,"context_line":"        return created_zone_import"},{"line_number":2482,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9af37de9_6ff9724d","line":2479,"in_reply_to":"1aca2d91_15a3a29e","updated":"2015-05-11 15:29:56.000000000","message":"So adding time.sleep(0.1) did make it yield and return the request right way. But like you said, central just locked up shortly after.\n\nAs a side note, when using worker processes, it seemed to work great when the request hit the worker, but it seemed to hit the locked up process just as often. \n\nUsing multiprocessing.Process seemed promising at first, but there are some Oslo messaging issues that seem to arise that prevent the forked process from interacting with the queue. http://docs.openstack.org/developer/oslo.messaging/transport.html#forking-processes-and-oslo-messaging-transport-objects\n\nDo you have anything in mind for executing these background threads?","commit_id":"9297c62336cca466120d873af445d36c701062c7"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"7c6d8352659469cdbfcd13b03a0e3da12aa70858","unresolved":false,"context_lines":[{"line_number":2476,"context_line":"                                                            zone_import)"},{"line_number":2477,"context_line":""},{"line_number":2478,"context_line":"        self.tg.add_thread(self._import_zone, context, created_zone_import,"},{"line_number":2479,"context_line":"                    request_body)"},{"line_number":2480,"context_line":""},{"line_number":2481,"context_line":"        return created_zone_import"},{"line_number":2482,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_15a3a29e","line":2479,"in_reply_to":"1aca2d91_1829a137","updated":"2015-05-09 16:39:41.000000000","message":"I\u0027m stretching my memory of how eventlet/thread groups interact here, but, as eventlet isn\u0027t true multi-threading (it\u0027s \"cooperative multitasking\"), code must actively attempt to yield to another thread (hence cooperative is in the name :)).\n\nEventlet patches all the I/O causing system calls to yield after the I/O request is performed, giving us enough yield\u0027s throughout our normal execution to do what we want.. But, as this thread contains no I/O until after the whole zonefile has been parsed etc, we\u0027ll see central block like this.\n\nOne \"solution\", which is really just validating the above theory, and masking the actual issue, is to have the _import_zone() thread immediately issue a time.sleep(0), which will ensure eventlet yields, giving the other greenthreads a chance to execute.\n\nI say that\u0027s masking the actual issue because, while the create_zone_import call will immediately return rather than delay, this instance of central will still lock-up for the same length of time once eventlet circles back to the _import_zone thread. \n\nAssuming the theory is correct, we\u0027ll have to work out a better plan for executing CPU bound background threads.","commit_id":"9297c62336cca466120d873af445d36c701062c7"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"8e119b94b491a2bc4a9075466ab9d618e7ca9711","unresolved":false,"context_lines":[{"line_number":2476,"context_line":"                                                            zone_import)"},{"line_number":2477,"context_line":""},{"line_number":2478,"context_line":"        self.tg.add_thread(self._import_zone, context, created_zone_import,"},{"line_number":2479,"context_line":"                    request_body)"},{"line_number":2480,"context_line":""},{"line_number":2481,"context_line":"        return created_zone_import"},{"line_number":2482,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a0c5dc1_9f097934","line":2479,"in_reply_to":"9af37de9_6ff9724d","updated":"2015-05-12 11:56:12.000000000","message":"Eventlet\u0027s tpool should be a good start, failing that (since eventlet\u0027s tpool is, flawed, as there is exactly 1 pool of a fixed size), we can fallback to the native threading lib with `eventlet.patcher.import_original(\u0027threading\u0027). But - I\u0027d land this with tpool to start, and if we believe it\u0027s worth it after, fallback.","commit_id":"9297c62336cca466120d873af445d36c701062c7"},{"author":{"_account_id":4894,"name":"stanzgy","email":"stanzgy@gmail.com","username":"stanzgy"},"change_message_id":"a18b5f73971deb3fd02a4bf2bad34d4b381c2e5e","unresolved":false,"context_lines":[{"line_number":2521,"context_line":""},{"line_number":2522,"context_line":"        # Execute the import in a real Python thread"},{"line_number":2523,"context_line":"        domain, zone_import \u003d tpool.execute(_import, self, context,"},{"line_number":2524,"context_line":"            zone_import, request_body)"},{"line_number":2525,"context_line":""},{"line_number":2526,"context_line":"        try:"},{"line_number":2527,"context_line":"            zone \u003d self.create_domain(context, domain)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_2f15623f","line":2524,"range":{"start_line":2524,"start_character":12,"end_line":2524,"end_character":23},"updated":"2015-05-18 03:09:57.000000000","message":"Insert a \"time.sleep(5)\" here would cause this test fail 100%. The sonar may fail because of only 1.5s(in total) timeout of wait_for_import.","commit_id":"72f31c1091f6adb479b250ae60b3f2661edb6a97"},{"author":{"_account_id":11662,"name":"Paul Glass","email":"paul.glass@rackspace.com","username":"pglass"},"change_message_id":"72689b10c5d1f19691811c10ceafafaa081262ae","unresolved":false,"context_lines":[{"line_number":2534,"context_line":"            zone_import.message \u003d \u0027Duplicate zone.\u0027"},{"line_number":2535,"context_line":"        except exceptions.InvalidTTL as e:"},{"line_number":2536,"context_line":"            zone_import.status \u003d \u0027ERROR\u0027"},{"line_number":2537,"context_line":"            zone_import.message \u003d e.message"},{"line_number":2538,"context_line":"        finally:"},{"line_number":2539,"context_line":"            self.update_zone_import(context, zone_import)"},{"line_number":2540,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_971d44c0","line":2537,"updated":"2015-05-29 19:56:10.000000000","message":"Need to catch other exceptions here.","commit_id":"240fd1d462b72fd3ecb6cfacdcea4ffc66b52297"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"3641e2af5967ecee31477746dd956a097dd8415c","unresolved":false,"context_lines":[{"line_number":869,"context_line":""},{"line_number":870,"context_line":"        if domain.obj_attr_is_set(\u0027recordsets\u0027):"},{"line_number":871,"context_line":"            for rrset in domain.recordsets:"},{"line_number":872,"context_line":"                time.sleep(0)"},{"line_number":873,"context_line":"                self._create_recordset_in_storage("},{"line_number":874,"context_line":"                    context, domain, rrset, increment_serial\u003dFalse)"},{"line_number":875,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5afe65bd_d7f58383","line":872,"updated":"2015-06-02 15:39:52.000000000","message":"Should probably add a comment here. Will wait for other review comments to avoid more patchsets.","commit_id":"80e94da0cf45d5ef296d5e44a29600b562b9d56b"}],"designate/objects/adapters/api_v2/base.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"7c6d8352659469cdbfcd13b03a0e3da12aa70858","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            if list_object.total_count is not None:"},{"line_number":51,"context_line":"                metadata[\u0027total_count\u0027] \u003d list_object.total_count"},{"line_number":52,"context_line":"            if metadata:"},{"line_number":53,"context_line":"                r_list[\u0027metadata\u0027] \u003d metadata"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        return r_list"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_75e536da","line":53,"updated":"2015-05-09 16:39:41.000000000","message":"I think the metadata field should always be attached, even when there\u0027s no metadata to mention.. (i.e keep the structure of the API the same regardless!)","commit_id":"9297c62336cca466120d873af445d36c701062c7"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"cc5eda2461def998e59b4ad20bdbeb02c04b808b","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            if list_object.total_count is not None:"},{"line_number":51,"context_line":"                metadata[\u0027total_count\u0027] \u003d list_object.total_count"},{"line_number":52,"context_line":"            if metadata:"},{"line_number":53,"context_line":"                r_list[\u0027metadata\u0027] \u003d metadata"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        return r_list"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9af37de9_efba026e","line":53,"in_reply_to":"1aca2d91_75e536da","updated":"2015-05-11 15:29:56.000000000","message":"Agreed.","commit_id":"9297c62336cca466120d873af445d36c701062c7"},{"author":{"_account_id":4894,"name":"stanzgy","email":"stanzgy@gmail.com","username":"stanzgy"},"change_message_id":"1b260bf8f1bc76ceee076c2d310d4061af069720","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            metadata \u003d {}"},{"line_number":50,"context_line":"            if list_object.total_count is not None:"},{"line_number":51,"context_line":"                metadata[\u0027total_count\u0027] \u003d list_object.total_count"},{"line_number":52,"context_line":"            if metadata:"},{"line_number":53,"context_line":"                r_list[\u0027metadata\u0027] \u003d metadata"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        return r_list"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_4f383ad3","line":52,"range":{"start_line":52,"start_character":15,"end_line":52,"end_character":23},"updated":"2015-06-01 04:10:39.000000000","message":"Not sure whether directly removing \u0027metadata\u0027 in the collection list result is good. Someone may write codes like \"metadata\u003dresult[\u0027metadata\u0027]\", it works before but breaks now.","commit_id":"ea71db3c86a76fc3f2024253c3c1fb7972e994d4"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"1234694e09478d53b08d9d8ecbc26f2d2b371074","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            metadata \u003d {}"},{"line_number":50,"context_line":"            if list_object.total_count is not None:"},{"line_number":51,"context_line":"                metadata[\u0027total_count\u0027] \u003d list_object.total_count"},{"line_number":52,"context_line":"            if metadata:"},{"line_number":53,"context_line":"                r_list[\u0027metadata\u0027] \u003d metadata"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        return r_list"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_42791e92","line":52,"in_reply_to":"7a016987_4f383ad3","updated":"2015-06-01 15:10:38.000000000","message":"Meant to change this a few patches ago, thanks.","commit_id":"ea71db3c86a76fc3f2024253c3c1fb7972e994d4"}],"designate/objects/adapters/api_v2/zone_import.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"beb54e1d1e168bb33bb828f21bbff6725a56ee97","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            object, *args, **kwargs)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        if obj[\u0027zone_id\u0027] is not None:"},{"line_number":55,"context_line":"            obj[\u0027links\u0027][\u0027href\u0027] \u003d \\"},{"line_number":56,"context_line":"                \u0027%s/v2/%s/%s\u0027 % (cls.BASE_URI, \u0027zones\u0027, obj[\u0027zone_id\u0027])"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        return obj"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad8896b_b17b5a7b","line":55,"updated":"2015-05-11 16:38:38.000000000","message":"we have called this link \u0027zone\u0027 previously - https://github.com/openstack/designate/blob/master/designate/objects/adapters/api_v2/zone_transfer_accept.py#L56","commit_id":"9297c62336cca466120d873af445d36c701062c7"},{"author":{"_account_id":4894,"name":"stanzgy","email":"stanzgy@gmail.com","username":"stanzgy"},"change_message_id":"1b260bf8f1bc76ceee076c2d310d4061af069720","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    MODIFICATIONS \u003d {"},{"line_number":66,"context_line":"        \u0027options\u0027: {"},{"line_number":67,"context_line":"            \u0027links\u0027: True,"},{"line_number":68,"context_line":"            \u0027resource_name\u0027: \u0027imports\u0027,"},{"line_number":69,"context_line":"            \u0027collection_name\u0027: \u0027imports\u0027,"},{"line_number":70,"context_line":"        }"},{"line_number":71,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_8f587232","line":68,"updated":"2015-06-01 04:10:39.000000000","message":"\u0027resource_name\u0027: \u0027import\u0027 ?","commit_id":"ea71db3c86a76fc3f2024253c3c1fb7972e994d4"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"1234694e09478d53b08d9d8ecbc26f2d2b371074","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    MODIFICATIONS \u003d {"},{"line_number":66,"context_line":"        \u0027options\u0027: {"},{"line_number":67,"context_line":"            \u0027links\u0027: True,"},{"line_number":68,"context_line":"            \u0027resource_name\u0027: \u0027imports\u0027,"},{"line_number":69,"context_line":"            \u0027collection_name\u0027: \u0027imports\u0027,"},{"line_number":70,"context_line":"        }"},{"line_number":71,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_226ce2ce","line":68,"in_reply_to":"7a016987_8f587232","updated":"2015-06-01 15:10:38.000000000","message":"Done","commit_id":"ea71db3c86a76fc3f2024253c3c1fb7972e994d4"},{"author":{"_account_id":4894,"name":"stanzgy","email":"stanzgy@gmail.com","username":"stanzgy"},"change_message_id":"b37904bf2e7cef50d4d6029a1172aa4b51f619a8","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        },"},{"line_number":42,"context_line":"        \u0027options\u0027: {"},{"line_number":43,"context_line":"            \u0027links\u0027: True,"},{"line_number":44,"context_line":"            \u0027resource_name\u0027: \u0027imports\u0027,"},{"line_number":45,"context_line":"            \u0027collection_name\u0027: \u0027imports\u0027,"},{"line_number":46,"context_line":"        }"},{"line_number":47,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":9,"id":"5afe65bd_5f2b00ec","line":44,"updated":"2015-06-02 05:40:33.000000000","message":"oops, missed here..","commit_id":"24b447b2efe7d41f891c270ebcca6c7a1d2a68f8"}],"designate/tests/__init__.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"1ea4ab6b2ac48343747c00f0a25d49dc36ce4876","unresolved":false,"context_lines":[{"line_number":688,"context_line":"        \"\"\""},{"line_number":689,"context_line":"        attempts \u003d 0"},{"line_number":690,"context_line":"        while attempts \u003c 3:"},{"line_number":691,"context_line":"            # Give the import a half second to complete"},{"line_number":692,"context_line":"            time.sleep(3)"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"            # Retrieve it, and ensure it\u0027s the same"}],"source_content_type":"text/x-python","patch_set":10,"id":"5afe65bd_9c7e10ad","line":691,"updated":"2015-06-02 15:46:59.000000000","message":"Looks like 3 seconds to me? ;)\n\nCan we use 0.5, with more retries if necessary to minimize the amount of time needed on faster machines etc..","commit_id":"80e94da0cf45d5ef296d5e44a29600b562b9d56b"}],"doc/source/rest/v2/zones.rst":[{"author":{"_account_id":4894,"name":"stanzgy","email":"stanzgy@gmail.com","username":"stanzgy"},"change_message_id":"1b260bf8f1bc76ceee076c2d310d4061af069720","unresolved":false,"context_lines":[{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    .. sourcecode:: http"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"        POST /admin/zones/import HTTP/1.1"},{"line_number":584,"context_line":"        Host: 127.0.0.1:9001"},{"line_number":585,"context_line":"        Content-type: text/dns"},{"line_number":586,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_f497bde9","line":583,"updated":"2015-06-01 04:10:39.000000000","message":"I think we should use /v2/admin/zones/import here。","commit_id":"ea71db3c86a76fc3f2024253c3c1fb7972e994d4"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"1234694e09478d53b08d9d8ecbc26f2d2b371074","unresolved":false,"context_lines":[{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    .. sourcecode:: http"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"        POST /admin/zones/import HTTP/1.1"},{"line_number":584,"context_line":"        Host: 127.0.0.1:9001"},{"line_number":585,"context_line":"        Content-type: text/dns"},{"line_number":586,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_e2980ac2","line":583,"in_reply_to":"7a016987_f497bde9","updated":"2015-06-01 15:10:38.000000000","message":"Fixed to /v2/zones/tasks/imports","commit_id":"ea71db3c86a76fc3f2024253c3c1fb7972e994d4"},{"author":{"_account_id":4894,"name":"stanzgy","email":"stanzgy@gmail.com","username":"stanzgy"},"change_message_id":"1b260bf8f1bc76ceee076c2d310d4061af069720","unresolved":false,"context_lines":[{"line_number":628,"context_line":""},{"line_number":629,"context_line":"    .. sourcecode:: http"},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"        GET /zones/tasks/imports/ HTTP/1.1"},{"line_number":632,"context_line":"        Host: 127.0.0.1:9001"},{"line_number":633,"context_line":"        Accept: application/json"},{"line_number":634,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_f4f0dd68","line":631,"updated":"2015-06-01 04:10:39.000000000","message":"1. missing uuid here. \n2. /v2/zones/tasks/imports","commit_id":"ea71db3c86a76fc3f2024253c3c1fb7972e994d4"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"1234694e09478d53b08d9d8ecbc26f2d2b371074","unresolved":false,"context_lines":[{"line_number":628,"context_line":""},{"line_number":629,"context_line":"    .. sourcecode:: http"},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"        GET /zones/tasks/imports/ HTTP/1.1"},{"line_number":632,"context_line":"        Host: 127.0.0.1:9001"},{"line_number":633,"context_line":"        Accept: application/json"},{"line_number":634,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_a28e9276","line":631,"in_reply_to":"7a016987_f4f0dd68","updated":"2015-06-01 15:10:38.000000000","message":"Done","commit_id":"ea71db3c86a76fc3f2024253c3c1fb7972e994d4"},{"author":{"_account_id":4894,"name":"stanzgy","email":"stanzgy@gmail.com","username":"stanzgy"},"change_message_id":"1b260bf8f1bc76ceee076c2d310d4061af069720","unresolved":false,"context_lines":[{"line_number":673,"context_line":""},{"line_number":674,"context_line":"    .. sourcecode:: http"},{"line_number":675,"context_line":""},{"line_number":676,"context_line":"        GET /zones/tasks/imports/ HTTP/1.1"},{"line_number":677,"context_line":"        Host: 127.0.0.1:9001"},{"line_number":678,"context_line":"        Accept: application/json"},{"line_number":679,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_b49dc50b","line":676,"updated":"2015-06-01 04:10:39.000000000","message":"v2","commit_id":"ea71db3c86a76fc3f2024253c3c1fb7972e994d4"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"1234694e09478d53b08d9d8ecbc26f2d2b371074","unresolved":false,"context_lines":[{"line_number":673,"context_line":""},{"line_number":674,"context_line":"    .. sourcecode:: http"},{"line_number":675,"context_line":""},{"line_number":676,"context_line":"        GET /zones/tasks/imports/ HTTP/1.1"},{"line_number":677,"context_line":"        Host: 127.0.0.1:9001"},{"line_number":678,"context_line":"        Accept: application/json"},{"line_number":679,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_02f446ee","line":676,"in_reply_to":"7a016987_b49dc50b","updated":"2015-06-01 15:10:38.000000000","message":"Done","commit_id":"ea71db3c86a76fc3f2024253c3c1fb7972e994d4"},{"author":{"_account_id":4894,"name":"stanzgy","email":"stanzgy@gmail.com","username":"stanzgy"},"change_message_id":"1b260bf8f1bc76ceee076c2d310d4061af069720","unresolved":false,"context_lines":[{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    .. sourcecode:: http"},{"line_number":738,"context_line":""},{"line_number":739,"context_line":"        DELETE zones/tasks/imports/4d41f1d6-38c0-4534-bfc4-e6bcd53a8be3 HTTP/1.1"},{"line_number":740,"context_line":"        Host: 127.0.0.1:9001"},{"line_number":741,"context_line":"        Accept: application/json"},{"line_number":742,"context_line":"        Content-Type: application/json"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_748cedd9","line":739,"range":{"start_line":739,"start_character":8,"end_line":739,"end_character":14},"updated":"2015-06-01 04:10:39.000000000","message":"/v2","commit_id":"ea71db3c86a76fc3f2024253c3c1fb7972e994d4"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"1234694e09478d53b08d9d8ecbc26f2d2b371074","unresolved":false,"context_lines":[{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    .. sourcecode:: http"},{"line_number":738,"context_line":""},{"line_number":739,"context_line":"        DELETE zones/tasks/imports/4d41f1d6-38c0-4534-bfc4-e6bcd53a8be3 HTTP/1.1"},{"line_number":740,"context_line":"        Host: 127.0.0.1:9001"},{"line_number":741,"context_line":"        Accept: application/json"},{"line_number":742,"context_line":"        Content-Type: application/json"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_e2dfea66","line":739,"in_reply_to":"7a016987_748cedd9","updated":"2015-06-01 15:10:38.000000000","message":"Done","commit_id":"ea71db3c86a76fc3f2024253c3c1fb7972e994d4"}],"etc/designate/policy.json":[{"author":{"_account_id":4894,"name":"stanzgy","email":"stanzgy@gmail.com","username":"stanzgy"},"change_message_id":"1b260bf8f1bc76ceee076c2d310d4061af069720","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    \"zone_export\": \"rule:admin_or_owner\","},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    \"create_zone_import\": \"rule:admin_or_owner\",    "},{"line_number":114,"context_line":"    \"find_zone_imports\": \"rule:admin_or_owner\","},{"line_number":115,"context_line":"    \"get_zone_import\": \"rule:admin_or_owner\","},{"line_number":116,"context_line":"    \"update_zone_import\": \"rule:admin_or_owner\","}],"source_content_type":"application/json","patch_set":8,"id":"7a016987_d4c161e5","line":113,"updated":"2015-06-01 04:10:39.000000000","message":"trailing spaces","commit_id":"ea71db3c86a76fc3f2024253c3c1fb7972e994d4"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"1234694e09478d53b08d9d8ecbc26f2d2b371074","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    \"zone_export\": \"rule:admin_or_owner\","},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    \"create_zone_import\": \"rule:admin_or_owner\",    "},{"line_number":114,"context_line":"    \"find_zone_imports\": \"rule:admin_or_owner\","},{"line_number":115,"context_line":"    \"get_zone_import\": \"rule:admin_or_owner\","},{"line_number":116,"context_line":"    \"update_zone_import\": \"rule:admin_or_owner\","}],"source_content_type":"application/json","patch_set":8,"id":"7a016987_c2aceeee","line":113,"in_reply_to":"7a016987_d4c161e5","updated":"2015-06-01 15:10:38.000000000","message":"Done","commit_id":"ea71db3c86a76fc3f2024253c3c1fb7972e994d4"}],"functionaltests/api/v2/clients/zone_import_client.py":[{"author":{"_account_id":4894,"name":"stanzgy","email":"stanzgy@gmail.com","username":"stanzgy"},"change_message_id":"1b260bf8f1bc76ceee076c2d310d4061af069720","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class ZoneImportClient(ClientMixin):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    @classmethod"},{"line_number":25,"context_line":"    def zone_imports_uri(cls):"},{"line_number":26,"context_line":"        return \"/v2/zones/tasks/imports\""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_14a49948","line":24,"updated":"2015-06-01 04:10:39.000000000","message":"maybe use @property here is better?","commit_id":"ea71db3c86a76fc3f2024253c3c1fb7972e994d4"}]}
