)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"740f6ca8bbc7aa0bf7b2c63d4dcc1e4f8f94719b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handle uuid in HostAPI.compute_node_get"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This allows looking up a compute node by it\u0027s uuid to uniquely"},{"line_number":10,"context_line":"identify it in a list of cells. A later REST API microversion"},{"line_number":11,"context_line":"change will rely on this."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5ff73747_9a16d7a7","line":9,"range":{"start_line":9,"start_character":41,"end_line":9,"end_character":45},"updated":"2017-05-01 23:25:32.000000000","message":"its","commit_id":"ad3a68d8130415a039b9b317e1d6d3c4af7786dc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e0025b3688c7510aff66c026c3fa3be871828da","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handle uuid in HostAPI.compute_node_get"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This allows looking up a compute node by it\u0027s uuid to uniquely"},{"line_number":10,"context_line":"identify it in a list of cells. A later REST API microversion"},{"line_number":11,"context_line":"change will rely on this."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5ff73747_7a33f063","line":9,"range":{"start_line":9,"start_character":41,"end_line":9,"end_character":45},"in_reply_to":"5ff73747_9a16d7a7","updated":"2017-05-02 16:48:41.000000000","message":"Done","commit_id":"ad3a68d8130415a039b9b317e1d6d3c4af7786dc"}],"nova/cells/rpcapi.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"620814cf059c27ed0805ebe53749b46637c7dcd4","unresolved":false,"context_lines":[{"line_number":340,"context_line":"                          host\u003dhost, state\u003dstate)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def compute_node_get(self, ctxt, compute_id):"},{"line_number":343,"context_line":"        \"\"\"Get a compute node by ID or UUID in a specific cell.\"\"\""},{"line_number":344,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.4\u0027)"},{"line_number":345,"context_line":"        return cctxt.call(ctxt, \u0027compute_node_get\u0027, compute_id\u003dcompute_id)"},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_0e497f5e","line":343,"updated":"2017-05-24 18:49:13.000000000","message":"Technically this should be a version bump and a failure if they pass a uuid_like thing and we\u0027re pinned.","commit_id":"581bd063404a2bb9c2ee4a175fcf84435aa7de42"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0836f0243a99f86451fa273cea27824cf445df33","unresolved":false,"context_lines":[{"line_number":340,"context_line":"                          host\u003dhost, state\u003dstate)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def compute_node_get(self, ctxt, compute_id):"},{"line_number":343,"context_line":"        \"\"\"Get a compute node by ID or UUID in a specific cell.\"\"\""},{"line_number":344,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.4\u0027)"},{"line_number":345,"context_line":"        return cctxt.call(ctxt, \u0027compute_node_get\u0027, compute_id\u003dcompute_id)"},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_44860fde","line":343,"in_reply_to":"ff0f0b1f_0e497f5e","updated":"2017-05-25 20:03:50.000000000","message":"God I suppose. Let\u0027s just delete cells v1.","commit_id":"581bd063404a2bb9c2ee4a175fcf84435aa7de42"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f0476f05791b4eae88067b41b423ce3f5fe289d5","unresolved":false,"context_lines":[{"line_number":350,"context_line":"            LOG.warning(\u0027Unable to get compute node by UUID %s; service is \u0027"},{"line_number":351,"context_line":"                        \u0027too old or the version is capped.\u0027, compute_id)"},{"line_number":352,"context_line":"            raise exception.ComputeHostNotFound(host\u003dcompute_id)"},{"line_number":353,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.38\u0027)"},{"line_number":354,"context_line":"        return cctxt.call(ctxt, \u0027compute_node_get\u0027, compute_id\u003dcompute_id)"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    def compute_node_get_all(self, ctxt, hypervisor_match\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf091321_491e0dbb","line":353,"updated":"2017-06-08 17:24:44.000000000","message":"Don\u0027t you want to still call at 1.4 if it\u0027s not uuid like? What you have will raise if it\u0027s uuid like, but if it\u0027s not, it will still call at the new version, which may not be supported. I think you want the logic to be:\n\n if uuidlike:\n     if not new:\n         raise\n     else\n         send at 1.38\n else\n     send at 1.4","commit_id":"1b74deb0d4ebd6d5c84f405a4c5318fc5bbddd48"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1c35d20b45f54b05ff87e29a9c76c206487e128d","unresolved":false,"context_lines":[{"line_number":350,"context_line":"            LOG.warning(\u0027Unable to get compute node by UUID %s; service is \u0027"},{"line_number":351,"context_line":"                        \u0027too old or the version is capped.\u0027, compute_id)"},{"line_number":352,"context_line":"            raise exception.ComputeHostNotFound(host\u003dcompute_id)"},{"line_number":353,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.38\u0027)"},{"line_number":354,"context_line":"        return cctxt.call(ctxt, \u0027compute_node_get\u0027, compute_id\u003dcompute_id)"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    def compute_node_get_all(self, ctxt, hypervisor_match\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf091321_718893c5","line":353,"in_reply_to":"bf091321_491e0dbb","updated":"2017-06-08 19:21:24.000000000","message":"Yeah good point.","commit_id":"1b74deb0d4ebd6d5c84f405a4c5318fc5bbddd48"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"bbaff128291e088eb6ef37c214c6f35e172f925f","unresolved":false,"context_lines":[{"line_number":352,"context_line":"                            \u0027is too old or the version is capped.\u0027, compute_id)"},{"line_number":353,"context_line":"                raise exception.ComputeHostNotFound(host\u003dcompute_id)"},{"line_number":354,"context_line":"        else:"},{"line_number":355,"context_line":"            version \u003d \u00271.4\u0027"},{"line_number":356,"context_line":"        cctxt \u003d self.client.prepare(version\u003dversion)"},{"line_number":357,"context_line":"        return cctxt.call(ctxt, \u0027compute_node_get\u0027, compute_id\u003dcompute_id)"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7f231b9d_6ae1462a","line":355,"range":{"start_line":355,"start_character":12,"end_line":355,"end_character":27},"updated":"2017-06-15 08:52:15.000000000","message":"with ID we still can send \u00271.38\u0027? seems no harm we down to 1.4 here directly?","commit_id":"753ec1b3eada4ed33245aef796ded60c22b1b1a9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f1332aad5084c25dd3aff0db71517cb5917c41d9","unresolved":false,"context_lines":[{"line_number":352,"context_line":"                            \u0027is too old or the version is capped.\u0027, compute_id)"},{"line_number":353,"context_line":"                raise exception.ComputeHostNotFound(host\u003dcompute_id)"},{"line_number":354,"context_line":"        else:"},{"line_number":355,"context_line":"            version \u003d \u00271.4\u0027"},{"line_number":356,"context_line":"        cctxt \u003d self.client.prepare(version\u003dversion)"},{"line_number":357,"context_line":"        return cctxt.call(ctxt, \u0027compute_node_get\u0027, compute_id\u003dcompute_id)"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7f231b9d_5e999bc1","line":355,"range":{"start_line":355,"start_character":12,"end_line":355,"end_character":27},"in_reply_to":"7f231b9d_5b7c1082","updated":"2017-06-15 19:49:34.000000000","message":"OK, I guess I misinterpreted what you asked for here then:\n\nhttps://review.openstack.org/#/c/461532/8/nova/cells/rpcapi.py@353","commit_id":"753ec1b3eada4ed33245aef796ded60c22b1b1a9"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"0701cb543295d7455b0f35c5dced87282aad97d1","unresolved":false,"context_lines":[{"line_number":352,"context_line":"                            \u0027is too old or the version is capped.\u0027, compute_id)"},{"line_number":353,"context_line":"                raise exception.ComputeHostNotFound(host\u003dcompute_id)"},{"line_number":354,"context_line":"        else:"},{"line_number":355,"context_line":"            version \u003d \u00271.4\u0027"},{"line_number":356,"context_line":"        cctxt \u003d self.client.prepare(version\u003dversion)"},{"line_number":357,"context_line":"        return cctxt.call(ctxt, \u0027compute_node_get\u0027, compute_id\u003dcompute_id)"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7f231b9d_44a77d0c","line":355,"range":{"start_line":355,"start_character":12,"end_line":355,"end_character":27},"in_reply_to":"7f231b9d_5e999bc1","updated":"2017-06-16 06:41:07.000000000","message":"ok, saw that comments from Dan, thanks for the info","commit_id":"753ec1b3eada4ed33245aef796ded60c22b1b1a9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b8bc1f60b5dfd0084a057ed7f33fcf9e8b82a99","unresolved":false,"context_lines":[{"line_number":352,"context_line":"                            \u0027is too old or the version is capped.\u0027, compute_id)"},{"line_number":353,"context_line":"                raise exception.ComputeHostNotFound(host\u003dcompute_id)"},{"line_number":354,"context_line":"        else:"},{"line_number":355,"context_line":"            version \u003d \u00271.4\u0027"},{"line_number":356,"context_line":"        cctxt \u003d self.client.prepare(version\u003dversion)"},{"line_number":357,"context_line":"        return cctxt.call(ctxt, \u0027compute_node_get\u0027, compute_id\u003dcompute_id)"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7f231b9d_fee4f50e","line":355,"range":{"start_line":355,"start_character":12,"end_line":355,"end_character":27},"in_reply_to":"7f231b9d_6ae1462a","updated":"2017-06-15 13:10:14.000000000","message":"I\u0027m not sure I understand your question. We were sending 1.4 before this change. Now we only send 1.38 if we\u0027re given a uuid and we can send 1.38.","commit_id":"753ec1b3eada4ed33245aef796ded60c22b1b1a9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"add7f5899f495de4429c4b84a68b640687c8adc1","unresolved":false,"context_lines":[{"line_number":352,"context_line":"                            \u0027is too old or the version is capped.\u0027, compute_id)"},{"line_number":353,"context_line":"                raise exception.ComputeHostNotFound(host\u003dcompute_id)"},{"line_number":354,"context_line":"        else:"},{"line_number":355,"context_line":"            version \u003d \u00271.4\u0027"},{"line_number":356,"context_line":"        cctxt \u003d self.client.prepare(version\u003dversion)"},{"line_number":357,"context_line":"        return cctxt.call(ctxt, \u0027compute_node_get\u0027, compute_id\u003dcompute_id)"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7f231b9d_5b7c1082","line":355,"range":{"start_line":355,"start_character":12,"end_line":355,"end_character":27},"in_reply_to":"7f231b9d_fee4f50e","updated":"2017-06-15 17:46:52.000000000","message":"Actually, I think he\u0027s saying that we should send 1.38 if we\u0027re allowed, regardless of uuid-ness, and only fall back to 1.4 if not uuid-like and we\u0027re version-constrained. He\u0027s right, but especially since this is cellsv1, we need not stress over it. It works this way and we\u0027re being overly nice even trying to maintain the version compat for cellsv1 anyway :)","commit_id":"753ec1b3eada4ed33245aef796ded60c22b1b1a9"}],"nova/compute/api.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e6f4b07e474e812e4e73d5693f963c4d74ae1d12","unresolved":false,"context_lines":[{"line_number":4526,"context_line":"                        # we stored the ComputeNode.uuid in the HostMapping but"},{"line_number":4527,"context_line":"                        # we don\u0027t have that. It could be added but would"},{"line_number":4528,"context_line":"                        # require an online data migration to update existing"},{"line_number":4529,"context_line":"                        # host mappings."},{"line_number":4530,"context_line":"                        return objects.ComputeNode.get_by_uuid(context,"},{"line_number":4531,"context_line":"                                                               compute_id)"},{"line_number":4532,"context_line":"                    return objects.ComputeNode.get_by_id(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_06681b1f","line":4529,"updated":"2017-05-02 15:03:14.000000000","message":"Can we begin to lay the groundwork, perhaps in another change?  Or should that be deferred to the next cycle?","commit_id":"ad3a68d8130415a039b9b317e1d6d3c4af7786dc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"90e16f082ec042f3f25ae25b46d315823d5c619f","unresolved":false,"context_lines":[{"line_number":4526,"context_line":"                        # we stored the ComputeNode.uuid in the HostMapping but"},{"line_number":4527,"context_line":"                        # we don\u0027t have that. It could be added but would"},{"line_number":4528,"context_line":"                        # require an online data migration to update existing"},{"line_number":4529,"context_line":"                        # host mappings."},{"line_number":4530,"context_line":"                        return objects.ComputeNode.get_by_uuid(context,"},{"line_number":4531,"context_line":"                                                               compute_id)"},{"line_number":4532,"context_line":"                    return objects.ComputeNode.get_by_id(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_7a5530fa","line":4529,"in_reply_to":"5ff73747_06681b1f","updated":"2017-05-02 16:33:20.000000000","message":"It\u0027s a big change so not something I plan on working into this series, since it requires an online data migration. I think we just leave this here until we sort out if/when we ever need to optimize.","commit_id":"ad3a68d8130415a039b9b317e1d6d3c4af7786dc"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"24da33c7edd04c27c55ce0b0aab1e531c9df9726","unresolved":false,"context_lines":[{"line_number":4533,"context_line":"                                                         int(compute_id))"},{"line_number":4534,"context_line":"                except exception.ComputeHostNotFound:"},{"line_number":4535,"context_line":"                    # NOTE(danms): Keep looking in other cells"},{"line_number":4536,"context_line":"                    continue"},{"line_number":4537,"context_line":""},{"line_number":4538,"context_line":"        raise exception.ComputeHostNotFound(host\u003dcompute_id)"},{"line_number":4539,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_d61e536f","line":4536,"updated":"2017-05-15 09:08:36.000000000","message":"This isn\u0027t related to this patch directly, just curious why we didn\u0027t raise exception for non-unique compute node found at here, just like https://github.com/openstack/nova/blob/master/nova/exception.py#L435","commit_id":"c6065d1ba6e1dffb3d1531f736fde81e442737fa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"25cb8593fcf6e35545c173b8a860755b86e84973","unresolved":false,"context_lines":[{"line_number":4533,"context_line":"                                                         int(compute_id))"},{"line_number":4534,"context_line":"                except exception.ComputeHostNotFound:"},{"line_number":4535,"context_line":"                    # NOTE(danms): Keep looking in other cells"},{"line_number":4536,"context_line":"                    continue"},{"line_number":4537,"context_line":""},{"line_number":4538,"context_line":"        raise exception.ComputeHostNotFound(host\u003dcompute_id)"},{"line_number":4539,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_e8aa8383","line":4536,"in_reply_to":"1f013ff3_d61e536f","updated":"2017-05-15 15:28:27.000000000","message":"Good question. I remembered pointing this out in the original change that added this:\n\nhttps://review.openstack.org/#/c/442162/11/nova/compute/api.py@4404\n\nBut apparently I never published those comments. :( So they were never addressed.","commit_id":"c6065d1ba6e1dffb3d1531f736fde81e442737fa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8124ce6f3a885f2c59d17dddaf39aa35dd78795","unresolved":false,"context_lines":[{"line_number":4533,"context_line":"                                                         int(compute_id))"},{"line_number":4534,"context_line":"                except exception.ComputeHostNotFound:"},{"line_number":4535,"context_line":"                    # NOTE(danms): Keep looking in other cells"},{"line_number":4536,"context_line":"                    continue"},{"line_number":4537,"context_line":""},{"line_number":4538,"context_line":"        raise exception.ComputeHostNotFound(host\u003dcompute_id)"},{"line_number":4539,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_281aab7c","line":4536,"in_reply_to":"1f013ff3_e89e0306","updated":"2017-05-15 15:39:27.000000000","message":"https://bugs.launchpad.net/nova/+bug/1690845","commit_id":"c6065d1ba6e1dffb3d1531f736fde81e442737fa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"aedefedb3c81bb1c79cce73842372be0dbf7e23e","unresolved":false,"context_lines":[{"line_number":4533,"context_line":"                                                         int(compute_id))"},{"line_number":4534,"context_line":"                except exception.ComputeHostNotFound:"},{"line_number":4535,"context_line":"                    # NOTE(danms): Keep looking in other cells"},{"line_number":4536,"context_line":"                    continue"},{"line_number":4537,"context_line":""},{"line_number":4538,"context_line":"        raise exception.ComputeHostNotFound(host\u003dcompute_id)"},{"line_number":4539,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_e89e0306","line":4536,"in_reply_to":"1f013ff3_e8aa8383","updated":"2017-05-15 15:34:27.000000000","message":"We should probably fix this (in a separate change). There are two API methods that call this, hypervisor show and hypervisor uptime. We could handle and return a 400 in the uptime case, but show doesn\u0027t have 400 as an expected error, only 404. So I\u0027m not sure if a microversion would be required there, but I don\u0027t think so as we say that 400 is assumed:\n\nhttps://docs.openstack.org/developer/nova/api_microversion_dev.html#f2\n\nAlthough the reason stated there for 400 is because the request body validation can fail, but hypervisor show does not have a request body, so returning 400 from that without a microversion is kind of cheating. We could return 404 as a hack basically, like, yes we found it, but we found multiple, so we don\u0027t know which one to pick and therefore we could not find the right one. Anyway, I\u0027ll open a bug.","commit_id":"c6065d1ba6e1dffb3d1531f736fde81e442737fa"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"46d4cd369f80734af97657c71a233b32d0ab1215","unresolved":false,"context_lines":[{"line_number":1874,"context_line":""},{"line_number":1875,"context_line":"                    # We have to get the flavor from the instance while the"},{"line_number":1876,"context_line":"                    # context is still targeted to where the instance lives."},{"line_number":1877,"context_line":"                    quota_flavor \u003d self._get_flavor_for_reservation(instance)"},{"line_number":1878,"context_line":""},{"line_number":1879,"context_line":"                    with nova_context.target_cell(context, None) as cctxt:"},{"line_number":1880,"context_line":"                        # This is confusing but actually decrements quota usage"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_9aeec289","line":1877,"updated":"2017-05-25 21:30:40.000000000","message":"Were these deletions part of a rebase?","commit_id":"741fae6f736b2ea15a50edc94141d5c3596f5c59"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fd905f9e7107b22a9918ff770f877c31b682e666","unresolved":false,"context_lines":[{"line_number":1874,"context_line":""},{"line_number":1875,"context_line":"                    # We have to get the flavor from the instance while the"},{"line_number":1876,"context_line":"                    # context is still targeted to where the instance lives."},{"line_number":1877,"context_line":"                    quota_flavor \u003d self._get_flavor_for_reservation(instance)"},{"line_number":1878,"context_line":""},{"line_number":1879,"context_line":"                    with nova_context.target_cell(context, None) as cctxt:"},{"line_number":1880,"context_line":"                        # This is confusing but actually decrements quota usage"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_b04be55d","line":1877,"in_reply_to":"ff0f0b1f_9aeec289","updated":"2017-05-25 22:22:29.000000000","message":"Huh? Were you doing a diff with the last patch set?","commit_id":"741fae6f736b2ea15a50edc94141d5c3596f5c59"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7ca6e8c6d1cc56aa01dfe1ddce89d85a1c4ec831","unresolved":false,"context_lines":[{"line_number":1874,"context_line":""},{"line_number":1875,"context_line":"                    # We have to get the flavor from the instance while the"},{"line_number":1876,"context_line":"                    # context is still targeted to where the instance lives."},{"line_number":1877,"context_line":"                    quota_flavor \u003d self._get_flavor_for_reservation(instance)"},{"line_number":1878,"context_line":""},{"line_number":1879,"context_line":"                    with nova_context.target_cell(context, None) as cctxt:"},{"line_number":1880,"context_line":"                        # This is confusing but actually decrements quota usage"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_cbc0ea2d","line":1877,"in_reply_to":"ff0f0b1f_b04be55d","updated":"2017-05-25 23:26:29.000000000","message":"Yeah.  Comparing with base they ain\u0027t there, so must\u0027ve been rebasage.","commit_id":"741fae6f736b2ea15a50edc94141d5c3596f5c59"}],"nova/tests/unit/cells/test_cells_rpcapi.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"069c1c0ca23bd0b8f543d17cbf82c53b415836a9","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                \u0027fake_compute_id\u0027)"},{"line_number":370,"context_line":"        expected_args \u003d {\u0027compute_id\u0027: \u0027fake_compute_id\u0027}"},{"line_number":371,"context_line":"        self._check_result(call_info, \u0027compute_node_get\u0027,"},{"line_number":372,"context_line":"                           expected_args, version\u003d\u00271.4\u0027)"},{"line_number":373,"context_line":"        self.assertEqual(\u0027fake_response\u0027, result)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def test_compute_node_get_too_old(self):"}],"source_content_type":"text/x-python","patch_set":14,"id":"7f231b9d_3f237658","line":372,"updated":"2017-06-16 01:10:27.000000000","message":"Looks like this tests that we downgrade if not uuid-like.","commit_id":"753ec1b3eada4ed33245aef796ded60c22b1b1a9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"069c1c0ca23bd0b8f543d17cbf82c53b415836a9","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                              self.cells_rpcapi.compute_node_get,"},{"line_number":380,"context_line":"                              self.fake_context, uuids.compute_id)"},{"line_number":381,"context_line":"        can_send_version_mock.assert_called_once_with(\u00271.38\u0027)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def test_actions_get(self):"},{"line_number":384,"context_line":"        fake_instance \u003d {\u0027uuid\u0027: uuids.instance, \u0027cell_name\u0027: \u0027region!child\u0027}"},{"line_number":385,"context_line":"        call_info \u003d self._stub_rpc_method(\u0027call\u0027, \u0027fake_response\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7f231b9d_3fe816e0","line":382,"updated":"2017-06-16 01:10:27.000000000","message":"It looks like we\u0027re missing a test where compute_id is a uuid and we verify we sent version 1.38.","commit_id":"753ec1b3eada4ed33245aef796ded60c22b1b1a9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cea264302358e6f54a41ee82e2596b2be5685a02","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                              self.cells_rpcapi.compute_node_get,"},{"line_number":380,"context_line":"                              self.fake_context, uuids.compute_id)"},{"line_number":381,"context_line":"        can_send_version_mock.assert_called_once_with(\u00271.38\u0027)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def test_actions_get(self):"},{"line_number":384,"context_line":"        fake_instance \u003d {\u0027uuid\u0027: uuids.instance, \u0027cell_name\u0027: \u0027region!child\u0027}"},{"line_number":385,"context_line":"        call_info \u003d self._stub_rpc_method(\u0027call\u0027, \u0027fake_response\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7f231b9d_cf05b315","line":382,"in_reply_to":"7f231b9d_3fe816e0","updated":"2017-06-19 13:08:01.000000000","message":"Will add.","commit_id":"753ec1b3eada4ed33245aef796ded60c22b1b1a9"}],"nova/tests/unit/compute/test_host_api.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"24da33c7edd04c27c55ce0b0aab1e531c9df9726","unresolved":false,"context_lines":[{"line_number":427,"context_line":"                       side_effect\u003d[exception.ComputeHostNotFound("},{"line_number":428,"context_line":"                                        host\u003duuids.cn_uuid),"},{"line_number":429,"context_line":"                                    objects.ComputeNode(uuid\u003duuids.cn_uuid)])"},{"line_number":430,"context_line":"    def test_compute_node_get_using_uuid(self, compute_get_by_uuid,"},{"line_number":431,"context_line":"                                         cell_mappings_get_all):"},{"line_number":432,"context_line":"        \"\"\"Tests that we can lookup a compute node in the HostAPI using a uuid."},{"line_number":433,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_1604bb16","line":430,"updated":"2017-05-15 09:08:36.000000000","message":"one more case for totally not found?","commit_id":"c6065d1ba6e1dffb3d1531f736fde81e442737fa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"946ec67028f857760d3648923a503f9edcff4fcd","unresolved":false,"context_lines":[{"line_number":427,"context_line":"                       side_effect\u003d[exception.ComputeHostNotFound("},{"line_number":428,"context_line":"                                        host\u003duuids.cn_uuid),"},{"line_number":429,"context_line":"                                    objects.ComputeNode(uuid\u003duuids.cn_uuid)])"},{"line_number":430,"context_line":"    def test_compute_node_get_using_uuid(self, compute_get_by_uuid,"},{"line_number":431,"context_line":"                                         cell_mappings_get_all):"},{"line_number":432,"context_line":"        \"\"\"Tests that we can lookup a compute node in the HostAPI using a uuid."},{"line_number":433,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_33ffbc02","line":430,"in_reply_to":"1f013ff3_1604bb16","updated":"2017-05-15 15:40:12.000000000","message":"I was unable to find an existing test that covers this so I can add one.","commit_id":"c6065d1ba6e1dffb3d1531f736fde81e442737fa"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7ae8612d0d6a74d1878724875b9170a980552484","unresolved":false,"context_lines":[{"line_number":435,"context_line":"        # cell0 should have been skipped, and the compute node wasn\u0027t found"},{"line_number":436,"context_line":"        # in cell1 so we checked cell2 and found it"},{"line_number":437,"context_line":"        compute_get_by_uuid.assert_has_calls("},{"line_number":438,"context_line":"            [mock.call(self.ctxt, uuids.cn_uuid) for _ in range(2)])"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"class ComputeHostAPICellsTestCase(ComputeHostAPITestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f044301_80762fd8","line":438,"range":{"start_line":438,"start_character":48,"end_line":438,"end_character":66},"updated":"2017-05-04 21:38:59.000000000","message":"or\n\n [mock.call(self.ctxt, uuids.cn_uuid)] * 2","commit_id":"c6065d1ba6e1dffb3d1531f736fde81e442737fa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e2a020fcc7effdfe334085cb9727c79d2b3e6c9","unresolved":false,"context_lines":[{"line_number":435,"context_line":"        # cell0 should have been skipped, and the compute node wasn\u0027t found"},{"line_number":436,"context_line":"        # in cell1 so we checked cell2 and found it"},{"line_number":437,"context_line":"        compute_get_by_uuid.assert_has_calls("},{"line_number":438,"context_line":"            [mock.call(self.ctxt, uuids.cn_uuid) for _ in range(2)])"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"class ComputeHostAPICellsTestCase(ComputeHostAPITestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_b37d0c1e","line":438,"range":{"start_line":438,"start_character":48,"end_line":438,"end_character":66},"in_reply_to":"3f044301_80762fd8","updated":"2017-05-15 15:57:23.000000000","message":"Done","commit_id":"c6065d1ba6e1dffb3d1531f736fde81e442737fa"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"069c1c0ca23bd0b8f543d17cbf82c53b415836a9","unresolved":false,"context_lines":[{"line_number":462,"context_line":"        # cell0 should have been skipped, and the compute node wasn\u0027t found"},{"line_number":463,"context_line":"        # in cell1 so we checked cell2 and found it"},{"line_number":464,"context_line":"        compute_get_by_uuid.assert_has_calls("},{"line_number":465,"context_line":"            [mock.call(self.ctxt, uuids.cn_uuid)] * 2)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    @mock.patch.object(objects.CellMappingList, \u0027get_all\u0027,"},{"line_number":468,"context_line":"                       return_value\u003dobjects.CellMappingList(objects\u003d["}],"source_content_type":"text/x-python","patch_set":14,"id":"7f231b9d_3fd13624","line":465,"updated":"2017-06-16 01:10:27.000000000","message":"FYI this would still pass if cell0 was not skipped. assert_has_calls doesn\u0027t mean exact bounds, just that those calls are in the call list [1]. The way I usually bound it is by\n\n self.assertEqual(2, compute_get_by_uuid.call_count)\n\n[1] https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.assert_has_calls","commit_id":"753ec1b3eada4ed33245aef796ded60c22b1b1a9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cea264302358e6f54a41ee82e2596b2be5685a02","unresolved":false,"context_lines":[{"line_number":462,"context_line":"        # cell0 should have been skipped, and the compute node wasn\u0027t found"},{"line_number":463,"context_line":"        # in cell1 so we checked cell2 and found it"},{"line_number":464,"context_line":"        compute_get_by_uuid.assert_has_calls("},{"line_number":465,"context_line":"            [mock.call(self.ctxt, uuids.cn_uuid)] * 2)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    @mock.patch.object(objects.CellMappingList, \u0027get_all\u0027,"},{"line_number":468,"context_line":"                       return_value\u003dobjects.CellMappingList(objects\u003d["}],"source_content_type":"text/x-python","patch_set":14,"id":"7f231b9d_da1a136d","line":465,"in_reply_to":"7f231b9d_3fd13624","updated":"2017-06-19 13:08:01.000000000","message":"Done","commit_id":"753ec1b3eada4ed33245aef796ded60c22b1b1a9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"069c1c0ca23bd0b8f543d17cbf82c53b415836a9","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        # cell0 should have been skipped, and the compute node wasn\u0027t found"},{"line_number":494,"context_line":"        # in cell1 or cell2."},{"line_number":495,"context_line":"        compute_get_by_uuid.assert_has_calls("},{"line_number":496,"context_line":"            [mock.call(self.ctxt, uuids.cn_uuid)] * 2)"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"class ComputeHostAPICellsTestCase(ComputeHostAPITestCase):"}],"source_content_type":"text/x-python","patch_set":14,"id":"7f231b9d_9fa72abe","line":496,"updated":"2017-06-16 01:10:27.000000000","message":"Same here.","commit_id":"753ec1b3eada4ed33245aef796ded60c22b1b1a9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b76ad3b6536a2a75bef1dbb9b4632b4cedff57ee","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        # cell0 should have been skipped, and the compute node wasn\u0027t found"},{"line_number":494,"context_line":"        # in cell1 or cell2."},{"line_number":495,"context_line":"        compute_get_by_uuid.assert_has_calls("},{"line_number":496,"context_line":"            [mock.call(self.ctxt, uuids.cn_uuid)] * 2)"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"class ComputeHostAPICellsTestCase(ComputeHostAPITestCase):"}],"source_content_type":"text/x-python","patch_set":14,"id":"7f231b9d_5ab043dd","line":496,"in_reply_to":"7f231b9d_9fa72abe","updated":"2017-06-19 13:29:13.000000000","message":"Done","commit_id":"753ec1b3eada4ed33245aef796ded60c22b1b1a9"}]}
