)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cda0b23e2ccb233f512102853430212ae5c2388f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"fixtures: Handle iterable params for \u0027NeutronFixture.list_*\u0027"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"It turns out it\u0027s possible to filter on multiple possible values using"},{"line_number":10,"context_line":"by using an iterable query value. We\u0027re going to need this for proper"},{"line_number":11,"context_line":"subnet mocking, so add it now. There\u0027s no impact on tests."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_739738ed","line":9,"range":{"start_line":9,"start_character":65,"end_line":9,"end_character":70},"updated":"2019-10-07 14:35:08.000000000","message":"nit: nix","commit_id":"d2d4317e1a31f6ac40c5f29b57cd4ea196dc8780"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c2871e9777c46f6a0cf3c2b407f8470070f415e4","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"It turns out it\u0027s possible to filter on multiple possible values using"},{"line_number":10,"context_line":"by using an iterable query value. We\u0027re going to need this for proper"},{"line_number":11,"context_line":"subnet mocking, so add it now. There\u0027s no impact on tests."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ia02ff34ec94a911906e2e812ab6503d4a2118bce"},{"line_number":14,"context_line":"Signed-off-by: Stephen Finucane \u003csfinucan@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_f040f409","line":11,"range":{"start_line":11,"start_character":31,"end_line":11,"end_character":58},"updated":"2019-10-07 21:10:03.000000000","message":"I can\u0027t actually see where list_networks is being tested at all. Everything that\u0027s coming close has it mocked out. So whereas that\u0027s a latent test gap, this refactor nevertheless introduces nontrivial risk as a result.\n\nI didn\u0027t look as closely into list_ports.","commit_id":"d2d4317e1a31f6ac40c5f29b57cd4ea196dc8780"}],"nova/tests/fixtures.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c2871e9777c46f6a0cf3c2b407f8470070f415e4","unresolved":false,"context_lines":[{"line_number":1650,"context_line":"        else:"},{"line_number":1651,"context_line":"            return None"},{"line_number":1652,"context_line":""},{"line_number":1653,"context_line":"    def _list_resource(self, resources, retrieve_all, **_params):"},{"line_number":1654,"context_line":"        # If \u0027fields\u0027 is passed we need to strip that out since it will mess"},{"line_number":1655,"context_line":"        # up the filtering as \u0027fields\u0027 is not a filter parameter."},{"line_number":1656,"context_line":"        _params.pop(\u0027fields\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_f0f23406","line":1653,"range":{"start_line":1653,"start_character":0,"end_line":1653,"end_character":65},"updated":"2019-10-07 21:10:03.000000000","message":"Since we\u0027re going to the trouble of factoring this out, and the nature of the args (especially **_params) is not intuitive, consider adding a docstring.","commit_id":"d2d4317e1a31f6ac40c5f29b57cd4ea196dc8780"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c2871e9777c46f6a0cf3c2b407f8470070f415e4","unresolved":false,"context_lines":[{"line_number":1659,"context_line":"            for key, val in _params.items():"},{"line_number":1660,"context_line":"                # params can be strings or lists/tuples and these need to be"},{"line_number":1661,"context_line":"                # handled differently"},{"line_number":1662,"context_line":"                if isinstance(val, list) or isinstance(val, tuple):"},{"line_number":1663,"context_line":"                    if not any(resource.get(key) \u003d\u003d v for v in val):"},{"line_number":1664,"context_line":"                        break"},{"line_number":1665,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_b097dc90","line":1662,"range":{"start_line":1662,"start_character":35,"end_line":1662,"end_character":65},"updated":"2019-10-07 21:10:03.000000000","message":"There are other iterables. This seems fragile.","commit_id":"d2d4317e1a31f6ac40c5f29b57cd4ea196dc8780"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cda0b23e2ccb233f512102853430212ae5c2388f","unresolved":false,"context_lines":[{"line_number":1660,"context_line":"                # params can be strings or lists/tuples and these need to be"},{"line_number":1661,"context_line":"                # handled differently"},{"line_number":1662,"context_line":"                if isinstance(val, list) or isinstance(val, tuple):"},{"line_number":1663,"context_line":"                    if not any(resource.get(key) \u003d\u003d v for v in val):"},{"line_number":1664,"context_line":"                        break"},{"line_number":1665,"context_line":"                else:"},{"line_number":1666,"context_line":"                    if resource.get(key) !\u003d val:"},{"line_number":1667,"context_line":"                        break"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_c53423e1","line":1664,"range":{"start_line":1663,"start_character":1,"end_line":1664,"end_character":1},"updated":"2019-10-07 14:35:08.000000000","message":"is it equivalent of\n\n   if resource.get(key) not in val:\n\n?","commit_id":"d2d4317e1a31f6ac40c5f29b57cd4ea196dc8780"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bd9bb879c22e64a29ea3b695a54aa346f3ed2d7e","unresolved":false,"context_lines":[{"line_number":1660,"context_line":"                # params can be strings or lists/tuples and these need to be"},{"line_number":1661,"context_line":"                # handled differently"},{"line_number":1662,"context_line":"                if isinstance(val, list) or isinstance(val, tuple):"},{"line_number":1663,"context_line":"                    if not any(resource.get(key) \u003d\u003d v for v in val):"},{"line_number":1664,"context_line":"                        break"},{"line_number":1665,"context_line":"                else:"},{"line_number":1666,"context_line":"                    if resource.get(key) !\u003d val:"},{"line_number":1667,"context_line":"                        break"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_256e5796","line":1664,"range":{"start_line":1663,"start_character":1,"end_line":1664,"end_character":1},"in_reply_to":"3fa7e38b_456fd3c4","updated":"2019-10-07 14:42:55.000000000","message":"no worries. I just wanted to test that my understanding of the logic is correct.","commit_id":"d2d4317e1a31f6ac40c5f29b57cd4ea196dc8780"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"af86de63a2e8bcfe5502a412bc77ab5b496a0727","unresolved":false,"context_lines":[{"line_number":1660,"context_line":"                # params can be strings or lists/tuples and these need to be"},{"line_number":1661,"context_line":"                # handled differently"},{"line_number":1662,"context_line":"                if isinstance(val, list) or isinstance(val, tuple):"},{"line_number":1663,"context_line":"                    if not any(resource.get(key) \u003d\u003d v for v in val):"},{"line_number":1664,"context_line":"                        break"},{"line_number":1665,"context_line":"                else:"},{"line_number":1666,"context_line":"                    if resource.get(key) !\u003d val:"},{"line_number":1667,"context_line":"                        break"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_456fd3c4","line":1664,"range":{"start_line":1663,"start_character":1,"end_line":1664,"end_character":1},"in_reply_to":"3fa7e38b_c53423e1","updated":"2019-10-07 14:36:22.000000000","message":"It is, yup. Don\u0027t know why I didn\u0027t do it that way, tbh","commit_id":"d2d4317e1a31f6ac40c5f29b57cd4ea196dc8780"}]}
