)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fa15d51db494fce6aeb46f37e208c1e9a28cfe27","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make get_instance_objects_sorted() be smart about cells"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This makes the get_instance_objects_sorted() method only query for instances"},{"line_number":10,"context_line":"in cells that the tenant actually has instances landed in. We do this by getting"},{"line_number":11,"context_line":"a list of cell mappings that have instance mappings owned by our project and"},{"line_number":12,"context_line":"limiting the scatter/gather operation to just those cells. Per the behavior"},{"line_number":13,"context_line":"in db/sqlalchemy/api, we always list all cells for admins."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I442621e2b4acd63d2cfc8a66ab5b32b64ebcaea0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f4b6375_17b842c6","line":13,"range":{"start_line":9,"start_character":0,"end_line":13,"end_character":58},"updated":"2017-10-19 08:29:52.000000000","message":"nit: wrapping (\u003c72)","commit_id":"4015147f9cd79418524f2c3ea71061b7303a2092"}],"nova/compute/instance_list.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fa15d51db494fce6aeb46f37e208c1e9a28cfe27","unresolved":false,"context_lines":[{"line_number":237,"context_line":"    if cell_mappings is None:"},{"line_number":238,"context_line":"        results \u003d context.scatter_gather_all_cells(ctx, do_query)"},{"line_number":239,"context_line":"    else:"},{"line_number":240,"context_line":"        # NOTE(danms): context.scatter_gather_all_cells() provides"},{"line_number":241,"context_line":"        # the hard-coded timeout, so assume the same here."},{"line_number":242,"context_line":"        results \u003d context.scatter_gather_cells(ctx, cell_mappings, 60,"},{"line_number":243,"context_line":"                                               do_query)"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_37d7bef0","line":241,"range":{"start_line":240,"start_character":8,"end_line":241,"end_character":58},"updated":"2017-10-19 08:29:52.000000000","message":"Rather than bleeding this detail in here, where its possible that things could get lost in the noise in the event of a refactor, could you hide this behind a shim? Perhaps something like \"scatter_gather_some_cells\"?","commit_id":"4015147f9cd79418524f2c3ea71061b7303a2092"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6cebab13ad9c1c6e0a58553a83cff0e9823e4bd0","unresolved":false,"context_lines":[{"line_number":237,"context_line":"    if cell_mappings is None:"},{"line_number":238,"context_line":"        results \u003d context.scatter_gather_all_cells(ctx, do_query)"},{"line_number":239,"context_line":"    else:"},{"line_number":240,"context_line":"        # NOTE(danms): context.scatter_gather_all_cells() provides"},{"line_number":241,"context_line":"        # the hard-coded timeout, so assume the same here."},{"line_number":242,"context_line":"        results \u003d context.scatter_gather_cells(ctx, cell_mappings, 60,"},{"line_number":243,"context_line":"                                               do_query)"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_d9665852","line":241,"range":{"start_line":240,"start_character":8,"end_line":241,"end_character":58},"in_reply_to":"3f4b6375_37d7bef0","updated":"2017-10-19 14:15:59.000000000","message":"Well, that would be rather duplicative of the method I\u0027m calling here. I can refactor it to allow no timeout in order to assume the default, it just didn\u0027t seem like a big enough deal to me.","commit_id":"4015147f9cd79418524f2c3ea71061b7303a2092"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3e2adc9d60616f9595fc5c0923abc7a52f010080","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    # NOTE(danms): Replicated in part from instance_get_all_by_sort_filters(),"},{"line_number":98,"context_line":"    # where if we\u0027re not admin we\u0027re restricted to our context\u0027s project. Use"},{"line_number":99,"context_line":"    # this to get a subset of cell mappings."},{"line_number":100,"context_line":"    if not ctx.is_admin:"},{"line_number":101,"context_line":"        cell_mappings \u003d objects.CellMappingList.get_by_project_id("},{"line_number":102,"context_line":"            ctx, ctx.project_id)"},{"line_number":103,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_2dee6122","line":100,"updated":"2018-05-04 16:57:41.000000000","message":"It might be a good idea for us to make this conditional.\n\nIf you have like two cells and spread tenants across both, this will pretty much always just be a DB hit to return the same cell records every time. However, if you have lots of cells and keep tenants to one or two, this will save us a lot of time not hitting all the cells you can never have things in.\n\nSo should we have a CONF.something.limit_list_to_tenant_cells toggle to just use the cached list always?","commit_id":"bb742c0d273a4783ef3f1ec42d20565b98ea1af3"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"3174a2f4fa1484aaf4cae958e7c49e7720d592b2","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    # NOTE(danms): Replicated in part from instance_get_all_by_sort_filters(),"},{"line_number":98,"context_line":"    # where if we\u0027re not admin we\u0027re restricted to our context\u0027s project. Use"},{"line_number":99,"context_line":"    # this to get a subset of cell mappings."},{"line_number":100,"context_line":"    if not ctx.is_admin:"},{"line_number":101,"context_line":"        cell_mappings \u003d objects.CellMappingList.get_by_project_id("},{"line_number":102,"context_line":"            ctx, ctx.project_id)"},{"line_number":103,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_1071fea9","line":100,"in_reply_to":"5f7c97a3_2dee6122","updated":"2018-05-09 07:09:36.000000000","message":"\u003e It might be a good idea for us to make this conditional.\n \n+1","commit_id":"bb742c0d273a4783ef3f1ec42d20565b98ea1af3"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"6fc3eee552325ea2feb5451f19d6e9efe6ed10fb","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    # NOTE(danms): Replicated in part from instance_get_all_by_sort_filters(),"},{"line_number":98,"context_line":"    # where if we\u0027re not admin we\u0027re restricted to our context\u0027s project. Use"},{"line_number":99,"context_line":"    # this to get a subset of cell mappings."},{"line_number":100,"context_line":"    if not ctx.is_admin:"},{"line_number":101,"context_line":"        cell_mappings \u003d objects.CellMappingList.get_by_project_id("},{"line_number":102,"context_line":"            ctx, ctx.project_id)"},{"line_number":103,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_f4548323","line":100,"in_reply_to":"5f7c97a3_2dee6122","updated":"2018-05-08 17:37:52.000000000","message":"Perhaps in the future if users identify this as being a bottleneck. I\u0027d say keep it simple for right now, though.","commit_id":"bb742c0d273a4783ef3f1ec42d20565b98ea1af3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7f1ae4c088308aadb4027ab8973ab3fbb8419ee2","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    # NOTE(danms): Replicated in part from instance_get_all_by_sort_filters(),"},{"line_number":98,"context_line":"    # where if we\u0027re not admin we\u0027re restricted to our context\u0027s project. Use"},{"line_number":99,"context_line":"    # this to get a subset of cell mappings."},{"line_number":100,"context_line":"    if not ctx.is_admin:"},{"line_number":101,"context_line":"        cell_mappings \u003d objects.CellMappingList.get_by_project_id("},{"line_number":102,"context_line":"            ctx, ctx.project_id)"},{"line_number":103,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_fe277a11","line":100,"in_reply_to":"5f7c97a3_4399f76b","updated":"2018-05-08 21:55:00.000000000","message":"CONF.api.instance_list_per_project_cells - something like that could be used.\n\nTo help decide here, it could be useful to create 1000 fake instances across multiple projects and compare the time before and after this with a single cell. The instance_mappings.project_id column is in an index so that\u0027s good at least.","commit_id":"bb742c0d273a4783ef3f1ec42d20565b98ea1af3"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"fb1f96599ed30da642fa03cc46570918fc755686","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    # NOTE(danms): Replicated in part from instance_get_all_by_sort_filters(),"},{"line_number":98,"context_line":"    # where if we\u0027re not admin we\u0027re restricted to our context\u0027s project. Use"},{"line_number":99,"context_line":"    # this to get a subset of cell mappings."},{"line_number":100,"context_line":"    if not ctx.is_admin:"},{"line_number":101,"context_line":"        cell_mappings \u003d objects.CellMappingList.get_by_project_id("},{"line_number":102,"context_line":"            ctx, ctx.project_id)"},{"line_number":103,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_4399f76b","line":100,"in_reply_to":"5f7c97a3_ea8d78d3","updated":"2018-05-08 20:56:04.000000000","message":"Yeah, I\u0027m all for keeping it simple too but it\u0027s tough knowing this would be a completely useless extra query for most users. The only downside of a config option is yet-another-config-option complexity, of course. Since it would be opt-in, maybe that\u0027s not so bad. And we need a good place to put it since CONF.cells is taken by cells v1 already.","commit_id":"bb742c0d273a4783ef3f1ec42d20565b98ea1af3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4652919e826715a0da25fdff3cc06475edd479af","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    # NOTE(danms): Replicated in part from instance_get_all_by_sort_filters(),"},{"line_number":98,"context_line":"    # where if we\u0027re not admin we\u0027re restricted to our context\u0027s project. Use"},{"line_number":99,"context_line":"    # this to get a subset of cell mappings."},{"line_number":100,"context_line":"    if not ctx.is_admin:"},{"line_number":101,"context_line":"        cell_mappings \u003d objects.CellMappingList.get_by_project_id("},{"line_number":102,"context_line":"            ctx, ctx.project_id)"},{"line_number":103,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_ea8d78d3","line":100,"in_reply_to":"5f7c97a3_f4548323","updated":"2018-05-08 18:59:57.000000000","message":"Most deployments are going to be single cell so adding an extra query for no benefit to those deployments isn\u0027t great. I don\u0027t know how much time it\u0027s really going to add but it\u0027s not zero. I know the Huawei public cloud team does detailed auditing on what things take time when listing servers, so there are deployments that care a lot about what gets added in this path.","commit_id":"bb742c0d273a4783ef3f1ec42d20565b98ea1af3"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"c7b3feba0b80d33a2842be9e15c0a7cc7fb4dc16","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    # NOTE(danms): Replicated in part from instance_get_all_by_sort_filters(),"},{"line_number":98,"context_line":"    # where if we\u0027re not admin we\u0027re restricted to our context\u0027s project. Use"},{"line_number":99,"context_line":"    # this to get a subset of cell mappings."},{"line_number":100,"context_line":"    if not ctx.is_admin:"},{"line_number":101,"context_line":"        cell_mappings \u003d objects.CellMappingList.get_by_project_id("},{"line_number":102,"context_line":"            ctx, ctx.project_id)"},{"line_number":103,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_d504d84c","line":100,"in_reply_to":"5f7c97a3_fe277a11","updated":"2018-05-09 06:55:23.000000000","message":"Agreed with make this conditional, as it is the truth that most user will only have few cells.","commit_id":"bb742c0d273a4783ef3f1ec42d20565b98ea1af3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b5597d5852c5773491c8e4e8ba520d6d22f48dd2","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    # NOTE(danms): Replicated in part from instance_get_all_by_sort_filters(),"},{"line_number":103,"context_line":"    # where if we\u0027re not admin we\u0027re restricted to our context\u0027s project. Use"},{"line_number":104,"context_line":"    # this to get a subset of cell mappings."},{"line_number":105,"context_line":"    if query_cell_subset and not ctx.is_admin:"},{"line_number":106,"context_line":"        cell_mappings \u003d objects.CellMappingList.get_by_project_id("},{"line_number":107,"context_line":"            ctx, ctx.project_id)"},{"line_number":108,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_e4325f10","line":105,"range":{"start_line":105,"start_character":33,"end_line":105,"end_character":45},"updated":"2018-05-10 14:41:12.000000000","message":"This might bite us later with the scope_types stuff that keystone is doing for RBAC where there is project admin and system scope (global admin), but we can cross that bridge when we get there since we have a lot of is_admin checks I think.","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4e8bed18771521804f506987a311b0cc74965bce","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    # NOTE(danms): Replicated in part from instance_get_all_by_sort_filters(),"},{"line_number":103,"context_line":"    # where if we\u0027re not admin we\u0027re restricted to our context\u0027s project. Use"},{"line_number":104,"context_line":"    # this to get a subset of cell mappings."},{"line_number":105,"context_line":"    if query_cell_subset and not ctx.is_admin:"},{"line_number":106,"context_line":"        cell_mappings \u003d objects.CellMappingList.get_by_project_id("},{"line_number":107,"context_line":"            ctx, ctx.project_id)"},{"line_number":108,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_1dc56ef1","line":105,"range":{"start_line":105,"start_character":33,"end_line":105,"end_character":45},"in_reply_to":"5f7c97a3_e4325f10","updated":"2018-05-10 16:31:25.000000000","message":"Yeah, this just came from the db api, so we\u0027ll have to fix it here and there.","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b5597d5852c5773491c8e4e8ba520d6d22f48dd2","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        cell_mappings \u003d objects.CellMappingList.get_by_project_id("},{"line_number":107,"context_line":"            ctx, ctx.project_id)"},{"line_number":108,"context_line":"    else:"},{"line_number":109,"context_line":"        # If we\u0027re admin then query all cells"},{"line_number":110,"context_line":"        cell_mappings \u003d None"},{"line_number":111,"context_line":"    columns_to_join \u003d instance_obj._expected_cols(expected_attrs)"},{"line_number":112,"context_line":"    instance_generator \u003d get_instances_sorted(ctx, filters, limit, marker,"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_242cd7aa","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":45},"updated":"2018-05-10 14:41:12.000000000","message":"nit: this comment could be updated since it\u0027s not just the admin case where we could get here.\n\n# If we\u0027re admin or we\u0027re non-admin but could have instances in multiple cells, then query all cells.","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"}],"nova/compute/multi_cell_list.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b5597d5852c5773491c8e4e8ba520d6d22f48dd2","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    \"\"\"An implementation of a cross-cell efficient lister."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    This primarily provides a listing implementation for fetching"},{"line_number":70,"context_line":"    records from across all cells, paginated and sorted appropriately."},{"line_number":71,"context_line":"    The external interface is the get_records_sorted() method. You should"},{"line_number":72,"context_line":"    implement this if you need to efficiently list your data type from"},{"line_number":73,"context_line":"    cell databases."}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_07067d1e","line":70,"range":{"start_line":70,"start_character":17,"end_line":70,"end_character":34},"updated":"2018-05-10 14:41:12.000000000","message":"nit: the docstring could be updated to mention that it\u0027s possible to target specific cells by passing in a CellMappingList.","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b5597d5852c5773491c8e4e8ba520d6d22f48dd2","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        \"\"\"List records by filters, sorted and paginated."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        This is the standard filtered/sorted list method for the data type"},{"line_number":129,"context_line":"        we are trying to list out of the database. Additional kwargs are"},{"line_number":130,"context_line":"        passsed through."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        :param ctx: A RequestContext"},{"line_number":133,"context_line":"        :param filters: A dict of column\u003dfilter items"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_67b09144","line":130,"range":{"start_line":129,"start_character":51,"end_line":130,"end_character":24},"updated":"2018-05-10 14:41:12.000000000","message":"Is this how cell_mappings is getting passed through? If so, it seems we should pop cell_mappings from kwargs before calling get_by_filters() from within get_records_sorted(). But I also don\u0027t see the InstanceLister passing cell_mappings as a kwarg to get_records_sorted() so I\u0027m not sure how it\u0027s coming through.","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4e8bed18771521804f506987a311b0cc74965bce","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        \"\"\"List records by filters, sorted and paginated."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        This is the standard filtered/sorted list method for the data type"},{"line_number":129,"context_line":"        we are trying to list out of the database. Additional kwargs are"},{"line_number":130,"context_line":"        passsed through."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        :param ctx: A RequestContext"},{"line_number":133,"context_line":"        :param filters: A dict of column\u003dfilter items"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_b81fa859","line":130,"range":{"start_line":129,"start_character":51,"end_line":130,"end_character":24},"in_reply_to":"5f7c97a3_67b09144","updated":"2018-05-10 16:31:25.000000000","message":"No, cell_mappings get passed to our __init__. \"Bad mocks\" are why we get cell_mappings into the query function in some legacy tests (as discussed).","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"}],"nova/conf/api.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d96cf7c4e89c6a68a475a5901acb91d2406603c3","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    cfg.BoolOpt(\"instance_list_per_project_cells\","},{"line_number":258,"context_line":"                default\u003dFalse,"},{"line_number":259,"context_line":"                help\u003d\"\"\""},{"line_number":260,"context_line":"When enabled, this will cause the API to only list query cell databases in"},{"line_number":261,"context_line":"which the tenant has mapped instances. This requires an additional (fast) query"},{"line_number":262,"context_line":"in the API database before each list, but also (potentially) limits the number"},{"line_number":263,"context_line":"of cell databases that must be queried to provide the result. If you have a"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_9e9e6f52","line":260,"range":{"start_line":260,"start_character":46,"end_line":260,"end_character":57},"updated":"2018-05-09 18:05:48.000000000","message":"s/list query/query/","commit_id":"59bf6e8437d71836bd56c91343360177907befb2"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b823ac57ab24a9615cafbf93e5a4b3c846f43205","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    cfg.BoolOpt(\"instance_list_per_project_cells\","},{"line_number":258,"context_line":"                default\u003dFalse,"},{"line_number":259,"context_line":"                help\u003d\"\"\""},{"line_number":260,"context_line":"When enabled, this will cause the API to only list query cell databases in"},{"line_number":261,"context_line":"which the tenant has mapped instances. This requires an additional (fast) query"},{"line_number":262,"context_line":"in the API database before each list, but also (potentially) limits the number"},{"line_number":263,"context_line":"of cell databases that must be queried to provide the result. If you have a"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_d85aba28","line":260,"range":{"start_line":260,"start_character":46,"end_line":260,"end_character":57},"in_reply_to":"5f7c97a3_9e9e6f52","updated":"2018-05-09 19:55:24.000000000","message":"Meh, might as well just fix it, thanks.","commit_id":"59bf6e8437d71836bd56c91343360177907befb2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b5597d5852c5773491c8e4e8ba520d6d22f48dd2","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"* Any string, including an empty string (the default)."},{"line_number":256,"context_line":"\"\"\"),"},{"line_number":257,"context_line":"    cfg.BoolOpt(\"instance_list_per_project_cells\","},{"line_number":258,"context_line":"                default\u003dFalse,"},{"line_number":259,"context_line":"                help\u003d\"\"\""},{"line_number":260,"context_line":"When enabled, this will cause the API to only query cell databases"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_64b3af99","line":257,"updated":"2018-05-10 14:41:12.000000000","message":"We should probably have an \"other\" release note for this just to advertise it.","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b5597d5852c5773491c8e4e8ba520d6d22f48dd2","unresolved":false,"context_lines":[{"line_number":255,"context_line":"* Any string, including an empty string (the default)."},{"line_number":256,"context_line":"\"\"\"),"},{"line_number":257,"context_line":"    cfg.BoolOpt(\"instance_list_per_project_cells\","},{"line_number":258,"context_line":"                default\u003dFalse,"},{"line_number":259,"context_line":"                help\u003d\"\"\""},{"line_number":260,"context_line":"When enabled, this will cause the API to only query cell databases"},{"line_number":261,"context_line":"in which the tenant has mapped instances. This requires an additional"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_648acfbf","line":258,"range":{"start_line":258,"start_character":8,"end_line":258,"end_character":9},"updated":"2018-05-10 14:41:12.000000000","message":"Because these two lines don\u0027t align below BoolOpt, I can already see the patch from Stephen to update this later. I don\u0027t know why, except OCD consistency.","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4e8bed18771521804f506987a311b0cc74965bce","unresolved":false,"context_lines":[{"line_number":255,"context_line":"* Any string, including an empty string (the default)."},{"line_number":256,"context_line":"\"\"\"),"},{"line_number":257,"context_line":"    cfg.BoolOpt(\"instance_list_per_project_cells\","},{"line_number":258,"context_line":"                default\u003dFalse,"},{"line_number":259,"context_line":"                help\u003d\"\"\""},{"line_number":260,"context_line":"When enabled, this will cause the API to only query cell databases"},{"line_number":261,"context_line":"in which the tenant has mapped instances. This requires an additional"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_78427040","line":258,"range":{"start_line":258,"start_character":8,"end_line":258,"end_character":9},"in_reply_to":"5f7c97a3_648acfbf","updated":"2018-05-10 16:31:25.000000000","message":"Ugh, I hate that style so much.","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b5597d5852c5773491c8e4e8ba520d6d22f48dd2","unresolved":false,"context_lines":[{"line_number":264,"context_line":"to provide the result. If you have a small number of cells, or tenants"},{"line_number":265,"context_line":"are likely to have instances in all cells, then this should be"},{"line_number":266,"context_line":"False. If you have many cells, especially if you confine tenants to a"},{"line_number":267,"context_line":"small subset of those cells, this should be True.  \"\"\"),"},{"line_number":268,"context_line":"]"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"# NOTE(edleafe): I would like to import the value directly from"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_04c51bf1","line":267,"range":{"start_line":267,"start_character":49,"end_line":267,"end_character":51},"updated":"2018-05-10 14:41:12.000000000","message":"nit: odd extra spaces here, did you mean to drop the \"\"\" a line?","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4e8bed18771521804f506987a311b0cc74965bce","unresolved":false,"context_lines":[{"line_number":264,"context_line":"to provide the result. If you have a small number of cells, or tenants"},{"line_number":265,"context_line":"are likely to have instances in all cells, then this should be"},{"line_number":266,"context_line":"False. If you have many cells, especially if you confine tenants to a"},{"line_number":267,"context_line":"small subset of those cells, this should be True.  \"\"\"),"},{"line_number":268,"context_line":"]"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"# NOTE(edleafe): I would like to import the value directly from"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_3848785a","line":267,"range":{"start_line":267,"start_character":49,"end_line":267,"end_character":51},"in_reply_to":"5f7c97a3_04c51bf1","updated":"2018-05-10 16:31:25.000000000","message":"No, editor rewrap \"helped\" me.","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"}],"nova/tests/unit/api/openstack/fakes.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b5597d5852c5773491c8e4e8ba520d6d22f48dd2","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        if \u0027sort_dirs\u0027 in kwargs:"},{"line_number":374,"context_line":"            kwargs.pop(\u0027sort_dirs\u0027)"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        if \u0027cell_mappings\u0027 in kwargs:"},{"line_number":377,"context_line":"            kwargs.pop(\u0027cell_mappings\u0027)"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        for i in range(num_servers):"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_676bb1b6","line":376,"updated":"2018-05-10 14:41:12.000000000","message":"How does this get in here? And why wouldn\u0027t it be something we have to also remove from the normal DB API routine?","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ce37301c46ad614ac4f3b6242112510acb126b64","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        if \u0027sort_dirs\u0027 in kwargs:"},{"line_number":374,"context_line":"            kwargs.pop(\u0027sort_dirs\u0027)"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        if \u0027cell_mappings\u0027 in kwargs:"},{"line_number":377,"context_line":"            kwargs.pop(\u0027cell_mappings\u0027)"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        for i in range(num_servers):"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_e259ef34","line":376,"in_reply_to":"5f7c97a3_676bb1b6","updated":"2018-05-10 15:03:21.000000000","message":"Looking at what uses this fake stub method, nothing that I can tell is passing through cell_mappings, the only things that do pass through kwargs that wouldn\u0027t make sense in stub_instance are limit and marker which are already handled. I pulled this down and commented out this line and there were no failures in tests that were using this (just a random sample though, I didn\u0027t run all tests). Anyway, it can be removed in a follow up.","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4e8bed18771521804f506987a311b0cc74965bce","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        if \u0027sort_dirs\u0027 in kwargs:"},{"line_number":374,"context_line":"            kwargs.pop(\u0027sort_dirs\u0027)"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        if \u0027cell_mappings\u0027 in kwargs:"},{"line_number":377,"context_line":"            kwargs.pop(\u0027cell_mappings\u0027)"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        for i in range(num_servers):"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_786b50b6","line":376,"in_reply_to":"5f7c97a3_e259ef34","updated":"2018-05-10 16:31:25.000000000","message":"Future reviewers: remove this and run fping tests if curious.","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"14df52ec486f2a8116011d2d5810bb2030a4be37","unresolved":false,"context_lines":[{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        for i in range(num_servers):"},{"line_number":380,"context_line":"            uuid \u003d get_fake_uuid(i)"},{"line_number":381,"context_line":"            server \u003d stub_instance(id\u003di + 1, uuid\u003duuid,"},{"line_number":382,"context_line":"                    **kwargs)"},{"line_number":383,"context_line":"            servers_list.append(server)"},{"line_number":384,"context_line":"            if marker is not None and uuid \u003d\u003d marker:"},{"line_number":385,"context_line":"                found_marker \u003d True"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_a7af897b","line":382,"range":{"start_line":381,"start_character":21,"end_line":382,"end_character":29},"updated":"2018-05-10 14:45:18.000000000","message":"I guess you\u0027re just following a pattern because the kwargs also get passed through to creating the instance object, and Instance.cell_mappings isn\u0027t a real field.","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"}],"nova/tests/unit/compute/test_instance_list.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b5597d5852c5773491c8e4e8ba520d6d22f48dd2","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        mock_br.return_value \u003d []"},{"line_number":89,"context_line":"        user_context \u003d nova_context.RequestContext(\u0027fake\u0027, \u0027fake\u0027)"},{"line_number":90,"context_line":"        instance_list.get_instance_objects_sorted("},{"line_number":91,"context_line":"            user_context, {}, None, None, [], None, None)"},{"line_number":92,"context_line":"        mock_gi.assert_called_once_with(user_context, {}, None, None, [],"},{"line_number":93,"context_line":"                                        None, None,"},{"line_number":94,"context_line":"                                        cell_mappings\u003dmock_cm.return_value)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_c7ce45b3","line":91,"range":{"start_line":91,"start_character":26,"end_line":91,"end_character":56},"updated":"2018-05-10 14:41:12.000000000","message":"nit: I\u0027d appreciate using kwargs here (and below) so I don\u0027t have to cross reference the various parameters being passed through.","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b5597d5852c5773491c8e4e8ba520d6d22f48dd2","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        mock_gi.assert_called_once_with(admin_context, {}, None, None, [],"},{"line_number":107,"context_line":"                                        None, None,"},{"line_number":108,"context_line":"                                        cell_mappings\u003dNone)"},{"line_number":109,"context_line":"        self.assertFalse(mock_cm.called)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @mock.patch(\u0027nova.objects.BuildRequestList.get_by_filters\u0027)"},{"line_number":112,"context_line":"    @mock.patch(\u0027nova.compute.instance_list.get_instances_sorted\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_275299df","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":40},"updated":"2018-05-10 14:41:12.000000000","message":"nit: mock_cm.assert_not_called() - gives a cleaner error message.","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b5597d5852c5773491c8e4e8ba520d6d22f48dd2","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        mock_gi.assert_called_once_with(admin_context, {}, None, None, [],"},{"line_number":137,"context_line":"                                        None, None,"},{"line_number":138,"context_line":"                                        cell_mappings\u003dNone)"},{"line_number":139,"context_line":"        self.assertFalse(mock_cm.called)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_87f7edd3","line":139,"range":{"start_line":139,"start_character":8,"end_line":139,"end_character":40},"updated":"2018-05-10 14:41:12.000000000","message":"mock_cm.assert_not_called()","commit_id":"913a99c79456abbfef1642e6dc70e6a4ff4e25db"}]}
