)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b8dfb966735ca91de4af647109f2cfbab147d99","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Currently we pass the \u0027fields\u0027 argument as it is. If a caller provides"},{"line_number":10,"context_line":"a client-side name instead of a server-side one (e.g. id instead of uuid),"},{"line_number":11,"context_line":"it results in a failure. This patch fixes it."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ie39067b6e9217eed63f5ae46331ab8a408f0ace6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5faad753_335b4b88","line":12,"updated":"2019-09-06 13:58:33.000000000","message":"This is related to nova bug 1842989 right? Might be worth pointing that out.","commit_id":"1793c952407a5acb8f4e3ca972266480a043dede"}],"openstack/baremetal/v1/_common.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c4eef87865b0cbc36e64e6fd17117977f17de470","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    else:"},{"line_number":95,"context_line":"        return \u0027,\u0027.join(value)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class QueryWithFields(resource.QueryParameters):"},{"line_number":99,"context_line":"    _resource_mapping \u003d None"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5faad753_f0c0007f","line":97,"updated":"2019-09-10 20:29:05.000000000","message":"any reason this stuff shouldn\u0027t go in resource.py with QueryParameters?","commit_id":"be14e9cd181411922fdfa78a10b5103fb131eab1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"182d334a9b3a253fdca6256989345af417c105c7","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    else:"},{"line_number":95,"context_line":"        return \u0027,\u0027.join(value)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class QueryWithFields(resource.QueryParameters):"},{"line_number":99,"context_line":"    _resource_mapping \u003d None"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5faad753_e05b4051","line":97,"in_reply_to":"5faad753_f0c0007f","updated":"2019-09-11 11:28:45.000000000","message":"I\u0027m not sure if any other service will benefit from it.","commit_id":"be14e9cd181411922fdfa78a10b5103fb131eab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c4eef87865b0cbc36e64e6fd17117977f17de470","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        return super(QueryWithFields, self)._transpose(query)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"def with_fields(cls):"},{"line_number":126,"context_line":"    cls._query_mapping._set_resource_type(cls)"},{"line_number":127,"context_line":"    return cls"}],"source_content_type":"text/x-python","patch_set":7,"id":"5faad753_5060f4a5","line":125,"updated":"2019-09-10 20:29:05.000000000","message":"This decorator makes for pretty confusing reading. Could we instead maybe have QueryWithFields.__init__ accept the resource_type and invoke (or inline) _set_resource_type before/after calling super with the remaining args?","commit_id":"be14e9cd181411922fdfa78a10b5103fb131eab1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"182d334a9b3a253fdca6256989345af417c105c7","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        return super(QueryWithFields, self)._transpose(query)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"def with_fields(cls):"},{"line_number":126,"context_line":"    cls._query_mapping._set_resource_type(cls)"},{"line_number":127,"context_line":"    return cls"}],"source_content_type":"text/x-python","patch_set":7,"id":"5faad753_601e7071","line":125,"in_reply_to":"5faad753_5060f4a5","updated":"2019-09-11 11:28:45.000000000","message":"When __init__ is called, resource type does not yet exist, that\u0027s the problem. Another approach would be to turn QueryParameter into a description, which is arguably even uglier.","commit_id":"be14e9cd181411922fdfa78a10b5103fb131eab1"}],"openstack/baremetal/v1/_proxy.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c4eef87865b0cbc36e64e6fd17117977f17de470","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        res \u003d self._get_resource(resource_type, value)"},{"line_number":42,"context_line":"        kwargs \u003d {}"},{"line_number":43,"context_line":"        if fields:"},{"line_number":44,"context_line":"            if hasattr(resource_type._query_mapping, \u0027convert_fields\u0027):"},{"line_number":45,"context_line":"                fields \u003d resource_type._query_mapping.convert_fields(fields)"},{"line_number":46,"context_line":"            kwargs[\u0027fields\u0027] \u003d _common.comma_separated_list(fields)"},{"line_number":47,"context_line":"        return res.fetch("}],"source_content_type":"text/x-python","patch_set":7,"id":"5faad753_503794b1","line":44,"range":{"start_line":44,"start_character":12,"end_line":44,"end_character":71},"updated":"2019-09-10 20:29:05.000000000","message":"could we maybe give QueryParameters a default impl\n\n def convert_fields(fields):\n     return fields\n\nto save on this?","commit_id":"be14e9cd181411922fdfa78a10b5103fb131eab1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"182d334a9b3a253fdca6256989345af417c105c7","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        res \u003d self._get_resource(resource_type, value)"},{"line_number":42,"context_line":"        kwargs \u003d {}"},{"line_number":43,"context_line":"        if fields:"},{"line_number":44,"context_line":"            if hasattr(resource_type._query_mapping, \u0027convert_fields\u0027):"},{"line_number":45,"context_line":"                fields \u003d resource_type._query_mapping.convert_fields(fields)"},{"line_number":46,"context_line":"            kwargs[\u0027fields\u0027] \u003d _common.comma_separated_list(fields)"},{"line_number":47,"context_line":"        return res.fetch("}],"source_content_type":"text/x-python","patch_set":7,"id":"5faad753_6b03b10e","line":44,"range":{"start_line":44,"start_character":12,"end_line":44,"end_character":71},"in_reply_to":"5faad753_503794b1","updated":"2019-09-11 11:28:45.000000000","message":"If we make convert_fields not ironic-specific - sure.","commit_id":"be14e9cd181411922fdfa78a10b5103fb131eab1"}],"openstack/baremetal/v1/node.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ece2337fb1204721f7e3047f6a3fb38bd3b9bbf6","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    commit_jsonpatch \u003d True"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    _fields_mapping \u003d dict("},{"line_number":49,"context_line":"        instance_id\u003d\u0027instance_uuid\u0027,"},{"line_number":50,"context_line":"        is_maintenance\u003d\u0027maintenance\u0027,"},{"line_number":51,"context_line":"    )"},{"line_number":52,"context_line":"    _query_mapping \u003d resource.QueryParameters("}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_b99f19b3","line":49,"updated":"2019-09-06 15:14:17.000000000","message":"Should we be mapping id\u003d\u0027uuid\u0027 here too?","commit_id":"e0d8904b082e4fc7d79d3ed2d671e368dd857218"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d90d94ea217714f13cd57789072e3192a406627f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    commit_jsonpatch \u003d True"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    _fields_mapping \u003d dict("},{"line_number":49,"context_line":"        instance_id\u003d\u0027instance_uuid\u0027,"},{"line_number":50,"context_line":"        is_maintenance\u003d\u0027maintenance\u0027,"},{"line_number":51,"context_line":"    )"},{"line_number":52,"context_line":"    _query_mapping \u003d resource.QueryParameters("}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_19f98d7f","line":49,"in_reply_to":"5faad753_b99f19b3","updated":"2019-09-06 15:29:47.000000000","message":"We probably should, although we shouldn\u0027t add it to _query_mapping. hmmm.","commit_id":"e0d8904b082e4fc7d79d3ed2d671e368dd857218"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"0fe6d418c5ceebe2599cef8bc87bc04157294cb5","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    commit_method \u003d \u0027PATCH\u0027"},{"line_number":46,"context_line":"    commit_jsonpatch \u003d True"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    _fields_mapping \u003d dict("},{"line_number":49,"context_line":"        instance_id\u003d\u0027instance_uuid\u0027,"},{"line_number":50,"context_line":"        is_maintenance\u003d\u0027maintenance\u0027,"},{"line_number":51,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":6,"id":"5faad753_273b0039","line":48,"updated":"2019-09-06 17:14:14.000000000","message":"I think there are a few more we might think about mapping.\n\n    allocation_id \u003d\u003e allocation_uuid\n    is_automated_clean_enabled \u003d\u003e automated_clean\n    is_console_enabled \u003d\u003e console_enabled\n    is_protected \u003d\u003e protected\n    port_groups \u003d\u003e portgroups\n    \n\nhttps://github.com/openstack/openstacksdk/blob/master/openstack/baremetal/v1/node.py#L59","commit_id":"e53f07c2417ccd237c2e89ef0cadd0af75ed1046"}],"openstack/baremetal/v1/port.py":[{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"0fe6d418c5ceebe2599cef8bc87bc04157294cb5","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    commit_method \u003d \u0027PATCH\u0027"},{"line_number":30,"context_line":"    commit_jsonpatch \u003d True"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    _fields_mapping \u003d dict("},{"line_number":33,"context_line":"        node_id\u003d\u0027node_uuid\u0027,"},{"line_number":34,"context_line":"    )"},{"line_number":35,"context_line":"    _query_mapping \u003d resource.QueryParameters("}],"source_content_type":"text/x-python","patch_set":6,"id":"5faad753_671258b4","line":32,"updated":"2019-09-06 17:14:14.000000000","message":"More potential fields here as well\n\n    is_pxe_enabled \u003d\u003e pxe_enabled\n    port_group_id \u003d\u003e portgroup_id\n\nhttps://github.com/openstack/openstacksdk/blob/master/openstack/baremetal/v1/port.py#L41","commit_id":"e53f07c2417ccd237c2e89ef0cadd0af75ed1046"}],"openstack/baremetal/v1/port_group.py":[{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"0fe6d418c5ceebe2599cef8bc87bc04157294cb5","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    commit_method \u003d \u0027PATCH\u0027"},{"line_number":30,"context_line":"    commit_jsonpatch \u003d True"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    _query_mapping \u003d resource.QueryParameters("},{"line_number":33,"context_line":"        \u0027node\u0027, \u0027address\u0027,"},{"line_number":34,"context_line":"        fields\u003d{\u0027type\u0027: _common.fields_type()},"},{"line_number":35,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":6,"id":"5faad753_a77db0e8","line":32,"updated":"2019-09-06 17:14:14.000000000","message":"and more here\n\n\n    is_standalone_ports_supported \u003d\u003e standalone_ports_supported\n    node_id \u003d\u003e node_uuid\n    \nhttps://github.com/openstack/openstacksdk/blob/master/openstack/baremetal/v1/port_group.py#L40","commit_id":"e53f07c2417ccd237c2e89ef0cadd0af75ed1046"}],"openstack/resource.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c4eef87865b0cbc36e64e6fd17117977f17de470","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"5faad753_10dd9c41","updated":"2019-09-10 20:29:05.000000000","message":"Because of\n\n    def convert_fields(self, fields):\n        ...\n        return fields.__class__([self._resource_mapping.get(x, x)\n                                 for x in fields])\n\n...is this delta still necessary?","commit_id":"be14e9cd181411922fdfa78a10b5103fb131eab1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"182d334a9b3a253fdca6256989345af417c105c7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"5faad753_a003080f","in_reply_to":"5faad753_10dd9c41","updated":"2019-09-11 11:28:45.000000000","message":"Nope, it\u0027s probably a leftover from another try.","commit_id":"be14e9cd181411922fdfa78a10b5103fb131eab1"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"af4b950844bcf1b3cc13461adce0468202fa2ea6","unresolved":false,"context_lines":[{"line_number":345,"context_line":"                type_ \u003d None"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"            # NOTE(dtantsur): a small hack to be compatible with both"},{"line_number":348,"context_line":"            # single-argument (like int) and double-argument type functions."},{"line_number":349,"context_line":"            try:"},{"line_number":350,"context_line":"                provide_resource_type \u003d ("},{"line_number":351,"context_line":"                    len(inspect.getargspec(type_).args) \u003e 1)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5faad753_80deb0d7","line":348,"updated":"2019-09-16 11:23:15.000000000","message":"You know you\u0027re doing something right when you pull out inspect.getargspec","commit_id":"cdaa1045f976a16d748119c9f7d8ba034970edd7"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"cff58f5169aa38fbd4e228d6cc18f84af873a90f","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            # single-argument (like int) and double-argument type functions."},{"line_number":349,"context_line":"            try:"},{"line_number":350,"context_line":"                provide_resource_type \u003d ("},{"line_number":351,"context_line":"                    len(inspect.getargspec(type_).args) \u003e 1)"},{"line_number":352,"context_line":"            except TypeError:"},{"line_number":353,"context_line":"                provide_resource_type \u003d False"},{"line_number":354,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_d5a89b78","line":351,"updated":"2019-09-17 07:52:04.000000000","message":"according to https://docs.python.org/3/library/inspect.html#inspect.getargspec the function is deprecated.","commit_id":"cdaa1045f976a16d748119c9f7d8ba034970edd7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"98a0108bd02f00ddf894248a7249e4e91492f3d9","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            # single-argument (like int) and double-argument type functions."},{"line_number":349,"context_line":"            try:"},{"line_number":350,"context_line":"                provide_resource_type \u003d ("},{"line_number":351,"context_line":"                    len(inspect.getargspec(type_).args) \u003e 1)"},{"line_number":352,"context_line":"            except TypeError:"},{"line_number":353,"context_line":"                provide_resource_type \u003d False"},{"line_number":354,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_5cf29308","line":351,"in_reply_to":"3fa7e38b_d5a89b78","updated":"2019-09-17 11:35:17.000000000","message":"right, but neither alternative exist in python 2 :(","commit_id":"cdaa1045f976a16d748119c9f7d8ba034970edd7"}]}
