)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"12cde957990dc1668aa5764b3fe7faf8d2b5ec56","unresolved":false,"context_lines":[{"line_number":7320,"context_line":"        try:"},{"line_number":7321,"context_line":"            nodenames \u003d set(self.driver.get_available_nodes())"},{"line_number":7322,"context_line":"        except exception.NotReadyYet:"},{"line_number":7323,"context_line":"            return"},{"line_number":7324,"context_line":""},{"line_number":7325,"context_line":"        for nodename in nodenames:"},{"line_number":7326,"context_line":"            self.update_available_resource_for_node(context, nodename)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_3f93f45e","line":7323,"range":{"start_line":7323,"start_character":12,"end_line":7323,"end_character":18},"updated":"2018-03-19 11:41:05.000000000","message":"LOG.warning?","commit_id":"60f32a3a3a26dc541e2ebd12148e3c069b60f62b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5ddf0d6ef28eb84ea76c0f02a92f83ef4ddd0e07","unresolved":false,"context_lines":[{"line_number":7320,"context_line":"        try:"},{"line_number":7321,"context_line":"            nodenames \u003d set(self.driver.get_available_nodes())"},{"line_number":7322,"context_line":"        except exception.NotReadyYet:"},{"line_number":7323,"context_line":"            return"},{"line_number":7324,"context_line":""},{"line_number":7325,"context_line":"        for nodename in nodenames:"},{"line_number":7326,"context_line":"            self.update_available_resource_for_node(context, nodename)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_b7387f3d","line":7323,"range":{"start_line":7323,"start_character":12,"end_line":7323,"end_character":18},"in_reply_to":"df7087c5_3f93f45e","updated":"2018-03-19 19:58:30.000000000","message":"Yeah, probably worth adding a:\n\n LOG.warn(\"Virt driver is not ready yet.\")\n\nhere.","commit_id":"60f32a3a3a26dc541e2ebd12148e3c069b60f62b"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"00c3b88a2e2102a9df7514ba3719bca2d51f1f8d","unresolved":false,"context_lines":[{"line_number":7320,"context_line":"        try:"},{"line_number":7321,"context_line":"            nodenames \u003d set(self.driver.get_available_nodes())"},{"line_number":7322,"context_line":"        except exception.NotReadyYet:"},{"line_number":7323,"context_line":"            return"},{"line_number":7324,"context_line":""},{"line_number":7325,"context_line":"        for nodename in nodenames:"},{"line_number":7326,"context_line":"            self.update_available_resource_for_node(context, nodename)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_768e57d1","line":7323,"range":{"start_line":7323,"start_character":12,"end_line":7323,"end_character":18},"in_reply_to":"df7087c5_929ea952","updated":"2018-03-20 12:28:46.000000000","message":"Done","commit_id":"60f32a3a3a26dc541e2ebd12148e3c069b60f62b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f3ceba2bc8547684ab80dc71f7f4de1b8be3752f","unresolved":false,"context_lines":[{"line_number":7320,"context_line":"        try:"},{"line_number":7321,"context_line":"            nodenames \u003d set(self.driver.get_available_nodes())"},{"line_number":7322,"context_line":"        except exception.NotReadyYet:"},{"line_number":7323,"context_line":"            return"},{"line_number":7324,"context_line":""},{"line_number":7325,"context_line":"        for nodename in nodenames:"},{"line_number":7326,"context_line":"            self.update_available_resource_for_node(context, nodename)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_929ea952","line":7323,"range":{"start_line":7323,"start_character":12,"end_line":7323,"end_character":18},"in_reply_to":"df7087c5_b7387f3d","updated":"2018-03-19 20:38:39.000000000","message":"This can happen at times other than initial startup, so s/yet//","commit_id":"60f32a3a3a26dc541e2ebd12148e3c069b60f62b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e6800e105dee09c1033d46228744c9ce89cfad03","unresolved":false,"context_lines":[{"line_number":7320,"context_line":"        try:"},{"line_number":7321,"context_line":"            nodenames \u003d set(self.driver.get_available_nodes())"},{"line_number":7322,"context_line":"        except exception.VirtDriverNotReady:"},{"line_number":7323,"context_line":"            LOG.warning(\"Virt driver is not ready.\")"},{"line_number":7324,"context_line":""},{"line_number":7325,"context_line":"        for nodename in nodenames:"},{"line_number":7326,"context_line":"            self.update_available_resource_for_node(context, nodename)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_eafcb33f","line":7323,"updated":"2018-03-20 15:12:34.000000000","message":"Don\u0027t we need to return here? If not, nodenames will be unset and will cause a NameError on L7324. Setting it to an empty set will also not do what we want, since it will cause us to remove all compute nodes in the database if we stop being able to talk to ironic some time after startup. You\u0027re missing a test for the compute manager part of this which is why it hasn\u0027t come up yet :)","commit_id":"8d8f6e9aacd88634637a8a4b2d23086a71475974"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"45d0d3fd25a83cf2671e6e86795bc03792cc3f5d","unresolved":false,"context_lines":[{"line_number":7320,"context_line":"        try:"},{"line_number":7321,"context_line":"            nodenames \u003d set(self.driver.get_available_nodes())"},{"line_number":7322,"context_line":"        except exception.VirtDriverNotReady:"},{"line_number":7323,"context_line":"            LOG.warning(\"Virt driver is not ready.\")"},{"line_number":7324,"context_line":""},{"line_number":7325,"context_line":"        for nodename in nodenames:"},{"line_number":7326,"context_line":"            self.update_available_resource_for_node(context, nodename)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_755ba886","line":7323,"in_reply_to":"df7087c5_eafcb33f","updated":"2018-03-20 15:41:53.000000000","message":"Heh, yep. I had it in the last patchset (as that\u0027s the entire reason for this change), but somehow dropped it on the floor. Will add a test as well. Thanks :)","commit_id":"8d8f6e9aacd88634637a8a4b2d23086a71475974"}],"nova/exception.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f3ceba2bc8547684ab80dc71f7f4de1b8be3752f","unresolved":false,"context_lines":[{"line_number":2302,"context_line":""},{"line_number":2303,"context_line":""},{"line_number":2304,"context_line":"class NotReadyYet(NovaException):"},{"line_number":2305,"context_line":"    msg_fmt \u003d _(\"Virt driver is not ready yet.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_12bcd9b9","line":2305,"range":{"start_line":2305,"start_character":42,"end_line":2305,"end_character":45},"updated":"2018-03-19 20:38:39.000000000","message":"s/yet//","commit_id":"60f32a3a3a26dc541e2ebd12148e3c069b60f62b"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"00c3b88a2e2102a9df7514ba3719bca2d51f1f8d","unresolved":false,"context_lines":[{"line_number":2302,"context_line":""},{"line_number":2303,"context_line":""},{"line_number":2304,"context_line":"class NotReadyYet(NovaException):"},{"line_number":2305,"context_line":"    msg_fmt \u003d _(\"Virt driver is not ready yet.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_56aa3319","line":2305,"range":{"start_line":2305,"start_character":42,"end_line":2305,"end_character":45},"in_reply_to":"df7087c5_12bcd9b9","updated":"2018-03-20 12:28:46.000000000","message":"Done","commit_id":"60f32a3a3a26dc541e2ebd12148e3c069b60f62b"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e248078e99b95df6bddcf8cbd99e3c769a5f71f0","unresolved":false,"context_lines":[{"line_number":607,"context_line":"        :returns: a list of raw nodes from ironic"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        \"\"\""},{"line_number":610,"context_line":"        return self.ironicclient.call(\"node.list\", **kwargs)"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"    def list_instances(self):"},{"line_number":613,"context_line":"        \"\"\"Return the names of all the instances provisioned."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_ff9a05c3","line":610,"updated":"2018-02-20 10:17:10.000000000","message":"No, I don\u0027t like that because it would mean that Ironic API would be a dependency for running a compute service.\n\nLike I said in the bug report, we should rather discuss whether having both Placement and Ironic API being down is something we should support.","commit_id":"d42ff07c33ffd8db77d61b030d1b68365e79bcf2"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"292f29f09a593ef0ebf2f26240c3b6fa06776bbe","unresolved":false,"context_lines":[{"line_number":607,"context_line":"        :returns: a list of raw nodes from ironic"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        \"\"\""},{"line_number":610,"context_line":"        return self.ironicclient.call(\"node.list\", **kwargs)"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"    def list_instances(self):"},{"line_number":613,"context_line":"        \"\"\"Return the names of all the instances provisioned."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_9ebf20a9","line":610,"in_reply_to":"3fa0c359_0f73f917","updated":"2018-02-21 15:41:27.000000000","message":"@efried right, that\u0027s exactly the sort of thing I had in mind. Thanks :)","commit_id":"d42ff07c33ffd8db77d61b030d1b68365e79bcf2"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7f615f7fb6f971d5b66e5f77d0cad0f85ff7462f","unresolved":false,"context_lines":[{"line_number":607,"context_line":"        :returns: a list of raw nodes from ironic"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        \"\"\""},{"line_number":610,"context_line":"        return self.ironicclient.call(\"node.list\", **kwargs)"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"    def list_instances(self):"},{"line_number":613,"context_line":"        \"\"\"Return the names of all the instances provisioned."}],"source_content_type":"text/x-python","patch_set":1,"id":"1f9dbf25_d43e5428","line":610,"in_reply_to":"3fa0c359_9ebf20a9","updated":"2018-03-01 16:39:18.000000000","message":"For the records, based on the PTG discussion we had, here is the verbatim of the consensus :\n\"    AGREE: For the issue of nova-compute crashing on startup, try-except around call site at startup and raise NotReadyYet exception that we can ignore\"","commit_id":"d42ff07c33ffd8db77d61b030d1b68365e79bcf2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"de193ddb7aa4f2255b104c78ea592c14d4f74e70","unresolved":false,"context_lines":[{"line_number":607,"context_line":"        :returns: a list of raw nodes from ironic"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        \"\"\""},{"line_number":610,"context_line":"        return self.ironicclient.call(\"node.list\", **kwargs)"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"    def list_instances(self):"},{"line_number":613,"context_line":"        \"\"\"Return the names of all the instances provisioned."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_c09ba563","line":610,"in_reply_to":"3fa0c359_aa9e7a04","updated":"2018-02-20 15:12:06.000000000","message":"Consider a solution like [1], wherein a communication error disables the compute service, but keeps the process running.  Next time you\u0027re polled, if comms are back, you re-enable the service.\n\n[1] https://review.openstack.org/#/c/290315/6/nova/virt/vmwareapi/host.py","commit_id":"d42ff07c33ffd8db77d61b030d1b68365e79bcf2"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0b40a2f97e60dbd976939a58ca7b51687ab61f9f","unresolved":false,"context_lines":[{"line_number":607,"context_line":"        :returns: a list of raw nodes from ironic"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        \"\"\""},{"line_number":610,"context_line":"        return self.ironicclient.call(\"node.list\", **kwargs)"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"    def list_instances(self):"},{"line_number":613,"context_line":"        \"\"\"Return the names of all the instances provisioned."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_0f73f917","line":610,"in_reply_to":"3fa0c359_c09ba563","updated":"2018-02-20 17:31:27.000000000","message":"From an ironic standpoint, I think we are good with disabling the service and re-enabling it upon comms being restored.","commit_id":"d42ff07c33ffd8db77d61b030d1b68365e79bcf2"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"1807eeb80210494284efdc84e1e8310123790310","unresolved":false,"context_lines":[{"line_number":607,"context_line":"        :returns: a list of raw nodes from ironic"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        \"\"\""},{"line_number":610,"context_line":"        return self.ironicclient.call(\"node.list\", **kwargs)"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"    def list_instances(self):"},{"line_number":613,"context_line":"        \"\"\"Return the names of all the instances provisioned."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_aa9e7a04","line":610,"in_reply_to":"3fa0c359_ff9a05c3","updated":"2018-02-20 14:09:14.000000000","message":"\u003e No, I don\u0027t like that because it would mean that Ironic API would be a dependency for running a compute service.\n\nWe have a hard dependency on the ironic API for the compute service to be useful anyway, no? Anyway, my goal here originally was to just throw away this RT run and wait for the next. I didn\u0027t want to block the compute service from starting, but right now it does. That\u0027s what needs to be discussed - I\u0027m leaning toward not allowing it to start - and maybe marking the compute disabled if this happens while we are running.\n\n\u003e Like I said in the bug report, we should rather discuss whether having both Placement and Ironic API being down is something we should support.\n\nWe have to support it - imagine the n-cpu service loses network access to the load balancer handling HTTP for a few minutes, but can still reach rabbit to talk to conductor (and thus the database).\n\nLeaving this as-is would cause any ironic node currently managed by this compute service to be un-scheduleable until the operator does manual intervention to fix it. We anyway shouldn\u0027t be removing the ironic nodes from the compute_nodes or resource providers - they still exist. And who knows what will happen when we delete a node record which has an instance on it.","commit_id":"d42ff07c33ffd8db77d61b030d1b68365e79bcf2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"12cde957990dc1668aa5764b3fe7faf8d2b5ec56","unresolved":false,"context_lines":[{"line_number":584,"context_line":"        except exception.NovaException as e:"},{"line_number":585,"context_line":"            LOG.error(\"Failed to get the list of nodes from the Ironic \""},{"line_number":586,"context_line":"                      \"inventory. Error: %s\", e)"},{"line_number":587,"context_line":"            raise exception.NotReadyYet"},{"line_number":588,"context_line":"        except Exception as e:"},{"line_number":589,"context_line":"            LOG.error(\"An unknown error has occurred when trying to get the \""},{"line_number":590,"context_line":"                      \"list of nodes from the Ironic inventory. Error: %s\", e)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_1f9ab06d","line":587,"updated":"2018-03-19 11:41:05.000000000","message":"nit: raise instances, not classes","commit_id":"60f32a3a3a26dc541e2ebd12148e3c069b60f62b"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"00c3b88a2e2102a9df7514ba3719bca2d51f1f8d","unresolved":false,"context_lines":[{"line_number":584,"context_line":"        except exception.NovaException as e:"},{"line_number":585,"context_line":"            LOG.error(\"Failed to get the list of nodes from the Ironic \""},{"line_number":586,"context_line":"                      \"inventory. Error: %s\", e)"},{"line_number":587,"context_line":"            raise exception.NotReadyYet"},{"line_number":588,"context_line":"        except Exception as e:"},{"line_number":589,"context_line":"            LOG.error(\"An unknown error has occurred when trying to get the \""},{"line_number":590,"context_line":"                      \"list of nodes from the Ironic inventory. Error: %s\", e)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_361e9f70","line":587,"in_reply_to":"df7087c5_1f9ab06d","updated":"2018-03-20 12:28:46.000000000","message":"Done","commit_id":"60f32a3a3a26dc541e2ebd12148e3c069b60f62b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"12cde957990dc1668aa5764b3fe7faf8d2b5ec56","unresolved":false,"context_lines":[{"line_number":588,"context_line":"        except Exception as e:"},{"line_number":589,"context_line":"            LOG.error(\"An unknown error has occurred when trying to get the \""},{"line_number":590,"context_line":"                      \"list of nodes from the Ironic inventory. Error: %s\", e)"},{"line_number":591,"context_line":"            raise exception.NotReadyYet"},{"line_number":592,"context_line":"        return node_list"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def list_instances(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_bf886422","line":591,"updated":"2018-03-19 11:41:05.000000000","message":"ditto","commit_id":"60f32a3a3a26dc541e2ebd12148e3c069b60f62b"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"00c3b88a2e2102a9df7514ba3719bca2d51f1f8d","unresolved":false,"context_lines":[{"line_number":588,"context_line":"        except Exception as e:"},{"line_number":589,"context_line":"            LOG.error(\"An unknown error has occurred when trying to get the \""},{"line_number":590,"context_line":"                      \"list of nodes from the Ironic inventory. Error: %s\", e)"},{"line_number":591,"context_line":"            raise exception.NotReadyYet"},{"line_number":592,"context_line":"        return node_list"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def list_instances(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_d612c362","line":591,"in_reply_to":"df7087c5_bf886422","updated":"2018-03-20 12:28:46.000000000","message":"Done","commit_id":"60f32a3a3a26dc541e2ebd12148e3c069b60f62b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"12cde957990dc1668aa5764b3fe7faf8d2b5ec56","unresolved":false,"context_lines":[{"line_number":595,"context_line":"        \"\"\"Return the names of all the instances provisioned."},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"        :returns: a list of instance names."},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        \"\"\""},{"line_number":600,"context_line":"        # NOTE(lucasagomes): limit \u003d\u003d 0 is an indicator to continue"},{"line_number":601,"context_line":"        # pagination until there\u0027re no more values to be returned."}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_9f9c805e","line":598,"updated":"2018-03-19 11:41:05.000000000","message":":raises: NotReadyYet","commit_id":"60f32a3a3a26dc541e2ebd12148e3c069b60f62b"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"00c3b88a2e2102a9df7514ba3719bca2d51f1f8d","unresolved":false,"context_lines":[{"line_number":595,"context_line":"        \"\"\"Return the names of all the instances provisioned."},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"        :returns: a list of instance names."},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        \"\"\""},{"line_number":600,"context_line":"        # NOTE(lucasagomes): limit \u003d\u003d 0 is an indicator to continue"},{"line_number":601,"context_line":"        # pagination until there\u0027re no more values to be returned."}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_960c4b43","line":598,"in_reply_to":"df7087c5_9f9c805e","updated":"2018-03-20 12:28:46.000000000","message":"Done","commit_id":"60f32a3a3a26dc541e2ebd12148e3c069b60f62b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"12cde957990dc1668aa5764b3fe7faf8d2b5ec56","unresolved":false,"context_lines":[{"line_number":609,"context_line":"        \"\"\"Return the UUIDs of all the instances provisioned."},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"        :returns: a list of instance UUIDs."},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"        \"\"\""},{"line_number":614,"context_line":"        # NOTE(lucasagomes): limit \u003d\u003d 0 is an indicator to continue"},{"line_number":615,"context_line":"        # pagination until there\u0027re no more values to be returned."}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_df92f84b","line":612,"updated":"2018-03-19 11:41:05.000000000","message":":raises: NotReadyYet","commit_id":"60f32a3a3a26dc541e2ebd12148e3c069b60f62b"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"00c3b88a2e2102a9df7514ba3719bca2d51f1f8d","unresolved":false,"context_lines":[{"line_number":609,"context_line":"        \"\"\"Return the UUIDs of all the instances provisioned."},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"        :returns: a list of instance UUIDs."},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"        \"\"\""},{"line_number":614,"context_line":"        # NOTE(lucasagomes): limit \u003d\u003d 0 is an indicator to continue"},{"line_number":615,"context_line":"        # pagination until there\u0027re no more values to be returned."}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_b6094f32","line":612,"in_reply_to":"df7087c5_df92f84b","updated":"2018-03-20 12:28:46.000000000","message":"Done","commit_id":"60f32a3a3a26dc541e2ebd12148e3c069b60f62b"}]}
