)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"4888f001c88e71bcbc69cffa44eec0491c01f766","unresolved":false,"context_lines":[{"line_number":13,"context_line":"microversion. This way when the admin gets partial results for certain"},{"line_number":14,"context_line":"records, he/she will know that that particular cell is unreachable."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Related to blueprint bp/handling-down-cell"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I9cf5e4eb7f70c495001fd064c060d7d5b3dd5bff"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f7c97a3_436dc4ff","line":16,"range":{"start_line":16,"start_character":21,"end_line":16,"end_character":23},"updated":"2018-07-23 11:57:59.000000000","message":"yikes","commit_id":"9c778f52a7a2d11cde02a28496dd3628ac2512c1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b6d747232c5f3ed850a332663508c92ab6b59f5","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch modifies the existing behavior of nova service-list which"},{"line_number":10,"context_line":"ignores a down cell to returning a partial construct consisting of"},{"line_number":11,"context_line":"the binary and host info obtained from the API host_mappings table"},{"line_number":12,"context_line":"for the compute services in the down cells by introducing a new API"},{"line_number":13,"context_line":"microversion. This way when the admin gets partial results for certain"},{"line_number":14,"context_line":"records, he/she will know that that particular cell is unreachable."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Related to blueprint handling-down-cell"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3f79a3b5_5de96416","line":13,"range":{"start_line":12,"start_character":58,"end_line":13,"end_character":13},"updated":"2018-10-26 13:32:00.000000000","message":"nit: again, I\u0027d mention this change is plumbing for that microversion, there are no behavior changes in the API until the end of the series of changes.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"14fa32853a0ed206586c3e06188482640d5a9c61","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch modifies the existing behavior of nova service-list which"},{"line_number":10,"context_line":"ignores a down cell to returning a partial construct consisting of"},{"line_number":11,"context_line":"the binary and host info obtained from the API host_mappings table"},{"line_number":12,"context_line":"for the compute services in the down cells by introducing a new API"},{"line_number":13,"context_line":"microversion. This way when the admin gets partial results for certain"},{"line_number":14,"context_line":"records, he/she will know that that particular cell is unreachable."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Related to blueprint handling-down-cell"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3f79a3b5_67692a24","line":13,"range":{"start_line":12,"start_character":58,"end_line":13,"end_character":13},"in_reply_to":"3f79a3b5_5de96416","updated":"2018-10-26 17:10:25.000000000","message":"I was thinking similar. When I read this, I was expecting to see microversion stuff in this change when there isn\u0027t, and this is just doing the pre-work needed to wire it up to the API at the end.\n\nAside: I\u0027ve been thinking about the \"quota behavior in the presence of down cells\" policy-driven thing we\u0027ve been kicking around. I plan to propose that in this series and I was thinking it needs to be part of the change that adds the new API microversion so that the one microversion captures both behavior changes. If we land it as a separate patch, it would have to have its own microversion, IIUC. Someone please correct me if I\u0027m wrong.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e6e329dabbe1209f0468af1ddf9f041652996503","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch modifies the existing behavior of nova service-list which"},{"line_number":10,"context_line":"ignores a down cell to returning a partial construct consisting of"},{"line_number":11,"context_line":"the binary and host info obtained from the API host_mappings table"},{"line_number":12,"context_line":"for the compute services in the down cells by introducing a new API"},{"line_number":13,"context_line":"microversion. This way when the admin gets partial results for certain"},{"line_number":14,"context_line":"records, he/she will know that that particular cell is unreachable."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Related to blueprint handling-down-cell"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3f79a3b5_8d3907a3","line":13,"range":{"start_line":12,"start_character":58,"end_line":13,"end_character":13},"in_reply_to":"3f79a3b5_67692a24","updated":"2018-10-26 18:36:28.000000000","message":"\u003e If we land it as a separate patch, it would have to have its own microversion, IIUC. Someone please correct me if I\u0027m wrong.\n\nThis and the server show/list changes further down the series are just plumbing. They pass a flag down from the REST API controller which will be enabled with the microversion at the end of the series, so I expect this to all be done with a single microversion.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"657bdb5c792d808e9095de836755975be20eaef1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch modifies the existing behavior of nova service-list which"},{"line_number":10,"context_line":"ignores a down cell to returning a partial construct consisting of"},{"line_number":11,"context_line":"the binary and host info obtained from the API host_mappings table"},{"line_number":12,"context_line":"for the compute services in the down cells by introducing a new API"},{"line_number":13,"context_line":"microversion. This way when the admin gets partial results for certain"},{"line_number":14,"context_line":"records, he/she will know that that particular cell is unreachable."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Related to blueprint handling-down-cell"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3f79a3b5_cd013fb7","line":13,"range":{"start_line":12,"start_character":58,"end_line":13,"end_character":13},"in_reply_to":"3f79a3b5_8d3907a3","updated":"2018-10-26 18:37:49.000000000","message":"\u003e so I expect this to all be done with a single microversion.\n\nDefinitely.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"}],"nova/api/openstack/compute/services.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"14fa32853a0ed206586c3e06188482640d5a9c61","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        context.can(services_policies.BASE_POLICY_NAME)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        _services \u003d ["},{"line_number":57,"context_line":"            s"},{"line_number":58,"context_line":"            for s in self.host_api.service_get_all(context, set_zones\u003dTrue,"},{"line_number":59,"context_line":"                all_cells\u003dTrue, cell_down_support\u003dFalse)"},{"line_number":60,"context_line":"            if s[\u0027binary\u0027] not in api_services"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_8696dd9f","line":57,"range":{"start_line":57,"start_character":11,"end_line":57,"end_character":12},"updated":"2018-10-26 17:10:25.000000000","message":"Weird that this wasn\u0027t indented 4 spaces before.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"}],"nova/compute/api.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d15b915f4b5c18a26f424867b8642971f6cee0d9","unresolved":false,"context_lines":[{"line_number":4971,"context_line":"                    services.extend(service)"},{"line_number":4972,"context_line":"                elif cell_down_support:"},{"line_number":4973,"context_line":"                    unavailable_service \u003d objects.ServiceList()"},{"line_number":4974,"context_line":"                    cm \u003d objects.CellMapping.get_by_uuid(context, cell)"},{"line_number":4975,"context_line":"                    hms \u003d objects.HostMappingList.get_by_cell_id(context,"},{"line_number":4976,"context_line":"                                                                 cm.id)"},{"line_number":4977,"context_line":"                    for hm in hms:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_432ed443","line":4974,"updated":"2018-08-21 15:18:46.000000000","message":"You can avoid this lookup by getting the mapping from the nova.context.CELLS cache, which has to be populated if you returned successfully from scatter_gather_all_cells().","commit_id":"18c04db082a6abfda606c185e95180a317df5044"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"2e22ebbaed70ea7c1b42e7c7bf8476d9a1280a19","unresolved":false,"context_lines":[{"line_number":4971,"context_line":"                    services.extend(service)"},{"line_number":4972,"context_line":"                elif cell_down_support:"},{"line_number":4973,"context_line":"                    unavailable_service \u003d objects.ServiceList()"},{"line_number":4974,"context_line":"                    cm \u003d objects.CellMapping.get_by_uuid(context, cell)"},{"line_number":4975,"context_line":"                    hms \u003d objects.HostMappingList.get_by_cell_id(context,"},{"line_number":4976,"context_line":"                                                                 cm.id)"},{"line_number":4977,"context_line":"                    for hm in hms:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_23913b9a","line":4974,"in_reply_to":"3f79a3b5_432ed443","updated":"2018-08-22 11:19:46.000000000","message":"Done","commit_id":"18c04db082a6abfda606c185e95180a317df5044"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"14fa32853a0ed206586c3e06188482640d5a9c61","unresolved":false,"context_lines":[{"line_number":5058,"context_line":"        return result"},{"line_number":5059,"context_line":""},{"line_number":5060,"context_line":"    def service_get_all(self, context, filters\u003dNone, set_zones\u003dFalse,"},{"line_number":5061,"context_line":"                        all_cells\u003dFalse, cell_down_support\u003dFalse):"},{"line_number":5062,"context_line":"        \"\"\"Returns a list of services, optionally filtering the results."},{"line_number":5063,"context_line":""},{"line_number":5064,"context_line":"        If specified, \u0027filters\u0027 should be a dictionary containing services"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_86481d62","line":5061,"range":{"start_line":5061,"start_character":41,"end_line":5061,"end_character":58},"updated":"2018-10-26 17:10:25.000000000","message":"+1 for adding to docstring.\n\nNote to self: we need this to be controllable via kwarg because the minimal construct behavior is to be enabled by an API microversion. Prior microversions should not return minimal constructs.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b6d747232c5f3ed850a332663508c92ab6b59f5","unresolved":false,"context_lines":[{"line_number":5058,"context_line":"        return result"},{"line_number":5059,"context_line":""},{"line_number":5060,"context_line":"    def service_get_all(self, context, filters\u003dNone, set_zones\u003dFalse,"},{"line_number":5061,"context_line":"                        all_cells\u003dFalse, cell_down_support\u003dFalse):"},{"line_number":5062,"context_line":"        \"\"\"Returns a list of services, optionally filtering the results."},{"line_number":5063,"context_line":""},{"line_number":5064,"context_line":"        If specified, \u0027filters\u0027 should be a dictionary containing services"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_fdc4f095","line":5061,"range":{"start_line":5061,"start_character":41,"end_line":5061,"end_character":58},"updated":"2018-10-26 13:32:00.000000000","message":"Let\u0027s document this in the docstring.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b6d747232c5f3ed850a332663508c92ab6b59f5","unresolved":false,"context_lines":[{"line_number":5080,"context_line":"            services \u003d []"},{"line_number":5081,"context_line":"            service_dict \u003d nova_context.scatter_gather_all_cells(context,"},{"line_number":5082,"context_line":"                objects.ServiceList.get_all, disabled, set_zones\u003dset_zones)"},{"line_number":5083,"context_line":"            for cell, service in service_dict.items():"},{"line_number":5084,"context_line":"                if not nova_context.is_cell_failure_sentinel(service):"},{"line_number":5085,"context_line":"                    services.extend(service)"},{"line_number":5086,"context_line":"                elif cell_down_support:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_fd0710c7","line":5083,"range":{"start_line":5083,"start_character":16,"end_line":5083,"end_character":20},"updated":"2018-10-26 13:32:00.000000000","message":"nit: rename this to cell_uuid so it\u0027s not confused as a cell mapping.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"14fa32853a0ed206586c3e06188482640d5a9c61","unresolved":false,"context_lines":[{"line_number":5080,"context_line":"            services \u003d []"},{"line_number":5081,"context_line":"            service_dict \u003d nova_context.scatter_gather_all_cells(context,"},{"line_number":5082,"context_line":"                objects.ServiceList.get_all, disabled, set_zones\u003dset_zones)"},{"line_number":5083,"context_line":"            for cell, service in service_dict.items():"},{"line_number":5084,"context_line":"                if not nova_context.is_cell_failure_sentinel(service):"},{"line_number":5085,"context_line":"                    services.extend(service)"},{"line_number":5086,"context_line":"                elif cell_down_support:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_0762b63d","line":5083,"range":{"start_line":5083,"start_character":16,"end_line":5083,"end_character":20},"in_reply_to":"3f79a3b5_fd0710c7","updated":"2018-10-26 17:10:25.000000000","message":"+1","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b6d747232c5f3ed850a332663508c92ab6b59f5","unresolved":false,"context_lines":[{"line_number":5083,"context_line":"            for cell, service in service_dict.items():"},{"line_number":5084,"context_line":"                if not nova_context.is_cell_failure_sentinel(service):"},{"line_number":5085,"context_line":"                    services.extend(service)"},{"line_number":5086,"context_line":"                elif cell_down_support:"},{"line_number":5087,"context_line":"                    unavailable_service \u003d objects.ServiceList()"},{"line_number":5088,"context_line":"                    cid \u003d [cm.id for cm in nova_context.CELLS"},{"line_number":5089,"context_line":"                           if cm.uuid \u003d\u003d cell]"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_ddbd7403","line":5086,"updated":"2018-10-26 13:32:00.000000000","message":"Would be good to leave a comment in this block about constructing a list of minimal service objects from the down cell.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"14fa32853a0ed206586c3e06188482640d5a9c61","unresolved":false,"context_lines":[{"line_number":5084,"context_line":"                if not nova_context.is_cell_failure_sentinel(service):"},{"line_number":5085,"context_line":"                    services.extend(service)"},{"line_number":5086,"context_line":"                elif cell_down_support:"},{"line_number":5087,"context_line":"                    unavailable_service \u003d objects.ServiceList()"},{"line_number":5088,"context_line":"                    cid \u003d [cm.id for cm in nova_context.CELLS"},{"line_number":5089,"context_line":"                           if cm.uuid \u003d\u003d cell]"},{"line_number":5090,"context_line":"                    hms \u003d objects.HostMappingList.get_by_cell_id(context, cid)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_469c45bd","line":5087,"range":{"start_line":5087,"start_character":20,"end_line":5087,"end_character":39},"updated":"2018-10-26 17:10:25.000000000","message":"Nit: unavailable_services","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b6d747232c5f3ed850a332663508c92ab6b59f5","unresolved":false,"context_lines":[{"line_number":5087,"context_line":"                    unavailable_service \u003d objects.ServiceList()"},{"line_number":5088,"context_line":"                    cid \u003d [cm.id for cm in nova_context.CELLS"},{"line_number":5089,"context_line":"                           if cm.uuid \u003d\u003d cell]"},{"line_number":5090,"context_line":"                    hms \u003d objects.HostMappingList.get_by_cell_id(context, cid)"},{"line_number":5091,"context_line":"                    for hm in hms:"},{"line_number":5092,"context_line":"                        unavailable_service.objects.append(objects.Service("},{"line_number":5093,"context_line":"                            binary\u003d\u0027nova-compute\u0027, host\u003dhm.host))"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_7d66a0be","line":5090,"range":{"start_line":5090,"start_character":74,"end_line":5090,"end_character":77},"updated":"2018-10-26 13:32:00.000000000","message":"How does this work? You\u0027re passing a list to a method that takes an integer.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"14fa32853a0ed206586c3e06188482640d5a9c61","unresolved":false,"context_lines":[{"line_number":5087,"context_line":"                    unavailable_service \u003d objects.ServiceList()"},{"line_number":5088,"context_line":"                    cid \u003d [cm.id for cm in nova_context.CELLS"},{"line_number":5089,"context_line":"                           if cm.uuid \u003d\u003d cell]"},{"line_number":5090,"context_line":"                    hms \u003d objects.HostMappingList.get_by_cell_id(context, cid)"},{"line_number":5091,"context_line":"                    for hm in hms:"},{"line_number":5092,"context_line":"                        unavailable_service.objects.append(objects.Service("},{"line_number":5093,"context_line":"                            binary\u003d\u0027nova-compute\u0027, host\u003dhm.host))"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_274812b2","line":5090,"range":{"start_line":5090,"start_character":74,"end_line":5090,"end_character":77},"in_reply_to":"3f79a3b5_7d66a0be","updated":"2018-10-26 17:10:25.000000000","message":"Good catch. Must mean this isn\u0027t covered by tests.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b6d747232c5f3ed850a332663508c92ab6b59f5","unresolved":false,"context_lines":[{"line_number":5094,"context_line":"                    LOG.warning(\"Cell %s is not responding and hence only \""},{"line_number":5095,"context_line":"                                \"partial results are available from this \""},{"line_number":5096,"context_line":"                                \"cell.\", cell)"},{"line_number":5097,"context_line":"                    services.extend(unavailable_service)"},{"line_number":5098,"context_line":"                else:"},{"line_number":5099,"context_line":"                    LOG.warning(\"Cell %s is not responding and hence skipped \""},{"line_number":5100,"context_line":"                                \"from the results.\", cell)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_bdf6788f","line":5097,"updated":"2018-10-26 13:32:00.000000000","message":"So unlike the instance listing, where we prefix the list with the down cell results, here we\u0027re just mixing them in as we hit them. I guess that might be OK here since there is explicit sorting when listing services, but just something I noticed.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0d149b5b772579bf2163eec863eec26f11e0658d","unresolved":false,"context_lines":[{"line_number":5110,"context_line":"                    services.extend(service)"},{"line_number":5111,"context_line":"                elif cell_down_support:"},{"line_number":5112,"context_line":"                    unavailable_services \u003d objects.ServiceList()"},{"line_number":5113,"context_line":"                    cid \u003d [cm.id for cm in nova_context.CELLS"},{"line_number":5114,"context_line":"                           if cm.uuid \u003d\u003d cell_uuid]"},{"line_number":5115,"context_line":"                    # We know cid[0] is in the list because we are using the"},{"line_number":5116,"context_line":"                    # same list that scatter_gather_all_cells used"},{"line_number":5117,"context_line":"                    hms \u003d objects.HostMappingList.get_by_cell_id(context,"}],"source_content_type":"text/x-python","patch_set":24,"id":"3f79a3b5_1f706841","line":5114,"range":{"start_line":5113,"start_character":26,"end_line":5114,"end_character":51},"updated":"2018-10-31 21:11:34.000000000","message":"nit: seems kind of weird to build a list out of this; we could be needlessly iterating over cells we know we don\u0027t care about for this service, but meh this is trivial.","commit_id":"870d718c17cf82e1a4c0378062976cbfd6db90ae"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8129e087e3ad6048d93bd3f425cdfa180ca2051c","unresolved":false,"context_lines":[{"line_number":5110,"context_line":"                    services.extend(service)"},{"line_number":5111,"context_line":"                elif cell_down_support:"},{"line_number":5112,"context_line":"                    unavailable_services \u003d objects.ServiceList()"},{"line_number":5113,"context_line":"                    cid \u003d [cm.id for cm in nova_context.CELLS"},{"line_number":5114,"context_line":"                           if cm.uuid \u003d\u003d cell_uuid]"},{"line_number":5115,"context_line":"                    # We know cid[0] is in the list because we are using the"},{"line_number":5116,"context_line":"                    # same list that scatter_gather_all_cells used"},{"line_number":5117,"context_line":"                    hms \u003d objects.HostMappingList.get_by_cell_id(context,"}],"source_content_type":"text/x-python","patch_set":24,"id":"3f79a3b5_dc8ae563","line":5114,"range":{"start_line":5113,"start_character":26,"end_line":5114,"end_character":51},"in_reply_to":"3f79a3b5_1f706841","updated":"2018-11-02 00:27:22.000000000","message":"Note to self: we have to do something like this to get the \u0027id\u0027 that corresponds to the \u0027uuid\u0027 because there\u0027s no HostMappingList.get_by_cell_uuid method.","commit_id":"870d718c17cf82e1a4c0378062976cbfd6db90ae"}],"nova/tests/unit/compute/test_host_api.py":[{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"86a866d3b4804b1f92d2434e6681195dd259d093","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                         sorted([svc.host for svc in services]))"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    @mock.patch(\u0027nova.context.scatter_gather_cells\u0027)"},{"line_number":190,"context_line":"    def test_service_get_all_cells_with_failures(self, mock_sg):"},{"line_number":191,"context_line":"        service \u003d objects.Service(binary\u003d\u0027nova-compute\u0027,"},{"line_number":192,"context_line":"                                  host\u003d\u0027host-%s\u0027 % uuids.cell0)"},{"line_number":193,"context_line":"        cells \u003d objects.CellMappingList.get_all(self.ctxt)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_86ca0a9e","line":190,"updated":"2018-07-23 12:07:14.000000000","message":"probably better to put a new test case since its a version bump","commit_id":"9c778f52a7a2d11cde02a28496dd3628ac2512c1"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"2c1e8bd138cc2a550ebde09be0cd7b4cb090774e","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            uuids.cell0: [service],"},{"line_number":203,"context_line":"            uuids.cell1: context.raised_exception_sentinel  # fixture cell"},{"line_number":204,"context_line":"        }"},{"line_number":205,"context_line":"        services \u003d self.host_api.service_get_all(self.ctxt, all_cells\u003dTrue)"},{"line_number":206,"context_line":"        # returns the results from cell0 and minimal construct from cell1."},{"line_number":207,"context_line":"        self.assertEqual(sorted([\u0027host-%s\u0027 % uuids.cell0, \u0027host1-unavailable\u0027,"},{"line_number":208,"context_line":"                         \u0027host2-unavailable\u0027]),"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_c32f94a4","line":205,"updated":"2018-07-23 11:59:30.000000000","message":"oops.. wrong version","commit_id":"9c778f52a7a2d11cde02a28496dd3628ac2512c1"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"14fa32853a0ed206586c3e06188482640d5a9c61","unresolved":false,"context_lines":[{"line_number":204,"context_line":"    def test_service_get_all_cells_with_minimal_constructs(self, mock_sg,"},{"line_number":205,"context_line":"                                                           mock_get_hm):"},{"line_number":206,"context_line":"        service \u003d objects.Service(binary\u003d\u0027nova-compute\u0027,"},{"line_number":207,"context_line":"                                  host\u003d\u0027host-%s\u0027 % uuids.cell0)"},{"line_number":208,"context_line":"        cells \u003d objects.CellMappingList.get_all(self.ctxt)"},{"line_number":209,"context_line":"        # create two hms in cell1, which is the down cell in this test."},{"line_number":210,"context_line":"        hm1 \u003d objects.HostMapping(self.ctxt, host\u003d\u0027host1-unavailable\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_26d58947","line":207,"range":{"start_line":207,"start_character":51,"end_line":207,"end_character":62},"updated":"2018-10-26 17:10:25.000000000","message":"Note to self: nova-compute service would never be in cell0 in real life, but it\u0027s being done here because the default test environment cell setup is two cells: cell0 and cell1.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"105d3e0f0caffe64b89bb54c158b4760026af53d","unresolved":false,"context_lines":[{"line_number":204,"context_line":"    def test_service_get_all_cells_with_minimal_constructs(self, mock_sg,"},{"line_number":205,"context_line":"                                                           mock_get_hm):"},{"line_number":206,"context_line":"        service \u003d objects.Service(binary\u003d\u0027nova-compute\u0027,"},{"line_number":207,"context_line":"                                  host\u003d\u0027host-%s\u0027 % uuids.cell0)"},{"line_number":208,"context_line":"        cells \u003d objects.CellMappingList.get_all(self.ctxt)"},{"line_number":209,"context_line":"        # create two hms in cell1, which is the down cell in this test."},{"line_number":210,"context_line":"        hm1 \u003d objects.HostMapping(self.ctxt, host\u003d\u0027host1-unavailable\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_9307e4c8","line":207,"range":{"start_line":207,"start_character":51,"end_line":207,"end_character":62},"in_reply_to":"3f79a3b5_26d58947","updated":"2018-10-26 20:15:24.000000000","message":"Oh, nevermind, this service is never written to the database at all. It\u0027s faked by being returned by the mocked scatter-gather.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b6d747232c5f3ed850a332663508c92ab6b59f5","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                                                           mock_get_hm):"},{"line_number":206,"context_line":"        service \u003d objects.Service(binary\u003d\u0027nova-compute\u0027,"},{"line_number":207,"context_line":"                                  host\u003d\u0027host-%s\u0027 % uuids.cell0)"},{"line_number":208,"context_line":"        cells \u003d objects.CellMappingList.get_all(self.ctxt)"},{"line_number":209,"context_line":"        # create two hms in cell1, which is the down cell in this test."},{"line_number":210,"context_line":"        hm1 \u003d objects.HostMapping(self.ctxt, host\u003d\u0027host1-unavailable\u0027,"},{"line_number":211,"context_line":"            cell_mapping\u003dcells[0])"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_1dd9ac53","line":208,"range":{"start_line":208,"start_character":8,"end_line":208,"end_character":58},"updated":"2018-10-26 13:32:00.000000000","message":"OK I guess this works because we have two cells by default in this test case run due to the parent class setup (and we\u0027re using the db).","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c693caf5a3dbfaa135424389d694f7272a680b46","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                                                           mock_get_hm):"},{"line_number":206,"context_line":"        service \u003d objects.Service(binary\u003d\u0027nova-compute\u0027,"},{"line_number":207,"context_line":"                                  host\u003d\u0027host-%s\u0027 % uuids.cell0)"},{"line_number":208,"context_line":"        cells \u003d objects.CellMappingList.get_all(self.ctxt)"},{"line_number":209,"context_line":"        # create two hms in cell1, which is the down cell in this test."},{"line_number":210,"context_line":"        hm1 \u003d objects.HostMapping(self.ctxt, host\u003d\u0027host1-unavailable\u0027,"},{"line_number":211,"context_line":"            cell_mapping\u003dcells[0])"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_6d36eb51","line":208,"range":{"start_line":208,"start_character":8,"end_line":208,"end_character":58},"in_reply_to":"3f79a3b5_1dd9ac53","updated":"2018-10-26 18:59:27.000000000","message":"Actually, that\u0027s not true. This list is only one-long, which I expect is why she was using uuids.cellX below and for the odd mix of mocking and expecting the DB to work in here.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6894f871a22de99fedbcd5c919e8b140c6ea6020","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                                                           mock_get_hm):"},{"line_number":206,"context_line":"        service \u003d objects.Service(binary\u003d\u0027nova-compute\u0027,"},{"line_number":207,"context_line":"                                  host\u003d\u0027host-%s\u0027 % uuids.cell0)"},{"line_number":208,"context_line":"        cells \u003d objects.CellMappingList.get_all(self.ctxt)"},{"line_number":209,"context_line":"        # create two hms in cell1, which is the down cell in this test."},{"line_number":210,"context_line":"        hm1 \u003d objects.HostMapping(self.ctxt, host\u003d\u0027host1-unavailable\u0027,"},{"line_number":211,"context_line":"            cell_mapping\u003dcells[0])"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_93eb640f","line":208,"range":{"start_line":208,"start_character":8,"end_line":208,"end_character":58},"in_reply_to":"3f79a3b5_6d36eb51","updated":"2018-10-26 20:10:45.000000000","message":"\u003e Actually, that\u0027s not true. This list is only one-long\n\nI\u0027m not sure why you say that since _setup_cells in the parent class will setup two cells by default, cell0 and cell1.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b6d747232c5f3ed850a332663508c92ab6b59f5","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        self.assertEqual(sorted([\u0027host-%s\u0027 % uuids.cell0, \u0027host1-unavailable\u0027,"},{"line_number":225,"context_line":"                         \u0027host2-unavailable\u0027]),"},{"line_number":226,"context_line":"                         sorted([svc.host for svc in services]))"},{"line_number":227,"context_line":"        mock_sg.assert_called_once()"},{"line_number":228,"context_line":"        mock_get_hm.assert_called_once()"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def test_service_get_all_no_zones(self):"},{"line_number":231,"context_line":"        services \u003d [dict(test_service.fake_service,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_3db588d0","line":228,"range":{"start_line":227,"start_character":8,"end_line":228,"end_character":40},"updated":"2018-10-26 13:32:00.000000000","message":"nit: would prefer to use assert_called_once_with(...)","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"14fa32853a0ed206586c3e06188482640d5a9c61","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        self.assertEqual(sorted([\u0027host-%s\u0027 % uuids.cell0, \u0027host1-unavailable\u0027,"},{"line_number":225,"context_line":"                         \u0027host2-unavailable\u0027]),"},{"line_number":226,"context_line":"                         sorted([svc.host for svc in services]))"},{"line_number":227,"context_line":"        mock_sg.assert_called_once()"},{"line_number":228,"context_line":"        mock_get_hm.assert_called_once()"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def test_service_get_all_no_zones(self):"},{"line_number":231,"context_line":"        services \u003d [dict(test_service.fake_service,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_c7ccbe34","line":228,"range":{"start_line":227,"start_character":8,"end_line":228,"end_character":40},"in_reply_to":"3f79a3b5_3db588d0","updated":"2018-10-26 17:10:25.000000000","message":"Yeah, I think we need to because this is the only place we could catch the error of sending a list arg instead of an integer.","commit_id":"f9b3d4c4474b5a3803c4ece2a71e61ba7fc9b145"}]}
