)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ae5b27b13ed50710e02a79eb1bc502bc7998315c","unresolved":false,"context_lines":[{"line_number":1466,"context_line":"        \"\"\"Attempt to re-schedule a compute operation.\"\"\""},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"        instance_uuid \u003d instance.uuid"},{"line_number":1469,"context_line":"        retry \u003d filter_properties.get(\u0027retry\u0027)"},{"line_number":1470,"context_line":"        if not retry:"},{"line_number":1471,"context_line":"            # no retry information, do not reschedule."},{"line_number":1472,"context_line":"            LOG.debug(\"Retry info not present, will not reschedule\","}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_8c8ccc36","line":1469,"updated":"2015-08-24 01:12:25.000000000","message":"this is unrelated change","commit_id":"f2165bea48c3d910f299698ebd0cd36ac065e83d"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"a05fc30852428f25ac1bed1ffe4fefcdfd52a7d9","unresolved":false,"context_lines":[{"line_number":1466,"context_line":"        \"\"\"Attempt to re-schedule a compute operation.\"\"\""},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"        instance_uuid \u003d instance.uuid"},{"line_number":1469,"context_line":"        retry \u003d filter_properties.get(\u0027retry\u0027)"},{"line_number":1470,"context_line":"        if not retry:"},{"line_number":1471,"context_line":"            # no retry information, do not reschedule."},{"line_number":1472,"context_line":"            LOG.debug(\"Retry info not present, will not reschedule\","}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_07517562","line":1469,"in_reply_to":"fa1b9901_8c8ccc36","updated":"2015-08-24 02:31:21.000000000","message":"I\u0027d like to leave this in since it\u0027s cleanup.  There\u0027s no reason to have \", None\" and since we\u0027re in here anyway, why not?  :-)","commit_id":"f2165bea48c3d910f299698ebd0cd36ac065e83d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ae5b27b13ed50710e02a79eb1bc502bc7998315c","unresolved":false,"context_lines":[{"line_number":1903,"context_line":"                    filter_properties)"},{"line_number":1904,"context_line":"            return build_results.ACTIVE"},{"line_number":1905,"context_line":"        except exception.RescheduledException as e:"},{"line_number":1906,"context_line":"            retry \u003d filter_properties.get(\u0027retry\u0027)"},{"line_number":1907,"context_line":"            if not retry:"},{"line_number":1908,"context_line":"                # no retry information, do not reschedule."},{"line_number":1909,"context_line":"                LOG.debug(\"Retry info not present, will not reschedule\","}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_2c8100fc","line":1906,"updated":"2015-08-24 01:12:25.000000000","message":"ditto","commit_id":"f2165bea48c3d910f299698ebd0cd36ac065e83d"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"a05fc30852428f25ac1bed1ffe4fefcdfd52a7d9","unresolved":false,"context_lines":[{"line_number":1903,"context_line":"                    filter_properties)"},{"line_number":1904,"context_line":"            return build_results.ACTIVE"},{"line_number":1905,"context_line":"        except exception.RescheduledException as e:"},{"line_number":1906,"context_line":"            retry \u003d filter_properties.get(\u0027retry\u0027)"},{"line_number":1907,"context_line":"            if not retry:"},{"line_number":1908,"context_line":"                # no retry information, do not reschedule."},{"line_number":1909,"context_line":"                LOG.debug(\"Retry info not present, will not reschedule\","}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_a74d29c6","line":1906,"in_reply_to":"fa1b9901_2c8100fc","updated":"2015-08-24 02:31:21.000000000","message":"Ditto","commit_id":"f2165bea48c3d910f299698ebd0cd36ac065e83d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ae5b27b13ed50710e02a79eb1bc502bc7998315c","unresolved":false,"context_lines":[{"line_number":1930,"context_line":"                self.network_api.cleanup_instance_network_on_host("},{"line_number":1931,"context_line":"                    context, instance, self.host)"},{"line_number":1932,"context_line":""},{"line_number":1933,"context_line":"            self._nil_out_instance_obj_host_and_node(context, instance)"},{"line_number":1934,"context_line":"            instance.task_state \u003d task_states.SCHEDULING"},{"line_number":1935,"context_line":"            instance.save()"},{"line_number":1936,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_2c98206a","line":1933,"updated":"2015-08-24 01:12:25.000000000","message":"this way is LGTM, but I think there is performance problem. We do two db call(rpc call to conductor) at here and line 1935. I hope we can merge them into one call.","commit_id":"f2165bea48c3d910f299698ebd0cd36ac065e83d"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"a05fc30852428f25ac1bed1ffe4fefcdfd52a7d9","unresolved":false,"context_lines":[{"line_number":1930,"context_line":"                self.network_api.cleanup_instance_network_on_host("},{"line_number":1931,"context_line":"                    context, instance, self.host)"},{"line_number":1932,"context_line":""},{"line_number":1933,"context_line":"            self._nil_out_instance_obj_host_and_node(context, instance)"},{"line_number":1934,"context_line":"            instance.task_state \u003d task_states.SCHEDULING"},{"line_number":1935,"context_line":"            instance.save()"},{"line_number":1936,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_a7052915","line":1933,"in_reply_to":"fa1b9901_2c98206a","updated":"2015-08-24 02:31:21.000000000","message":"Done","commit_id":"f2165bea48c3d910f299698ebd0cd36ac065e83d"}],"nova/compute/resource_tracker.py":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"994fd3ddd9187286bae12c120587a10a660261e7","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        migration.create()"},{"line_number":213,"context_line":"        return migration"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def _set_instance_host_and_node(self, context, instance_ref, host, node):"},{"line_number":216,"context_line":"        \"\"\"Tag the instance as belonging to this host.  This should be done"},{"line_number":217,"context_line":"        while the COMPUTE_RESOURCES_SEMAPHORE is held so the resource claim"},{"line_number":218,"context_line":"        will not be lost if the audit process starts."}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_0d2b55ec","line":215,"updated":"2015-03-04 06:47:43.000000000","message":"how about use default value None for host and node?","commit_id":"9ea7d0ed62f37b0c3527a16d0afcee41bd42285d"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"39e96723fe594e48e0e1807794ec486d5ff770d2","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        migration.create()"},{"line_number":213,"context_line":"        return migration"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def _set_instance_host_and_node(self, context, instance_ref, host, node):"},{"line_number":216,"context_line":"        \"\"\"Tag the instance as belonging to this host.  This should be done"},{"line_number":217,"context_line":"        while the COMPUTE_RESOURCES_SEMAPHORE is held so the resource claim"},{"line_number":218,"context_line":"        will not be lost if the audit process starts."}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_0dbc356c","line":215,"in_reply_to":"9a80dd14_0d2b55ec","updated":"2015-03-04 06:52:39.000000000","message":"Since this is an internal method and we can safely update the places in which it\u0027s called, I\u0027d prefer to explicitly pass them vs. assuming None.","commit_id":"9ea7d0ed62f37b0c3527a16d0afcee41bd42285d"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"994fd3ddd9187286bae12c120587a10a660261e7","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                                           **values)"},{"line_number":223,"context_line":"        instance_ref[\u0027host\u0027] \u003d self.host"},{"line_number":224,"context_line":"        instance_ref[\u0027launched_on\u0027] \u003d self.host"},{"line_number":225,"context_line":"        instance_ref[\u0027node\u0027] \u003d self.nodename"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":228,"context_line":"    def abort_instance_claim(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_8d6ca538","line":225,"updated":"2015-03-04 06:47:43.000000000","message":"if you update the instance in db to host: None ...\nand instance_ref( in memory) \u0027s host is still self.host\nis that correct ?\nshould here be ?\ninstance_ref[\u0027host\u0027] \u003d host\ninstance_ref[\u0027launched_on\u0027] \u003d host\ninstance_ref[\u0027node\u0027] \u003d node\n\nEli.","commit_id":"9ea7d0ed62f37b0c3527a16d0afcee41bd42285d"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"39e96723fe594e48e0e1807794ec486d5ff770d2","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                                           **values)"},{"line_number":223,"context_line":"        instance_ref[\u0027host\u0027] \u003d self.host"},{"line_number":224,"context_line":"        instance_ref[\u0027launched_on\u0027] \u003d self.host"},{"line_number":225,"context_line":"        instance_ref[\u0027node\u0027] \u003d self.nodename"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":228,"context_line":"    def abort_instance_claim(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_0d63551b","line":225,"in_reply_to":"9a80dd14_8d6ca538","updated":"2015-03-04 06:52:39.000000000","message":"Yes, good catch.  I\u0027ll update.","commit_id":"9ea7d0ed62f37b0c3527a16d0afcee41bd42285d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7d656e9f9ccece35e1673d7a616cac41679e4c33","unresolved":false,"context_lines":[{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        self._update(context.elevated(), self.compute_node)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        # NOTE(jwcroppe): nil out the host and node"},{"line_number":238,"context_line":"        self._set_instance_host_and_node(context, instance, None, None)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_fc8f8dca","line":237,"updated":"2015-03-04 09:38:03.000000000","message":"nit: this comment is not necessary, the code is enough clear","commit_id":"ff85d7bc23e549aea6d4a581fe4479b5627bd60a"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"badaefc94e75edd701b6d46da8943f424ce496da","unresolved":false,"context_lines":[{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        self._update(context.elevated(), self.compute_node)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        # NOTE(jwcroppe): nil out the host and node"},{"line_number":238,"context_line":"        self._set_instance_host_and_node(context, instance, None, None)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_f93b1536","line":237,"in_reply_to":"9a80dd14_b36703ea","updated":"2015-03-04 13:53:48.000000000","message":"Done","commit_id":"ff85d7bc23e549aea6d4a581fe4479b5627bd60a"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"8e6caf78096ef9f1037d8a48653a5bdb1a03402a","unresolved":false,"context_lines":[{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        self._update(context.elevated(), self.compute_node)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        # NOTE(jwcroppe): nil out the host and node"},{"line_number":238,"context_line":"        self._set_instance_host_and_node(context, instance, None, None)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_b36703ea","line":237,"in_reply_to":"9a80dd14_fc8f8dca","updated":"2015-03-04 10:13:26.000000000","message":"+1","commit_id":"ff85d7bc23e549aea6d4a581fe4479b5627bd60a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7d656e9f9ccece35e1673d7a616cac41679e4c33","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        self._update(context.elevated(), self.compute_node)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        # NOTE(jwcroppe): nil out the host and node"},{"line_number":238,"context_line":"        self._set_instance_host_and_node(context, instance, None, None)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":241,"context_line":"    def drop_resize_claim(self, context, instance, instance_type\u003dNone,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_bc5a754e","line":238,"updated":"2015-03-04 09:38:03.000000000","message":"my biggest concern is that it could be useful for operators to get the host name so that they can look at why the instance didn\u0027t spawned.\n\nIs there any other way to access that relationship on an API endpoint other than that ?","commit_id":"ff85d7bc23e549aea6d4a581fe4479b5627bd60a"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"badaefc94e75edd701b6d46da8943f424ce496da","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        self._update(context.elevated(), self.compute_node)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        # NOTE(jwcroppe): nil out the host and node"},{"line_number":238,"context_line":"        self._set_instance_host_and_node(context, instance, None, None)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":241,"context_line":"    def drop_resize_claim(self, context, instance, instance_type\u003dNone,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_3903ed10","line":238,"in_reply_to":"9a80dd14_b340e336","updated":"2015-03-04 13:53:48.000000000","message":"I don\u0027t believe instance.node/hostname is the way we\u0027d \"track\" that -- if the instance failed to spawn, as Jay said, the \u0027nova show\u0027 command can be used to get some stack information, etc., but the user may also then have to grep the logs a bit.\n\nAdditionally, using instance.node/host doesn\u0027t really even work in the general case because if you have retries\u003dN, it could have failed N-1 other hosts too, and even with the current approach, you\u0027d have no idea it ever tried (and failed) in those other places.\n\nSo, I\u0027m not suggesting that wouldn\u0027t be interesting information to know, I\u0027m just asserting that instance.host/node isn\u0027t, IMO, the place we\u0027d do that--as it stands now, the values incorrectly make it seem like the instance got deployed there, which is certainly didn\u0027t.  :-)\n\n- Joe","commit_id":"ff85d7bc23e549aea6d4a581fe4479b5627bd60a"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"8e6caf78096ef9f1037d8a48653a5bdb1a03402a","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        self._update(context.elevated(), self.compute_node)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        # NOTE(jwcroppe): nil out the host and node"},{"line_number":238,"context_line":"        self._set_instance_host_and_node(context, instance, None, None)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":241,"context_line":"    def drop_resize_claim(self, context, instance, instance_type\u003dNone,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_b340e336","line":238,"in_reply_to":"9a80dd14_bc5a754e","updated":"2015-03-04 10:13:26.000000000","message":"I think that \"nova show\" can still show the reason why the instance spawn failed even we clear instance.host/node, right?\n\nWhat is the use of the relationship if the instance spawn failed after retry?","commit_id":"ff85d7bc23e549aea6d4a581fe4479b5627bd60a"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"ad177be94c09d78e6ca66e3c14f4aece3ab68f30","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        if self.disabled:"},{"line_number":109,"context_line":"            # compute_driver doesn\u0027t support resource tracking, just"},{"line_number":110,"context_line":"            # set the \u0027host\u0027 and node fields and continue the build:"},{"line_number":111,"context_line":"            self._set_instance_host_and_node(context, instance_ref, self.host,"},{"line_number":112,"context_line":"                                             self.nodename)"},{"line_number":113,"context_line":"            return claims.NopClaim()"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_73049e15","line":111,"updated":"2015-03-04 15:34:28.000000000","message":"It would seem simpler to make the new host and node parameters to this function optional, and if not supplied, default to self.host and self.nodename. This way you don\u0027t need to modify any of the calls except in the call from abort_instance_claim().","commit_id":"76bc1444c8027a9368a789bf8c07a4d95d4d9cd8"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"cf46d3479504588243df21c03065d1a7d51c6872","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        if self.disabled:"},{"line_number":109,"context_line":"            # compute_driver doesn\u0027t support resource tracking, just"},{"line_number":110,"context_line":"            # set the \u0027host\u0027 and node fields and continue the build:"},{"line_number":111,"context_line":"            self._set_instance_host_and_node(context, instance_ref, self.host,"},{"line_number":112,"context_line":"                                             self.nodename)"},{"line_number":113,"context_line":"            return claims.NopClaim()"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_a5308b57","line":111,"in_reply_to":"9a80dd14_73049e15","updated":"2015-03-04 16:32:41.000000000","message":"Since this was an internal/private method, I took this path to keep things explicit.  Unless there are major objections, I\u0027d prefer to leave it... but certainly the approach you mention is valid and would be preferred for public APIs.","commit_id":"76bc1444c8027a9368a789bf8c07a4d95d4d9cd8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"478b1e93ded67d6b566fb261c9838f9590aff701","unresolved":false,"context_lines":[{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        self._update(context.elevated(), self.compute_node)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        self._set_instance_host_and_node(context, instance, None, None)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":240,"context_line":"    def drop_resize_claim(self, context, instance, instance_type\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_af5e8174","line":237,"updated":"2015-03-05 09:45:23.000000000","message":"Yeah, Alex made an excellent point, we still need to access the instance.host field later in the exception handling.\n\nThat\u0027s my main wonders : setting this value to None can probably break more than what we expected","commit_id":"76bc1444c8027a9368a789bf8c07a4d95d4d9cd8"}],"nova/scheduler/utils.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ae5b27b13ed50710e02a79eb1bc502bc7998315c","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    if not exc:"},{"line_number":186,"context_line":"        return  # no exception info from a previous attempt, skip"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    hosts \u003d retry.get(\u0027hosts\u0027)"},{"line_number":189,"context_line":"    if not hosts:"},{"line_number":190,"context_line":"        return  # no previously attempted hosts, skip"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_4c9d5458","line":188,"updated":"2015-08-24 01:12:25.000000000","message":"unrelated change","commit_id":"f2165bea48c3d910f299698ebd0cd36ac065e83d"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"a05fc30852428f25ac1bed1ffe4fefcdfd52a7d9","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    if not exc:"},{"line_number":186,"context_line":"        return  # no exception info from a previous attempt, skip"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    hosts \u003d retry.get(\u0027hosts\u0027)"},{"line_number":189,"context_line":"    if not hosts:"},{"line_number":190,"context_line":"        return  # no previously attempted hosts, skip"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_0210834d","line":188,"in_reply_to":"fa1b9901_4c9d5458","updated":"2015-08-24 02:31:21.000000000","message":"I was reading this code in the course of the change and this seems harmless as a general cleanup we tend to do.  I think this would be OK to keep, isn\u0027t it?  I can remove if someone strongly objects, but this adheres to best practices.  :)","commit_id":"f2165bea48c3d910f299698ebd0cd36ac065e83d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ae5b27b13ed50710e02a79eb1bc502bc7998315c","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    the request gets re-scheduled, this entry will signal that the given"},{"line_number":212,"context_line":"    node has already been tried."},{"line_number":213,"context_line":"    \"\"\""},{"line_number":214,"context_line":"    retry \u003d filter_properties.get(\u0027retry\u0027)"},{"line_number":215,"context_line":"    if not retry:"},{"line_number":216,"context_line":"        return"},{"line_number":217,"context_line":"    hosts \u003d retry[\u0027hosts\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_eca2289a","line":214,"updated":"2015-08-24 01:12:25.000000000","message":"ditto","commit_id":"f2165bea48c3d910f299698ebd0cd36ac065e83d"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"a05fc30852428f25ac1bed1ffe4fefcdfd52a7d9","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    the request gets re-scheduled, this entry will signal that the given"},{"line_number":212,"context_line":"    node has already been tried."},{"line_number":213,"context_line":"    \"\"\""},{"line_number":214,"context_line":"    retry \u003d filter_properties.get(\u0027retry\u0027)"},{"line_number":215,"context_line":"    if not retry:"},{"line_number":216,"context_line":"        return"},{"line_number":217,"context_line":"    hosts \u003d retry[\u0027hosts\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_a21c376b","line":214,"in_reply_to":"fa1b9901_eca2289a","updated":"2015-08-24 02:31:21.000000000","message":"Ditto","commit_id":"f2165bea48c3d910f299698ebd0cd36ac065e83d"}]}
