)]}'
{"ironic/api/controllers/v1/collection.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6c753287dd35bbfe7adf59fb8d23eabbd5045de5","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    :param fields:"},{"line_number":40,"context_line":"        Optional fields to use for sanitize function"},{"line_number":41,"context_line":"    :param sanitize_func:"},{"line_number":42,"context_line":"        Optional sanitize function run on each item"},{"line_number":43,"context_line":"    :param key_field:"},{"line_number":44,"context_line":"        Key name for building next URL"},{"line_number":45,"context_line":"    :param kwargs:"}],"source_content_type":"text/x-python","patch_set":16,"id":"1f621f24_0fbd22b6","line":42,"updated":"2020-11-17 19:55:09.000000000","message":"nit: mention that it has to modify the item in place","commit_id":"236c6b174baf77c88ed112530610d25fc1c11b31"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"58772cbb437df7b29e00085a091fe0b267148bd5","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    :param fields:"},{"line_number":40,"context_line":"        Optional fields to use for sanitize function"},{"line_number":41,"context_line":"    :param sanitize_func:"},{"line_number":42,"context_line":"        Optional sanitize function run on each item"},{"line_number":43,"context_line":"    :param key_field:"},{"line_number":44,"context_line":"        Key name for building next URL"},{"line_number":45,"context_line":"    :param kwargs:"}],"source_content_type":"text/x-python","patch_set":16,"id":"1f621f24_f64d1ec5","line":42,"in_reply_to":"1f621f24_0fbd22b6","updated":"2020-11-20 03:57:37.000000000","message":"Done","commit_id":"236c6b174baf77c88ed112530610d25fc1c11b31"}],"ironic/api/controllers/v1/utils.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a04ab0467d3cd8d6c57be1307b573f0dee0bf898","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        if field not in schema_fields:"},{"line_number":244,"context_line":"            patched_dict.pop(field, None)"},{"line_number":245,"context_line":"    if not validator:"},{"line_number":246,"context_line":"        validator \u003d args.schema(schema)"},{"line_number":247,"context_line":"    validator(\u0027patch\u0027, patched_dict)"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_5d9a2b62","line":246,"updated":"2020-09-14 09:14:12.000000000","message":"pep8: F821 undefined name \u0027args\u0027","commit_id":"68f0f811426243a184eaf13612ea46464817a5e9"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"0735383494c349ec9ca295f4bf053841b426c74d","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    for field in fields:"},{"line_number":254,"context_line":"        if id_map and field in id_map:"},{"line_number":255,"context_line":"            rpc_object[field] \u003d id_map[field]"},{"line_number":256,"context_line":"        elif field in schema_fields:"},{"line_number":257,"context_line":"            patch_val \u003d from_dict.get(field)"},{"line_number":258,"context_line":"            if field in rpc_object and rpc_object[field] !\u003d patch_val:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_5c3172ed","line":255,"updated":"2020-09-30 01:53:20.000000000","message":"It looks like setting this to the same value makes the field show up in obj_what_changed(), so the check on #258 is needed here too","commit_id":"f605570f7a8117b4134ff6ebfe05cb1b5ce6b0fb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6c753287dd35bbfe7adf59fb8d23eabbd5045de5","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    :param obj:"},{"line_number":96,"context_line":"        RPC object to convert to a dict"},{"line_number":97,"context_line":"    :param created_at:"},{"line_number":98,"context_line":"        Whether to include standard base class attribute created_at"},{"line_number":99,"context_line":"    :param updated_at:"},{"line_number":100,"context_line":"        Whether to include standard base class attribute updated_at"}],"source_content_type":"text/x-python","patch_set":16,"id":"1f621f24_6fb016de","line":97,"updated":"2020-11-17 19:55:09.000000000","message":"nit: I\u0027d call these include_created_at, include_uuid, etc","commit_id":"236c6b174baf77c88ed112530610d25fc1c11b31"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"58772cbb437df7b29e00085a091fe0b267148bd5","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    :param obj:"},{"line_number":96,"context_line":"        RPC object to convert to a dict"},{"line_number":97,"context_line":"    :param created_at:"},{"line_number":98,"context_line":"        Whether to include standard base class attribute created_at"},{"line_number":99,"context_line":"    :param updated_at:"},{"line_number":100,"context_line":"        Whether to include standard base class attribute updated_at"}],"source_content_type":"text/x-python","patch_set":16,"id":"fffc6b78_3aabf31d","line":97,"in_reply_to":"1f621f24_6fb016de","updated":"2020-11-20 03:57:37.000000000","message":"Done","commit_id":"236c6b174baf77c88ed112530610d25fc1c11b31"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6c753287dd35bbfe7adf59fb8d23eabbd5045de5","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    if created_at:"},{"line_number":129,"context_line":"        to_dict[\u0027created_at\u0027] \u003d (obj.created_at"},{"line_number":130,"context_line":"                                 and obj.created_at.isoformat() or None)"},{"line_number":131,"context_line":"    if updated_at:"},{"line_number":132,"context_line":"        to_dict[\u0027updated_at\u0027] \u003d (obj.updated_at"},{"line_number":133,"context_line":"                                 and obj.updated_at.isoformat() or None)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1f621f24_4fb39ae9","line":130,"updated":"2020-11-17 19:55:09.000000000","message":"nit: I\u0027d prefer `if .. else ..` syntax","commit_id":"236c6b174baf77c88ed112530610d25fc1c11b31"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"58772cbb437df7b29e00085a091fe0b267148bd5","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    if created_at:"},{"line_number":129,"context_line":"        to_dict[\u0027created_at\u0027] \u003d (obj.created_at"},{"line_number":130,"context_line":"                                 and obj.created_at.isoformat() or None)"},{"line_number":131,"context_line":"    if updated_at:"},{"line_number":132,"context_line":"        to_dict[\u0027updated_at\u0027] \u003d (obj.updated_at"},{"line_number":133,"context_line":"                                 and obj.updated_at.isoformat() or None)"}],"source_content_type":"text/x-python","patch_set":16,"id":"fffc6b78_fab04b8e","line":130,"in_reply_to":"1f621f24_4fb39ae9","updated":"2020-11-20 03:57:37.000000000","message":"Done","commit_id":"236c6b174baf77c88ed112530610d25fc1c11b31"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6c753287dd35bbfe7adf59fb8d23eabbd5045de5","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    if boolean_fields:"},{"line_number":149,"context_line":"        for field in boolean_fields:"},{"line_number":150,"context_line":"            to_dict[field] \u003d getattr(obj, field) or False"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    if link_resource:"},{"line_number":153,"context_line":"        if not link_resource_args:"}],"source_content_type":"text/x-python","patch_set":16,"id":"1f621f24_afcd0e67","line":150,"updated":"2020-11-17 19:55:09.000000000","message":"I\u0027d prefer we don\u0027t have list_fields, date_fields, etc. We know the type from a value and we also know it from the RPC object definition.","commit_id":"236c6b174baf77c88ed112530610d25fc1c11b31"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8078da61dd75fce82b9afa5b2d1d28eaf94f72a4","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        for field in fields:"},{"line_number":137,"context_line":"            to_dict[field] \u003d getattr(obj, field)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    if list_fields:"},{"line_number":140,"context_line":"        for field in list_fields:"},{"line_number":141,"context_line":"            to_dict[field] \u003d getattr(obj, field) or []"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    if date_fields:"},{"line_number":144,"context_line":"        for field in date_fields:"},{"line_number":145,"context_line":"            date \u003d getattr(obj, field)"},{"line_number":146,"context_line":"            to_dict[field] \u003d date and date.isoformat() or None"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    if boolean_fields:"},{"line_number":149,"context_line":"        for field in boolean_fields:"},{"line_number":150,"context_line":"            to_dict[field] \u003d getattr(obj, field) or False"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    if link_resource:"},{"line_number":153,"context_line":"        if not link_resource_args:"}],"source_content_type":"text/x-python","patch_set":16,"id":"1f621f24_2fba9ebf","line":150,"range":{"start_line":139,"start_character":0,"end_line":150,"end_character":57},"updated":"2020-11-17 19:57:40.000000000","message":"We don\u0027t think this will be needed, in talking with steve he is going to remove this later.","commit_id":"236c6b174baf77c88ed112530610d25fc1c11b31"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"58772cbb437df7b29e00085a091fe0b267148bd5","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        for field in fields:"},{"line_number":137,"context_line":"            to_dict[field] \u003d getattr(obj, field)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    if list_fields:"},{"line_number":140,"context_line":"        for field in list_fields:"},{"line_number":141,"context_line":"            to_dict[field] \u003d getattr(obj, field) or []"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    if date_fields:"},{"line_number":144,"context_line":"        for field in date_fields:"},{"line_number":145,"context_line":"            date \u003d getattr(obj, field)"},{"line_number":146,"context_line":"            to_dict[field] \u003d date and date.isoformat() or None"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    if boolean_fields:"},{"line_number":149,"context_line":"        for field in boolean_fields:"},{"line_number":150,"context_line":"            to_dict[field] \u003d getattr(obj, field) or False"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    if link_resource:"},{"line_number":153,"context_line":"        if not link_resource_args:"}],"source_content_type":"text/x-python","patch_set":16,"id":"fffc6b78_daad8732","line":150,"range":{"start_line":139,"start_character":0,"end_line":150,"end_character":57},"in_reply_to":"1f621f24_2fba9ebf","updated":"2020-11-20 03:57:37.000000000","message":"Done","commit_id":"236c6b174baf77c88ed112530610d25fc1c11b31"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6c753287dd35bbfe7adf59fb8d23eabbd5045de5","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        dict to populate with a ``node_uuid`` value"},{"line_number":174,"context_line":"    :param raise_notfound:"},{"line_number":175,"context_line":"        If ``True`` raise a NodeNotFound exception if the node doesn\u0027t exist"},{"line_number":176,"context_line":"        otherwise set the dict ``node_uuid`` value to None."},{"line_number":177,"context_line":"    :raises:"},{"line_number":178,"context_line":"        exception.NodeNotFound if raise_notfound and the node is not found"},{"line_number":179,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"1f621f24_8fc81255","line":176,"updated":"2020-11-17 19:55:09.000000000","message":"nit: From the discussion this argument seems to only be used once, maybe just handle the exception at the caller place","commit_id":"236c6b174baf77c88ed112530610d25fc1c11b31"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"58772cbb437df7b29e00085a091fe0b267148bd5","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        dict to populate with a ``node_uuid`` value"},{"line_number":174,"context_line":"    :param raise_notfound:"},{"line_number":175,"context_line":"        If ``True`` raise a NodeNotFound exception if the node doesn\u0027t exist"},{"line_number":176,"context_line":"        otherwise set the dict ``node_uuid`` value to None."},{"line_number":177,"context_line":"    :raises:"},{"line_number":178,"context_line":"        exception.NodeNotFound if raise_notfound and the node is not found"},{"line_number":179,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"fffc6b78_729e5808","line":176,"in_reply_to":"1f621f24_8fc81255","updated":"2020-11-20 03:57:37.000000000","message":"Done","commit_id":"236c6b174baf77c88ed112530610d25fc1c11b31"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6c753287dd35bbfe7adf59fb8d23eabbd5045de5","unresolved":false,"context_lines":[{"line_number":278,"context_line":"    :raises: exception.Invalid if validation fails"},{"line_number":279,"context_line":"    \"\"\""},{"line_number":280,"context_line":"    schema_fields \u003d schema[\u0027properties\u0027]"},{"line_number":281,"context_line":"    for field in set(patched_dict.keys()):"},{"line_number":282,"context_line":"        if field not in schema_fields:"},{"line_number":283,"context_line":"            patched_dict.pop(field, None)"},{"line_number":284,"context_line":"    if not validator:"}],"source_content_type":"text/x-python","patch_set":16,"id":"1f621f24_efc38636","line":281,"updated":"2020-11-17 19:55:09.000000000","message":"nit: set() and .keys() not needed","commit_id":"236c6b174baf77c88ed112530610d25fc1c11b31"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"58772cbb437df7b29e00085a091fe0b267148bd5","unresolved":false,"context_lines":[{"line_number":278,"context_line":"    :raises: exception.Invalid if validation fails"},{"line_number":279,"context_line":"    \"\"\""},{"line_number":280,"context_line":"    schema_fields \u003d schema[\u0027properties\u0027]"},{"line_number":281,"context_line":"    for field in set(patched_dict.keys()):"},{"line_number":282,"context_line":"        if field not in schema_fields:"},{"line_number":283,"context_line":"            patched_dict.pop(field, None)"},{"line_number":284,"context_line":"    if not validator:"}],"source_content_type":"text/x-python","patch_set":16,"id":"1f621f24_19c1ebe5","line":281,"in_reply_to":"1f621f24_efc38636","updated":"2020-11-20 03:57:37.000000000","message":"Done","commit_id":"236c6b174baf77c88ed112530610d25fc1c11b31"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6c753287dd35bbfe7adf59fb8d23eabbd5045de5","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    if fields is None:"},{"line_number":321,"context_line":"        return"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    for key in set(to_sanitize.keys()):"},{"line_number":324,"context_line":"        if key not in fields and key !\u003d \u0027links\u0027:"},{"line_number":325,"context_line":"            to_sanitize.pop(key, None)"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1f621f24_cfbe8aac","line":323,"updated":"2020-11-17 19:55:09.000000000","message":"nit: neither .keys() nor set() are needed","commit_id":"236c6b174baf77c88ed112530610d25fc1c11b31"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"58772cbb437df7b29e00085a091fe0b267148bd5","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    if fields is None:"},{"line_number":321,"context_line":"        return"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    for key in set(to_sanitize.keys()):"},{"line_number":324,"context_line":"        if key not in fields and key !\u003d \u0027links\u0027:"},{"line_number":325,"context_line":"            to_sanitize.pop(key, None)"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1f621f24_59bb6371","line":323,"in_reply_to":"1f621f24_cfbe8aac","updated":"2020-11-20 03:57:37.000000000","message":"Done","commit_id":"236c6b174baf77c88ed112530610d25fc1c11b31"}],"ironic/tests/unit/api/controllers/v1/test_utils.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"673a522857b6cc3936ba92cb3f4262091c3dd4ae","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            \u0027three\u0027: None,"},{"line_number":259,"context_line":"            \u0027four\u0027: [1, 2, 3, 4],"},{"line_number":260,"context_line":"        }, o, fields, schema, id_map\u003d{\u0027five_id\u0027: 123})"},{"line_number":261,"context_line":"        self.assertEqual({"},{"line_number":262,"context_line":"            \u0027one\u0027: 1,"},{"line_number":263,"context_line":"            \u0027two\u0027: \u0027ii\u0027,"},{"line_number":264,"context_line":"            \u0027three\u0027: None,"},{"line_number":265,"context_line":"            \u0027four\u0027: [1, 2, 3, 4],"},{"line_number":266,"context_line":"            \u0027five_id\u0027: 123"},{"line_number":267,"context_line":"        }, o)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        # test everything changes, and id_map values override from_dict values"},{"line_number":270,"context_line":"        o \u003d rpc_object()"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_7cbc36db","line":267,"range":{"start_line":261,"start_character":0,"end_line":267,"end_character":13},"updated":"2020-09-30 02:49:57.000000000","message":"these tests really need to test rpc_object.__setitem__ calls, and not just the final state of the dict","commit_id":"f605570f7a8117b4134ff6ebfe05cb1b5ce6b0fb"}]}
