)]}'
{"nova/compute/api.py":[{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"fdb66ab8892cb25e9c28036e53154c3a45ef5a05","unresolved":false,"context_lines":[{"line_number":4858,"context_line":"        # *node* (identified by a UUID) and not a nova-compute *service*. This"},{"line_number":4859,"context_line":"        # is done so that Ironic nodes (many of which are managed by a single"},{"line_number":4860,"context_line":"        # nova-compute service) can be associated with aggregates."},{"line_number":4861,"context_line":"        if uuidutils.is_uuid_like(host_or_node):"},{"line_number":4862,"context_line":"            # We need to loop over all cells, looking for a compute node"},{"line_number":4863,"context_line":"            # matching the UUID supplied as \"host_name\""},{"line_number":4864,"context_line":"            def find_compute_node_by_uuid(ctx, uuid):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_875c93ed","line":4861,"updated":"2017-12-08 22:50:41.000000000","message":"I guess, there are no restrictions to actually use UUID as a name for the host, and with this change we will break what previously work perfectly fine.\n\nWhy not do the search for the compute host, and if that fail, do the search for provided ironic node UUID?","commit_id":"221b80e1dd62c80a5906953a05ea0bd9ef874ca4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"237f8881186023503bdb7d9647eac50747c3de00","unresolved":false,"context_lines":[{"line_number":4858,"context_line":"        # *node* (identified by a UUID) and not a nova-compute *service*. This"},{"line_number":4859,"context_line":"        # is done so that Ironic nodes (many of which are managed by a single"},{"line_number":4860,"context_line":"        # nova-compute service) can be associated with aggregates."},{"line_number":4861,"context_line":"        if uuidutils.is_uuid_like(host_or_node):"},{"line_number":4862,"context_line":"            # We need to loop over all cells, looking for a compute node"},{"line_number":4863,"context_line":"            # matching the UUID supplied as \"host_name\""},{"line_number":4864,"context_line":"            def find_compute_node_by_uuid(ctx, uuid):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_0e90ca42","line":4861,"in_reply_to":"df87a7cf_7fa3eb00","updated":"2017-12-18 15:56:13.000000000","message":"Done","commit_id":"221b80e1dd62c80a5906953a05ea0bd9ef874ca4"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"19ee22efba53285007a681e50996eaca781262a8","unresolved":false,"context_lines":[{"line_number":4858,"context_line":"        # *node* (identified by a UUID) and not a nova-compute *service*. This"},{"line_number":4859,"context_line":"        # is done so that Ironic nodes (many of which are managed by a single"},{"line_number":4860,"context_line":"        # nova-compute service) can be associated with aggregates."},{"line_number":4861,"context_line":"        if uuidutils.is_uuid_like(host_or_node):"},{"line_number":4862,"context_line":"            # We need to loop over all cells, looking for a compute node"},{"line_number":4863,"context_line":"            # matching the UUID supplied as \"host_name\""},{"line_number":4864,"context_line":"            def find_compute_node_by_uuid(ctx, uuid):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_7fa3eb00","line":4861,"in_reply_to":"df87a7cf_875c93ed","updated":"2017-12-11 21:58:42.000000000","message":"I agree, I don\u0027t see any hard restrictions on host being a hostname or hostname-like-thing. This will break anyone crazy enough to set `host\u003d\u003csome-uuid\u003e` in nova.conf.","commit_id":"221b80e1dd62c80a5906953a05ea0bd9ef874ca4"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"19ee22efba53285007a681e50996eaca781262a8","unresolved":false,"context_lines":[{"line_number":4871,"context_line":"            cell_results \u003d nova_context.scatter_gather_skip_cell0("},{"line_number":4872,"context_line":"                ctx, find_compute_node_by_uuid, host_or_node)"},{"line_number":4873,"context_line":"            for res in cell_results.values():"},{"line_number":4874,"context_line":"                if res is True:  # res could be the did not respond sentinel..."},{"line_number":4875,"context_line":"                    return True"},{"line_number":4876,"context_line":"            return False"},{"line_number":4877,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_1fb97f13","line":4874,"updated":"2017-12-11 21:58:42.000000000","message":"The sentinel is truthy??","commit_id":"221b80e1dd62c80a5906953a05ea0bd9ef874ca4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"237f8881186023503bdb7d9647eac50747c3de00","unresolved":false,"context_lines":[{"line_number":4871,"context_line":"            cell_results \u003d nova_context.scatter_gather_skip_cell0("},{"line_number":4872,"context_line":"                ctx, find_compute_node_by_uuid, host_or_node)"},{"line_number":4873,"context_line":"            for res in cell_results.values():"},{"line_number":4874,"context_line":"                if res is True:  # res could be the did not respond sentinel..."},{"line_number":4875,"context_line":"                    return True"},{"line_number":4876,"context_line":"            return False"},{"line_number":4877,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_2e958e33","line":4874,"in_reply_to":"df87a7cf_1fb97f13","updated":"2017-12-18 15:56:13.000000000","message":"Done","commit_id":"221b80e1dd62c80a5906953a05ea0bd9ef874ca4"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"643ca7a5591278647f345e50db7083f4b5aa5706","unresolved":false,"context_lines":[{"line_number":4957,"context_line":"            if res !\u003d nova_context.did_not_respond_sentinel:"},{"line_number":4958,"context_line":"                found_nodes \u003d found_nodes + res"},{"line_number":4959,"context_line":""},{"line_number":4960,"context_line":"        if found_nodes \u003d\u003d 1:"},{"line_number":4961,"context_line":"            return True"},{"line_number":4962,"context_line":"        elif found_nodes \u003e 1:"},{"line_number":4963,"context_line":"            LOG.debug(\"Searching for compute nodes matching %s \""},{"line_number":4964,"context_line":"                      \"found %d results but expected 1 result.\","},{"line_number":4965,"context_line":"                      host_or_node, len(found_nodes))"},{"line_number":4966,"context_line":"        return False"},{"line_number":4967,"context_line":""},{"line_number":4968,"context_line":"    @wrap_exception()"},{"line_number":4969,"context_line":"    def add_host_to_aggregate(self, context, aggregate_id, host_name):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_13954087","line":4966,"range":{"start_line":4960,"start_character":0,"end_line":4966,"end_character":20},"updated":"2017-12-19 11:39:35.000000000","message":"That code might be simplified like:\n\n    if found_nodes \u003e 1:\n        LOG.debug(\"Searching for compute nodes matching %s \"\n                  \"found %d results but expected 1 result.\",\n                  host_or_node, len(found_nodes))\n        return False\n\n    return found_nodes \u003d\u003d 1","commit_id":"dc59f7e7503add97a7f52af9efddc5d1eb21f4d1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d07dd39c2daab9d6f7fbaf4e1b5ebdecf51430c3","unresolved":false,"context_lines":[{"line_number":4957,"context_line":"            if res !\u003d nova_context.did_not_respond_sentinel:"},{"line_number":4958,"context_line":"                found_nodes \u003d found_nodes + res"},{"line_number":4959,"context_line":""},{"line_number":4960,"context_line":"        if found_nodes \u003d\u003d 1:"},{"line_number":4961,"context_line":"            return True"},{"line_number":4962,"context_line":"        elif found_nodes \u003e 1:"},{"line_number":4963,"context_line":"            LOG.debug(\"Searching for compute nodes matching %s \""},{"line_number":4964,"context_line":"                      \"found %d results but expected 1 result.\","},{"line_number":4965,"context_line":"                      host_or_node, len(found_nodes))"},{"line_number":4966,"context_line":"        return False"},{"line_number":4967,"context_line":""},{"line_number":4968,"context_line":"    @wrap_exception()"},{"line_number":4969,"context_line":"    def add_host_to_aggregate(self, context, aggregate_id, host_name):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_6715e248","line":4966,"range":{"start_line":4960,"start_character":0,"end_line":4966,"end_character":20},"in_reply_to":"df87a7cf_13954087","updated":"2017-12-19 14:14:42.000000000","message":"good point. fixed.","commit_id":"dc59f7e7503add97a7f52af9efddc5d1eb21f4d1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2f37f2c746a549a19f353c72146bc3059adc9c72","unresolved":false,"context_lines":[{"line_number":5119,"context_line":"        try:"},{"line_number":5120,"context_line":"            mapping \u003d objects.HostMapping.get_by_host(ctx, host_or_node)"},{"line_number":5121,"context_line":"            nova_context.set_target_cell(ctx, mapping.cell_mapping)"},{"line_number":5122,"context_line":"            objects.Service.get_by_compute_host(ctx, host_or_node)"},{"line_number":5123,"context_line":"            return True"},{"line_number":5124,"context_line":"        except exception.HostMappingNotFound:"},{"line_number":5125,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf659307_389c895c","line":5122,"updated":"2018-04-04 15:40:54.000000000","message":"if, for whatever reason, this raises a ComputeHostNotFound exception, we\u0027re ok with it being raised? (Just checking cuz it isn\u0027t mentioned in docstring above.)","commit_id":"3e623d6f3ff62fead9cf134ac6c558c75f96b149"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"34c85416eb33f2e56f4f7b1f5857af0377eacc32","unresolved":false,"context_lines":[{"line_number":5119,"context_line":"        try:"},{"line_number":5120,"context_line":"            mapping \u003d objects.HostMapping.get_by_host(ctx, host_or_node)"},{"line_number":5121,"context_line":"            nova_context.set_target_cell(ctx, mapping.cell_mapping)"},{"line_number":5122,"context_line":"            objects.Service.get_by_compute_host(ctx, host_or_node)"},{"line_number":5123,"context_line":"            return True"},{"line_number":5124,"context_line":"        except exception.HostMappingNotFound:"},{"line_number":5125,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf659307_46a7cc0c","line":5122,"in_reply_to":"bf659307_0d459017","updated":"2018-04-09 13:58:26.000000000","message":"Yup, I saw that, which is why I thought it was ok, but wanted to confirm. Thx!","commit_id":"3e623d6f3ff62fead9cf134ac6c558c75f96b149"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d9f8e861f82709c9572025a835ae6df00544154f","unresolved":false,"context_lines":[{"line_number":5119,"context_line":"        try:"},{"line_number":5120,"context_line":"            mapping \u003d objects.HostMapping.get_by_host(ctx, host_or_node)"},{"line_number":5121,"context_line":"            nova_context.set_target_cell(ctx, mapping.cell_mapping)"},{"line_number":5122,"context_line":"            objects.Service.get_by_compute_host(ctx, host_or_node)"},{"line_number":5123,"context_line":"            return True"},{"line_number":5124,"context_line":"        except exception.HostMappingNotFound:"},{"line_number":5125,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf659307_0d459017","line":5122,"in_reply_to":"bf659307_389c895c","updated":"2018-04-06 21:43:19.000000000","message":"Yup, we\u0027re ok to raise it since all callers catch it. And indeed, if this method returns False, you will note that callers raise ComputeHostNotFound :)","commit_id":"3e623d6f3ff62fead9cf134ac6c558c75f96b149"}],"nova/tests/functional/compute/test_aggregate_api.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5b6933beeaf7c3563e9ed2f50328a0195d38b334","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_compute_nodename(self):"},{"line_number":117,"context_line":"        \"\"\"Test to make sure we can associate and disassociate an aggregate"},{"line_number":118,"context_line":"        with a service host."},{"line_number":119,"context_line":"        \"\"\""},{"line_number":120,"context_line":"        agg \u003d objects.Aggregate(self.ctxt, name\u003d\"rack1_baremetal\")"},{"line_number":121,"context_line":"        agg.create()"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_ca8aa568","line":118,"range":{"start_line":118,"start_character":15,"end_line":118,"end_character":27},"updated":"2017-12-08 18:59:27.000000000","message":"should be \"compute node\"","commit_id":"221b80e1dd62c80a5906953a05ea0bd9ef874ca4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"237f8881186023503bdb7d9647eac50747c3de00","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_compute_nodename(self):"},{"line_number":117,"context_line":"        \"\"\"Test to make sure we can associate and disassociate an aggregate"},{"line_number":118,"context_line":"        with a service host."},{"line_number":119,"context_line":"        \"\"\""},{"line_number":120,"context_line":"        agg \u003d objects.Aggregate(self.ctxt, name\u003d\"rack1_baremetal\")"},{"line_number":121,"context_line":"        agg.create()"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_aea0be91","line":118,"range":{"start_line":118,"start_character":15,"end_line":118,"end_character":27},"in_reply_to":"df87a7cf_ca8aa568","updated":"2017-12-18 15:56:13.000000000","message":"Done","commit_id":"221b80e1dd62c80a5906953a05ea0bd9ef874ca4"}]}
