)]}'
{"nova/compute/api.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"93033dee111ec9863d00d19d0c31cb50aa4cfa6b","unresolved":false,"context_lines":[{"line_number":2307,"context_line":"            cell0_mapping \u003d objects.CellMapping.get_by_uuid(context,"},{"line_number":2308,"context_line":"                objects.CellMapping.CELL0_UUID)"},{"line_number":2309,"context_line":"        except exception.CellMappingNotFound:"},{"line_number":2310,"context_line":"            cell0_instances \u003d objects.InstanceList(objects\u003d[])"},{"line_number":2311,"context_line":"        else:"},{"line_number":2312,"context_line":"            with nova_context.target_cell(context, cell0_mapping):"},{"line_number":2313,"context_line":"                cell0_instances \u003d self._get_instances_by_filters("}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_93f33973","line":2310,"updated":"2016-08-26 15:18:40.000000000","message":"So you\u0027re gracefully accepting the fact that the operator haven\"t yet created a cell0 ? Shouldn\u0027t we rather see that as an hard dependency?","commit_id":"2c9069989ec3bdd3dffdcc394d9669e8273f4bd1"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d854070e198a7ec052cb72853227ad08aa296d84","unresolved":false,"context_lines":[{"line_number":2307,"context_line":"            cell0_mapping \u003d objects.CellMapping.get_by_uuid(context,"},{"line_number":2308,"context_line":"                objects.CellMapping.CELL0_UUID)"},{"line_number":2309,"context_line":"        except exception.CellMappingNotFound:"},{"line_number":2310,"context_line":"            cell0_instances \u003d objects.InstanceList(objects\u003d[])"},{"line_number":2311,"context_line":"        else:"},{"line_number":2312,"context_line":"            with nova_context.target_cell(context, cell0_mapping):"},{"line_number":2313,"context_line":"                cell0_instances \u003d self._get_instances_by_filters("}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_e028d0e4","line":2310,"in_reply_to":"fa7ab95a_897ea8e2","updated":"2016-08-29 14:13:53.000000000","message":"Okay, I see your point.\nAlso, discussed on IRC and dansmith made a very good point about making sure we have at least one cycle where operators can run the code without really needing to perform a cells v2 setup in order to have a very simple upgrade note.","commit_id":"2c9069989ec3bdd3dffdcc394d9669e8273f4bd1"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"831abb0ae189c1c4a0afb31e4c89ef6d49e05410","unresolved":false,"context_lines":[{"line_number":2307,"context_line":"            cell0_mapping \u003d objects.CellMapping.get_by_uuid(context,"},{"line_number":2308,"context_line":"                objects.CellMapping.CELL0_UUID)"},{"line_number":2309,"context_line":"        except exception.CellMappingNotFound:"},{"line_number":2310,"context_line":"            cell0_instances \u003d objects.InstanceList(objects\u003d[])"},{"line_number":2311,"context_line":"        else:"},{"line_number":2312,"context_line":"            with nova_context.target_cell(context, cell0_mapping):"},{"line_number":2313,"context_line":"                cell0_instances \u003d self._get_instances_by_filters("}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_897ea8e2","line":2310,"in_reply_to":"fa7ab95a_93f33973","updated":"2016-08-26 15:48:04.000000000","message":"I don\u0027t think it needs to be a hard dependency yet. At the point where we are going to put failed scheduling attempts there it becomes a hard dependency. So not until instance creation moves to the conductor. Because even if we make it a hard dependency now, nothing is going to use it.","commit_id":"2c9069989ec3bdd3dffdcc394d9669e8273f4bd1"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"93033dee111ec9863d00d19d0c31cb50aa4cfa6b","unresolved":false,"context_lines":[{"line_number":2317,"context_line":"        # Only subtract from limit if it is not None"},{"line_number":2318,"context_line":"        limit \u003d (limit - len(cell0_instances)) if limit else limit"},{"line_number":2319,"context_line":""},{"line_number":2320,"context_line":"        # For now we only support one cell."},{"line_number":2321,"context_line":"        if limit is None or limit \u003e 0:"},{"line_number":2322,"context_line":"            cell_instances \u003d self._get_instances_by_filters(context, filters,"},{"line_number":2323,"context_line":"                    limit\u003dlimit, marker\u003dmarker, expected_attrs\u003dexpected_attrs,"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_939a5913","line":2320,"updated":"2016-08-26 15:18:40.000000000","message":"nit: I\u0027d appreciate some FIXME or TODO comment here, given that we also not reconcile sorting for multiple cells.","commit_id":"2c9069989ec3bdd3dffdcc394d9669e8273f4bd1"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"831abb0ae189c1c4a0afb31e4c89ef6d49e05410","unresolved":false,"context_lines":[{"line_number":2317,"context_line":"        # Only subtract from limit if it is not None"},{"line_number":2318,"context_line":"        limit \u003d (limit - len(cell0_instances)) if limit else limit"},{"line_number":2319,"context_line":""},{"line_number":2320,"context_line":"        # For now we only support one cell."},{"line_number":2321,"context_line":"        if limit is None or limit \u003e 0:"},{"line_number":2322,"context_line":"            cell_instances \u003d self._get_instances_by_filters(context, filters,"},{"line_number":2323,"context_line":"                    limit\u003dlimit, marker\u003dmarker, expected_attrs\u003dexpected_attrs,"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_494ca0c7","line":2320,"in_reply_to":"fa7ab95a_939a5913","updated":"2016-08-26 15:48:04.000000000","message":"I should reword this, but it\u0027s not a FIXME or TODO. From the commit message \"Note that there are no plans to make\nfiltering/sorting a list of instances work across multiple cells.\"","commit_id":"2c9069989ec3bdd3dffdcc394d9669e8273f4bd1"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3860bddd1d0f4dcd567bf456e930ede262b8b87c","unresolved":false,"context_lines":[{"line_number":2332,"context_line":"            cell_instances \u003d objects.InstanceList(objects\u003d[])"},{"line_number":2333,"context_line":""},{"line_number":2334,"context_line":"        def _get_unique_filter_method():"},{"line_number":2335,"context_line":"            seen_uuids \u003d []"},{"line_number":2336,"context_line":""},{"line_number":2337,"context_line":"            def _filter(instance):"},{"line_number":2338,"context_line":"                if instance.uuid in seen_uuids:"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_9afc2540","line":2335,"range":{"start_line":2335,"start_character":25,"end_line":2335,"end_character":27},"updated":"2016-08-31 19:34:07.000000000","message":"Should probably make this a set() since it\u0027s for lookups.","commit_id":"c1fc1a2b12a59d9f034fd328c8f82281dab08f35"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"930f26cbc7ad1de030293ecb27323f91dcf51ada","unresolved":false,"context_lines":[{"line_number":2332,"context_line":"            cell_instances \u003d objects.InstanceList(objects\u003d[])"},{"line_number":2333,"context_line":""},{"line_number":2334,"context_line":"        def _get_unique_filter_method():"},{"line_number":2335,"context_line":"            seen_uuids \u003d []"},{"line_number":2336,"context_line":""},{"line_number":2337,"context_line":"            def _filter(instance):"},{"line_number":2338,"context_line":"                if instance.uuid in seen_uuids:"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_43b394e9","line":2335,"range":{"start_line":2335,"start_character":25,"end_line":2335,"end_character":27},"in_reply_to":"fa7ab95a_9afc2540","updated":"2016-08-31 19:46:01.000000000","message":"Can do.","commit_id":"c1fc1a2b12a59d9f034fd328c8f82281dab08f35"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"20adba77744b753b1e1ba65904c18e63fea58149","unresolved":false,"context_lines":[{"line_number":2316,"context_line":"            cell0_mapping \u003d objects.CellMapping.get_by_uuid(context,"},{"line_number":2317,"context_line":"                objects.CellMapping.CELL0_UUID)"},{"line_number":2318,"context_line":"        except exception.CellMappingNotFound:"},{"line_number":2319,"context_line":"            cell0_instances \u003d objects.InstanceList(objects\u003d[])"},{"line_number":2320,"context_line":"        else:"},{"line_number":2321,"context_line":"            with nova_context.target_cell(context, cell0_mapping):"},{"line_number":2322,"context_line":"                cell0_instances \u003d self._get_instances_by_filters("}],"source_content_type":"text/x-python","patch_set":22,"id":"fa7ab95a_5be5ffa1","line":2319,"range":{"start_line":2319,"start_character":51,"end_line":2319,"end_character":61},"updated":"2016-09-01 17:11:46.000000000","message":"nit: this is already the default so we don\u0027t need to be explicit, but it\u0027s not a big deal.","commit_id":"184a703e0671ebb18121d439b8b87dd5c0e696d8"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"738088d0a6b7b2df0af236ca77b4e19e8158ddb9","unresolved":false,"context_lines":[{"line_number":2316,"context_line":"            cell0_mapping \u003d objects.CellMapping.get_by_uuid(context,"},{"line_number":2317,"context_line":"                objects.CellMapping.CELL0_UUID)"},{"line_number":2318,"context_line":"        except exception.CellMappingNotFound:"},{"line_number":2319,"context_line":"            cell0_instances \u003d objects.InstanceList(objects\u003d[])"},{"line_number":2320,"context_line":"        else:"},{"line_number":2321,"context_line":"            with nova_context.target_cell(context, cell0_mapping):"},{"line_number":2322,"context_line":"                cell0_instances \u003d self._get_instances_by_filters("}],"source_content_type":"text/x-python","patch_set":22,"id":"fa7ab95a_e69c766c","line":2319,"range":{"start_line":2319,"start_character":51,"end_line":2319,"end_character":61},"in_reply_to":"fa7ab95a_5be5ffa1","updated":"2016-09-01 17:21:23.000000000","message":"I thought I hit an error when I wasn\u0027t doing this, but it\u0027s been a bit so I don\u0027t exactly recall.","commit_id":"184a703e0671ebb18121d439b8b87dd5c0e696d8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"20adba77744b753b1e1ba65904c18e63fea58149","unresolved":false,"context_lines":[{"line_number":2334,"context_line":"                    limit\u003dlimit, marker\u003dmarker, expected_attrs\u003dexpected_attrs,"},{"line_number":2335,"context_line":"                    sort_keys\u003dsort_keys, sort_dirs\u003dsort_dirs)"},{"line_number":2336,"context_line":"        else:"},{"line_number":2337,"context_line":"            cell_instances \u003d objects.InstanceList(objects\u003d[])"},{"line_number":2338,"context_line":""},{"line_number":2339,"context_line":"        def _get_unique_filter_method():"},{"line_number":2340,"context_line":"            seen_uuids \u003d set()"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa7ab95a_bb00cb35","line":2337,"range":{"start_line":2337,"start_character":50,"end_line":2337,"end_character":60},"updated":"2016-09-01 17:11:46.000000000","message":"same","commit_id":"184a703e0671ebb18121d439b8b87dd5c0e696d8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"20adba77744b753b1e1ba65904c18e63fea58149","unresolved":false,"context_lines":[{"line_number":2350,"context_line":"        filter_method \u003d _get_unique_filter_method()"},{"line_number":2351,"context_line":"        instances \u003d objects.InstanceList("},{"line_number":2352,"context_line":"            objects\u003dlist(filter(filter_method,"},{"line_number":2353,"context_line":"                           build_req_instances.objects +"},{"line_number":2354,"context_line":"                           cell0_instances.objects +"},{"line_number":2355,"context_line":"                           cell_instances.objects)))"},{"line_number":2356,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"fa7ab95a_bb5c4b4c","line":2353,"range":{"start_line":2353,"start_character":46,"end_line":2353,"end_character":54},"updated":"2016-09-01 17:11:46.000000000","message":"Do we actually need to do this on all of these? They are all InstanceList objects, so I\u0027d think they just get passed as lists of Instance objects already. Or can you not concatenate those?","commit_id":"184a703e0671ebb18121d439b8b87dd5c0e696d8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5016935821b67ca743084c73166c6cc7a8da4684","unresolved":false,"context_lines":[{"line_number":2350,"context_line":"        filter_method \u003d _get_unique_filter_method()"},{"line_number":2351,"context_line":"        instances \u003d objects.InstanceList("},{"line_number":2352,"context_line":"            objects\u003dlist(filter(filter_method,"},{"line_number":2353,"context_line":"                           build_req_instances.objects +"},{"line_number":2354,"context_line":"                           cell0_instances.objects +"},{"line_number":2355,"context_line":"                           cell_instances.objects)))"},{"line_number":2356,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"fa7ab95a_fb009304","line":2353,"range":{"start_line":2353,"start_character":46,"end_line":2353,"end_character":54},"in_reply_to":"fa7ab95a_bb5c4b4c","updated":"2016-09-01 17:13:24.000000000","message":"Ah now I see why you wanted this:\n\nhttps://review.openstack.org/#/c/352587/\n\nMaybe we should just add a TODO to clean this up later once ^ is in.","commit_id":"184a703e0671ebb18121d439b8b87dd5c0e696d8"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"738088d0a6b7b2df0af236ca77b4e19e8158ddb9","unresolved":false,"context_lines":[{"line_number":2350,"context_line":"        filter_method \u003d _get_unique_filter_method()"},{"line_number":2351,"context_line":"        instances \u003d objects.InstanceList("},{"line_number":2352,"context_line":"            objects\u003dlist(filter(filter_method,"},{"line_number":2353,"context_line":"                           build_req_instances.objects +"},{"line_number":2354,"context_line":"                           cell0_instances.objects +"},{"line_number":2355,"context_line":"                           cell_instances.objects)))"},{"line_number":2356,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"fa7ab95a_667f8617","line":2353,"range":{"start_line":2353,"start_character":46,"end_line":2353,"end_character":54},"in_reply_to":"fa7ab95a_fb009304","updated":"2016-09-01 17:21:23.000000000","message":"Sure.","commit_id":"184a703e0671ebb18121d439b8b87dd5c0e696d8"}],"nova/tests/functional/wsgi/test_servers.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3860bddd1d0f4dcd567bf456e930ede262b8b87c","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.assertEqual(404, get_resp.status)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def test_instance_list_from_buildrequests(self):"},{"line_number":139,"context_line":"        self.useFixture(nova_fixtures.AllServicesCurrent())"},{"line_number":140,"context_line":"        image_ref \u003d fake_image.get_valid_image_id()"},{"line_number":141,"context_line":"        body \u003d {"},{"line_number":142,"context_line":"            \u0027server\u0027: {"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_bd5d6317","line":139,"range":{"start_line":139,"start_character":8,"end_line":139,"end_character":59},"updated":"2016-08-31 19:34:07.000000000","message":"Are these two tests identical except for this? Should we just put the rest of it in a private function to call from both tests?\n\nAside from that, it\u0027s not obvious to me how this could be affected by the service version, i.e. I don\u0027t see for example \"if service_version \u003c 15\" in this code path. Maybe a comment explaining briefly would be helpful.","commit_id":"c1fc1a2b12a59d9f034fd328c8f82281dab08f35"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"930f26cbc7ad1de030293ecb27323f91dcf51ada","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.assertEqual(404, get_resp.status)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def test_instance_list_from_buildrequests(self):"},{"line_number":139,"context_line":"        self.useFixture(nova_fixtures.AllServicesCurrent())"},{"line_number":140,"context_line":"        image_ref \u003d fake_image.get_valid_image_id()"},{"line_number":141,"context_line":"        body \u003d {"},{"line_number":142,"context_line":"            \u0027server\u0027: {"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_83ccbc62","line":139,"range":{"start_line":139,"start_character":8,"end_line":139,"end_character":59},"in_reply_to":"fa7ab95a_bd5d6317","updated":"2016-08-31 19:46:01.000000000","message":"They are identical. The idea is that nothing should change when we cross the magic boundary. It would be more obvious if I made a helper method so I will do that.","commit_id":"c1fc1a2b12a59d9f034fd328c8f82281dab08f35"}]}
