)]}'
{"nova/compute/api.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6bc93ba5dcb207874431b63f7f2ee5b74c427680","unresolved":false,"context_lines":[{"line_number":2513,"context_line":""},{"line_number":2514,"context_line":"    def get_all(self, context, search_opts\u003dNone, limit\u003dNone, marker\u003dNone,"},{"line_number":2515,"context_line":"                expected_attrs\u003dNone, sort_keys\u003dNone, sort_dirs\u003dNone,"},{"line_number":2516,"context_line":"                cell_down_support\u003dFalse):"},{"line_number":2517,"context_line":"        \"\"\"Get all instances filtered by one of the given parameters."},{"line_number":2518,"context_line":""},{"line_number":2519,"context_line":"        If there is no filter and the context is an admin, it will retrieve"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_0381c24a","line":2516,"range":{"start_line":2516,"start_character":16,"end_line":2516,"end_character":39},"updated":"2019-02-08 18:06:39.000000000","message":"Had to go find where this is set in this function, but.. here it is :)","commit_id":"ecd0d0c3572f77b844e5dd9657204d23ada12318"}],"nova/compute/multi_cell_list.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"33597de8f02c45a72d43aae6e4a3ada4f43a8717","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                return"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"            if context.is_cell_failure_sentinel(item._db_record):"},{"line_number":415,"context_line":"                if (not CONF.api.list_records_by_skipping_down_cells and"},{"line_number":416,"context_line":"                    not cell_down_support):"},{"line_number":417,"context_line":"                    # Value the config"},{"line_number":418,"context_line":"                    # ``CONF.api.list_records_by_skipping_down_cells`` only if"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_7b3638b7","line":415,"updated":"2019-02-08 13:52:20.000000000","message":"Can we get a unit test for this logic in this patch? The test changes in this patch are just passing cell_down_support\u003dFalse everywhere the new kwarg shows up.","commit_id":"d9bd5b1377acf4468c89422fa471de6c8325d775"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"072e3715d048c0db11204442eeee99099e8e57b5","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                return"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"            if context.is_cell_failure_sentinel(item._db_record):"},{"line_number":415,"context_line":"                if (not CONF.api.list_records_by_skipping_down_cells and"},{"line_number":416,"context_line":"                    not cell_down_support):"},{"line_number":417,"context_line":"                    # Value the config"},{"line_number":418,"context_line":"                    # ``CONF.api.list_records_by_skipping_down_cells`` only if"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_5b1014a9","line":415,"in_reply_to":"9fdfeff1_7b3638b7","updated":"2019-02-08 14:16:06.000000000","message":"Done","commit_id":"d9bd5b1377acf4468c89422fa471de6c8325d775"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"33597de8f02c45a72d43aae6e4a3ada4f43a8717","unresolved":false,"context_lines":[{"line_number":424,"context_line":"                    # the skipped results if cell_down_support is False."},{"line_number":425,"context_line":"                        raise exception.NovaException("},{"line_number":426,"context_line":"                            _(\u0027Cell %s is not responding but configuration \u0027"},{"line_number":427,"context_line":"                            \u0027indicates that we should fail.\u0027)"},{"line_number":428,"context_line":"                            % item.cell_uuid)"},{"line_number":429,"context_line":"                LOG.warning(\u0027Cell %s is not responding and hence is \u0027"},{"line_number":430,"context_line":"                            \u0027being omitted from the results\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_fb3f88b2","line":427,"range":{"start_line":427,"start_character":27,"end_line":427,"end_character":61},"updated":"2019-02-08 13:52:20.000000000","message":"Fix the alignment here.","commit_id":"d9bd5b1377acf4468c89422fa471de6c8325d775"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"072e3715d048c0db11204442eeee99099e8e57b5","unresolved":false,"context_lines":[{"line_number":424,"context_line":"                    # the skipped results if cell_down_support is False."},{"line_number":425,"context_line":"                        raise exception.NovaException("},{"line_number":426,"context_line":"                            _(\u0027Cell %s is not responding but configuration \u0027"},{"line_number":427,"context_line":"                            \u0027indicates that we should fail.\u0027)"},{"line_number":428,"context_line":"                            % item.cell_uuid)"},{"line_number":429,"context_line":"                LOG.warning(\u0027Cell %s is not responding and hence is \u0027"},{"line_number":430,"context_line":"                            \u0027being omitted from the results\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_bb47c0bc","line":427,"range":{"start_line":427,"start_character":27,"end_line":427,"end_character":61},"in_reply_to":"9fdfeff1_fb3f88b2","updated":"2019-02-08 14:16:06.000000000","message":"Done","commit_id":"d9bd5b1377acf4468c89422fa471de6c8325d775"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"33597de8f02c45a72d43aae6e4a3ada4f43a8717","unresolved":false,"context_lines":[{"line_number":426,"context_line":"                            _(\u0027Cell %s is not responding but configuration \u0027"},{"line_number":427,"context_line":"                            \u0027indicates that we should fail.\u0027)"},{"line_number":428,"context_line":"                            % item.cell_uuid)"},{"line_number":429,"context_line":"                LOG.warning(\u0027Cell %s is not responding and hence is \u0027"},{"line_number":430,"context_line":"                            \u0027being omitted from the results\u0027,"},{"line_number":431,"context_line":"                            item.cell_uuid)"},{"line_number":432,"context_line":"                if item._db_record \u003d\u003d context.did_not_respond_sentinel:"},{"line_number":433,"context_line":"                    self._cells_timed_out.add(item.cell_uuid)"},{"line_number":434,"context_line":"                elif isinstance(item._db_record, Exception):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_7be87815","line":431,"range":{"start_line":429,"start_character":16,"end_line":431,"end_character":43},"updated":"2019-02-08 13:52:20.000000000","message":"This warning could be confusing in the cell_down_support\u003dTrue case where we still return results for that cell, but they are the minimal results. Maybe this should be DEBUG or INFO if cell_down_support is True?","commit_id":"d9bd5b1377acf4468c89422fa471de6c8325d775"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"072e3715d048c0db11204442eeee99099e8e57b5","unresolved":false,"context_lines":[{"line_number":426,"context_line":"                            _(\u0027Cell %s is not responding but configuration \u0027"},{"line_number":427,"context_line":"                            \u0027indicates that we should fail.\u0027)"},{"line_number":428,"context_line":"                            % item.cell_uuid)"},{"line_number":429,"context_line":"                LOG.warning(\u0027Cell %s is not responding and hence is \u0027"},{"line_number":430,"context_line":"                            \u0027being omitted from the results\u0027,"},{"line_number":431,"context_line":"                            item.cell_uuid)"},{"line_number":432,"context_line":"                if item._db_record \u003d\u003d context.did_not_respond_sentinel:"},{"line_number":433,"context_line":"                    self._cells_timed_out.add(item.cell_uuid)"},{"line_number":434,"context_line":"                elif isinstance(item._db_record, Exception):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_7b2ab8e7","line":431,"range":{"start_line":429,"start_character":16,"end_line":431,"end_character":43},"in_reply_to":"9fdfeff1_7be87815","updated":"2019-02-08 14:16:06.000000000","message":"true, but following this warning, there is another warning here: https://github.com/openstack/nova/blob/a6963fa6858289d048e4d27ce8e61637cd023f4c/nova/compute/api.py#L2359 which says partial constructs will be done, which will make it clear. If you still feel its confusing, I can change it to debug/info for when its True.","commit_id":"d9bd5b1377acf4468c89422fa471de6c8325d775"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6bc93ba5dcb207874431b63f7f2ee5b74c427680","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                                  CONF.api.list_records_by_skipping_down_cells."},{"line_number":247,"context_line":"        \"\"\""},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"        cell_down_support \u003d kwargs.pop(\u0027cell_down_support\u0027, False)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        if marker:"},{"line_number":252,"context_line":"            # A marker identifier was provided from the API. Call this"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_e3cb5ea2","line":249,"updated":"2019-02-08 18:06:39.000000000","message":"I would have just put this as a thing before **kwargs in the definition so you don\u0027t have to pop it out and it\u0027s clear we don\u0027t pass it downstream, but this works of course.","commit_id":"ecd0d0c3572f77b844e5dd9657204d23ada12318"}],"nova/conf/api.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6bc93ba5dcb207874431b63f7f2ee5b74c427680","unresolved":false,"context_lines":[{"line_number":320,"context_line":"the down cells and return the results from the up cells set this option to"},{"line_number":321,"context_line":"True."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"Note that from API microversion 2.68 there could be transient conditions in the"},{"line_number":324,"context_line":"deployment where certain records are not available and the results could be"},{"line_number":325,"context_line":"partial for certain requests containing those records. In those cases this"},{"line_number":326,"context_line":"option will be ignored."}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_233726b3","line":323,"range":{"start_line":323,"start_character":32,"end_line":323,"end_character":36},"updated":"2019-02-08 18:06:39.000000000","message":"This is presumptive and we have to make sure we update it, right? I would tend to put this in the patch that adds the microversion because that\u0027s the first place it can be hit...","commit_id":"ecd0d0c3572f77b844e5dd9657204d23ada12318"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f03124c1bd88049df27cd01824aedaaa4fbece24","unresolved":false,"context_lines":[{"line_number":320,"context_line":"the down cells and return the results from the up cells set this option to"},{"line_number":321,"context_line":"True."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"Note that from API microversion 2.68 there could be transient conditions in the"},{"line_number":324,"context_line":"deployment where certain records are not available and the results could be"},{"line_number":325,"context_line":"partial for certain requests containing those records. In those cases this"},{"line_number":326,"context_line":"option will be ignored."}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_46bfd8cf","line":323,"range":{"start_line":323,"start_character":32,"end_line":323,"end_character":36},"in_reply_to":"9fdfeff1_233726b3","updated":"2019-02-08 19:26:08.000000000","message":"Yeah good point, we should move it.","commit_id":"ecd0d0c3572f77b844e5dd9657204d23ada12318"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7a4f45e0ac9af7582f7f7c7effeceef9ce07959c","unresolved":false,"context_lines":[{"line_number":320,"context_line":"the down cells and return the results from the up cells set this option to"},{"line_number":321,"context_line":"True."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"Note that from API microversion 2.68 there could be transient conditions in the"},{"line_number":324,"context_line":"deployment where certain records are not available and the results could be"},{"line_number":325,"context_line":"partial for certain requests containing those records. In those cases this"},{"line_number":326,"context_line":"option will be ignored."}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_29c70515","line":323,"range":{"start_line":323,"start_character":32,"end_line":323,"end_character":36},"in_reply_to":"9fdfeff1_46bfd8cf","updated":"2019-02-08 21:27:19.000000000","message":"Done","commit_id":"ecd0d0c3572f77b844e5dd9657204d23ada12318"}],"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":"33597de8f02c45a72d43aae6e4a3ada4f43a8717","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        # return the results from the up cell, ignoring the down cell."},{"line_number":192,"context_line":"        self.assertEqual(uuid_initial, uuid_final)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @mock.patch(\u0027nova.context.scatter_gather_cells\u0027)"},{"line_number":195,"context_line":"    def test_get_instances_by_not_skipping_down_cells(self, mock_sg):"},{"line_number":196,"context_line":"        self.flags(list_records_by_skipping_down_cells\u003dFalse, group\u003d\u0027api\u0027)"},{"line_number":197,"context_line":"        inst_cell0 \u003d self.insts[uuids.cell0]"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        def wrap(thing):"},{"line_number":200,"context_line":"            return multi_cell_list.RecordWrapper(ctx, self.context, thing)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        ctx \u003d nova_context.RequestContext()"},{"line_number":203,"context_line":"        instances \u003d [wrap(inst) for inst in inst_cell0]"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        # creating one up cell and two down cells"},{"line_number":206,"context_line":"        ret_val \u003d {}"},{"line_number":207,"context_line":"        ret_val[uuids.cell0] \u003d instances"},{"line_number":208,"context_line":"        ret_val[uuids.cell1] \u003d [wrap(exception.BuildRequestNotFound(uuid\u003d\u0027f\u0027))]"},{"line_number":209,"context_line":"        ret_val[uuids.cell2] \u003d [wrap(nova_context.did_not_respond_sentinel)]"},{"line_number":210,"context_line":"        mock_sg.return_value \u003d ret_val"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # Raises exception if a cell is down without skipping them"},{"line_number":213,"context_line":"        # as CONF.api.list_records_by_skipping_down_cells is set to False."},{"line_number":214,"context_line":"        # This would in turn result in an API 500 internal error."},{"line_number":215,"context_line":"        exp \u003d self.assertRaises(exception.NovaException,"},{"line_number":216,"context_line":"            instance_list.get_instance_objects_sorted, self.context, {}, None,"},{"line_number":217,"context_line":"            None, [], None, None)"},{"line_number":218,"context_line":"        self.assertIn(\u0027configuration indicates\u0027, six.text_type(exp))"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def test_batch_size_fixed(self):"},{"line_number":221,"context_line":"        fixed_size \u003d 200"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_fb49c831","line":218,"range":{"start_line":194,"start_character":0,"end_line":218,"end_character":68},"updated":"2019-02-08 13:52:20.000000000","message":"Seems you could copy and add a test based on this which passes cell_down_support\u003dTrue and verify an exception isn\u0027t raised.","commit_id":"d9bd5b1377acf4468c89422fa471de6c8325d775"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"072e3715d048c0db11204442eeee99099e8e57b5","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        # return the results from the up cell, ignoring the down cell."},{"line_number":192,"context_line":"        self.assertEqual(uuid_initial, uuid_final)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    @mock.patch(\u0027nova.context.scatter_gather_cells\u0027)"},{"line_number":195,"context_line":"    def test_get_instances_by_not_skipping_down_cells(self, mock_sg):"},{"line_number":196,"context_line":"        self.flags(list_records_by_skipping_down_cells\u003dFalse, group\u003d\u0027api\u0027)"},{"line_number":197,"context_line":"        inst_cell0 \u003d self.insts[uuids.cell0]"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        def wrap(thing):"},{"line_number":200,"context_line":"            return multi_cell_list.RecordWrapper(ctx, self.context, thing)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        ctx \u003d nova_context.RequestContext()"},{"line_number":203,"context_line":"        instances \u003d [wrap(inst) for inst in inst_cell0]"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        # creating one up cell and two down cells"},{"line_number":206,"context_line":"        ret_val \u003d {}"},{"line_number":207,"context_line":"        ret_val[uuids.cell0] \u003d instances"},{"line_number":208,"context_line":"        ret_val[uuids.cell1] \u003d [wrap(exception.BuildRequestNotFound(uuid\u003d\u0027f\u0027))]"},{"line_number":209,"context_line":"        ret_val[uuids.cell2] \u003d [wrap(nova_context.did_not_respond_sentinel)]"},{"line_number":210,"context_line":"        mock_sg.return_value \u003d ret_val"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # Raises exception if a cell is down without skipping them"},{"line_number":213,"context_line":"        # as CONF.api.list_records_by_skipping_down_cells is set to False."},{"line_number":214,"context_line":"        # This would in turn result in an API 500 internal error."},{"line_number":215,"context_line":"        exp \u003d self.assertRaises(exception.NovaException,"},{"line_number":216,"context_line":"            instance_list.get_instance_objects_sorted, self.context, {}, None,"},{"line_number":217,"context_line":"            None, [], None, None)"},{"line_number":218,"context_line":"        self.assertIn(\u0027configuration indicates\u0027, six.text_type(exp))"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def test_batch_size_fixed(self):"},{"line_number":221,"context_line":"        fixed_size \u003d 200"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_bb2020f9","line":218,"range":{"start_line":194,"start_character":0,"end_line":218,"end_character":68},"in_reply_to":"9fdfeff1_fb49c831","updated":"2019-02-08 14:16:06.000000000","message":"Done","commit_id":"d9bd5b1377acf4468c89422fa471de6c8325d775"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"377f16a0a2850e13f903194c5a812eb6ea161897","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        ret_val[uuids.cell2] \u003d [wrap(nova_context.did_not_respond_sentinel)]"},{"line_number":238,"context_line":"        mock_sg.return_value \u003d ret_val"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        # From the new microversion (2.68) if cell_down_support is True"},{"line_number":241,"context_line":"        # then CONF.api.list_records_by_skipping_down_cells will be ignored."},{"line_number":242,"context_line":"        # Exception will not be raised even if its False."},{"line_number":243,"context_line":"        obj, res \u003d instance_list.get_instances_sorted(self.context, {}, None,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_0ca9f4db","line":240,"range":{"start_line":240,"start_character":19,"end_line":240,"end_character":22},"updated":"2019-02-08 16:23:08.000000000","message":"nit: I\u0027d remove this because it won\u0027t be so new in a few years.","commit_id":"ecd0d0c3572f77b844e5dd9657204d23ada12318"}]}
