)]}'
{"nova/compute/instance_list.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6268f36aa8821e693909ceec08596903291a290","unresolved":false,"context_lines":[{"line_number":224,"context_line":"def get_instance_objects_sorted(ctx, filters, limit, marker, expected_attrs,"},{"line_number":225,"context_line":"                                sort_keys, sort_dirs):"},{"line_number":226,"context_line":"    \"\"\"Same as above, but return an InstanceList.\"\"\""},{"line_number":227,"context_line":"    columns_to_join \u003d instance_obj._expected_cols(expected_attrs)"},{"line_number":228,"context_line":"    instance_generator \u003d get_instances_sorted(ctx, filters, limit, marker,"},{"line_number":229,"context_line":"                                              columns_to_join, sort_keys,"},{"line_number":230,"context_line":"                                              sort_dirs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_b3af4693","line":227,"range":{"start_line":227,"start_character":22,"end_line":227,"end_character":65},"updated":"2017-09-22 19:00:12.000000000","message":"yup https://github.com/openstack/nova/blob/995d224d0f3dc1cf794b0ac3ef4e421aa827e00d/nova/objects/instance.py#L1233\n\nAlthough, _expected_cols doesn\u0027t handle fault:\n\nhttps://github.com/openstack/nova/blob/995d224d0f3dc1cf794b0ac3ef4e421aa827e00d/nova/objects/instance.py#L77\n\nSo does that filter fault out?","commit_id":"2e5431c89b3651d7faad8e293135c4a0d814cc65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e6ae2418769d8a44d416dceec0766725821af5b8","unresolved":false,"context_lines":[{"line_number":224,"context_line":"def get_instance_objects_sorted(ctx, filters, limit, marker, expected_attrs,"},{"line_number":225,"context_line":"                                sort_keys, sort_dirs):"},{"line_number":226,"context_line":"    \"\"\"Same as above, but return an InstanceList.\"\"\""},{"line_number":227,"context_line":"    columns_to_join \u003d instance_obj._expected_cols(expected_attrs)"},{"line_number":228,"context_line":"    instance_generator \u003d get_instances_sorted(ctx, filters, limit, marker,"},{"line_number":229,"context_line":"                                              columns_to_join, sort_keys,"},{"line_number":230,"context_line":"                                              sort_dirs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_f49481ea","line":227,"range":{"start_line":227,"start_character":22,"end_line":227,"end_character":65},"in_reply_to":"7f515b1d_b3af4693","updated":"2017-09-23 02:01:58.000000000","message":"\u003e yup https://github.com/openstack/nova/blob/995d224d0f3dc1cf794b0ac3ef4e421aa827e00d/nova/objects/instance.py#L1233\n \u003e \n \u003e Although, _expected_cols doesn\u0027t handle fault:\n \u003e \n \u003e https://github.com/openstack/nova/blob/995d224d0f3dc1cf794b0ac3ef4e421aa827e00d/nova/objects/instance.py#L77\n \u003e \n \u003e So does that filter fault out?\n\nNevermind, it does, because fault is in _INSTANCE_OPTIONAL_JOINED_FIELDS, not sure how I missed that.","commit_id":"2e5431c89b3651d7faad8e293135c4a0d814cc65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1bb83f5a2c866bb4f24ba7ef248ea88d4a822ff9","unresolved":false,"context_lines":[{"line_number":224,"context_line":"def get_instance_objects_sorted(ctx, filters, limit, marker, expected_attrs,"},{"line_number":225,"context_line":"                                sort_keys, sort_dirs):"},{"line_number":226,"context_line":"    \"\"\"Same as above, but return an InstanceList.\"\"\""},{"line_number":227,"context_line":"    columns_to_join \u003d instance_obj._expected_cols(expected_attrs)"},{"line_number":228,"context_line":"    instance_generator \u003d get_instances_sorted(ctx, filters, limit, marker,"},{"line_number":229,"context_line":"                                              columns_to_join, sort_keys,"},{"line_number":230,"context_line":"                                              sort_dirs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_b43a89e4","line":227,"range":{"start_line":227,"start_character":22,"end_line":227,"end_character":65},"in_reply_to":"7f515b1d_f49481ea","updated":"2017-09-23 02:12:38.000000000","message":"NEVERMIND, I WAS right:\n\nhttps://review.openstack.org/#/c/506774/1/nova/objects/instance.py","commit_id":"2e5431c89b3651d7faad8e293135c4a0d814cc65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6268f36aa8821e693909ceec08596903291a290","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    instance_generator \u003d get_instances_sorted(ctx, filters, limit, marker,"},{"line_number":229,"context_line":"                                              columns_to_join, sort_keys,"},{"line_number":230,"context_line":"                                              sort_dirs)"},{"line_number":231,"context_line":"    if \u0027fault\u0027 in expected_attrs:"},{"line_number":232,"context_line":"        # We join fault above, so we need to make sure we don\u0027t ask"},{"line_number":233,"context_line":"        # make_instance_list to do it again for us"},{"line_number":234,"context_line":"        expected_attrs \u003d copy.copy(expected_attrs)"},{"line_number":235,"context_line":"        expected_attrs.remove(\u0027fault\u0027)"},{"line_number":236,"context_line":"    return instance_obj._make_instance_list(ctx, objects.InstanceList(),"},{"line_number":237,"context_line":"                                            instance_generator,"},{"line_number":238,"context_line":"                                            expected_attrs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_53ac928b","line":235,"range":{"start_line":231,"start_character":4,"end_line":235,"end_character":38},"updated":"2017-09-22 19:00:12.000000000","message":"You don\u0027t have a test for this case.","commit_id":"2e5431c89b3651d7faad8e293135c4a0d814cc65"}],"nova/tests/functional/compute/test_instance_list.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6268f36aa8821e693909ceec08596903291a290","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        spread \u003d datetime.timedelta(minutes\u003d10)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        cells \u003d objects.CellMappingList.get_all(self.context)"},{"line_number":383,"context_line":"        # Create three instances in each of the real cells. Leave cell0"},{"line_number":384,"context_line":"        # empty to make sure we don\u0027t break with an empty cell"},{"line_number":385,"context_line":"        for cell in cells[1:]:"},{"line_number":386,"context_line":"            for i in range(0, self.num_instances):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_f3937e4e","line":383,"range":{"start_line":383,"start_character":66,"end_line":383,"end_character":71},"updated":"2017-09-22 19:00:12.000000000","message":"copy/paste from an earlier test where you\u0027ve changed this now since we don\u0027t know if it\u0027s cell0 or not.","commit_id":"2e5431c89b3651d7faad8e293135c4a0d814cc65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6268f36aa8821e693909ceec08596903291a290","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def test_get_instance_objects_sorted(self):"},{"line_number":418,"context_line":"        insts \u003d instance_list.get_instance_objects_sorted("},{"line_number":419,"context_line":"            self.context, {}, None, None, [], [\u0027uuid\u0027], [\u0027asc\u0027])"},{"line_number":420,"context_line":"        found_uuids \u003d [x.uuid for x in insts]"},{"line_number":421,"context_line":"        had_uuids \u003d sorted([x[\u0027uuid\u0027] for x in self.instances])"},{"line_number":422,"context_line":"        self.assertEqual(had_uuids, found_uuids)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_b39d065b","line":419,"range":{"start_line":419,"start_character":26,"end_line":419,"end_character":63},"updated":"2017-09-22 19:00:12.000000000","message":"Please use named args for this, it\u0027s hard to follow otherwise without two windows open.","commit_id":"2e5431c89b3651d7faad8e293135c4a0d814cc65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e6ae2418769d8a44d416dceec0766725821af5b8","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        spread \u003d datetime.timedelta(minutes\u003d10)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        cells \u003d objects.CellMappingList.get_all(self.context)"},{"line_number":383,"context_line":"        # Create three instances in each of the real cells. Leave the"},{"line_number":384,"context_line":"        # first cell empty to make sure we don\u0027t break with an empty"},{"line_number":385,"context_line":"        # one"},{"line_number":386,"context_line":"        for cell in cells[1:]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f515b1d_74dad1e9","line":383,"range":{"start_line":383,"start_character":33,"end_line":383,"end_character":58},"updated":"2017-09-23 02:01:58.000000000","message":"of which there is only one, note to self","commit_id":"1feb78f82b33063f2884465de20d63e07943eb14"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"809d9df1136966a8f958519226afe6e276354792","unresolved":false,"context_lines":[{"line_number":450,"context_line":"        # They should all have fault set, but only some have"},{"line_number":451,"context_line":"        # actual faults"},{"line_number":452,"context_line":"        self.assertEqual(2, len([inst for inst in insts"},{"line_number":453,"context_line":"                                 if inst.fault]))"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f515b1d_f3475a76","line":453,"updated":"2017-09-29 08:33:44.000000000","message":"While working on my CellDatabases patch [1], I think I found a bug here. In my local env, I had changed the default database of the CellDatabases fixture to \u0027cell0\u0027 and this test started failing.\n\nAfter doing some digging, I found that Instance._from_db_object can\u0027t handle any pre-loaded optional attributes [2], so it won\u0027t use db_inst[\u0027fault\u0027] to set the Instance.fault attribute. It also won\u0027t fetch it [3] because \u0027fault\u0027 isn\u0027t in expected_attrs.\n\nIt ends up lazy-loading it using Instance._context, which isn\u0027t targeted to a cell. Currently, with CellDatabases using \u0027cell1\u0027 as its default, the untargeted DB query finds the fault and successfully lazy-loads it, so the test passes. The test failed locally for me because the fault was not found in the \u0027cell0\u0027 database that I had as default and the lazy-load returned None.\n\nI\u0027m not sure if it\u0027s intentional, but TestInstanceListObjects doesn\u0027t use NUMBER_OF_CELLS \u003d 3 like the other test case, so by coincidence the only instances with faults were the \u0027cell1\u0027 ones that matched the default database. \n\n[1] https://review.openstack.org/#/c/508432\n[2] https://github.com/openstack/nova/blob/ae4b5d0/nova/objects/instance.py#L348-L350\n[3] https://github.com/openstack/nova/blob/ae4b5d0/nova/objects/instance.py#L369-L372","commit_id":"1feb78f82b33063f2884465de20d63e07943eb14"}]}
