)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"18561fe99258a9a86a765984d5c90cace00d8595","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add oem_vendors from resource links"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Dell G13 iDrac reports the OEM moniker in the Links attribute instead as a subfield of the manager itself."},{"line_number":10,"context_line":"This change adds support to retrieve OEM vendor strings of this form."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: If03458858ddffeb1d3ef76621e096782e0d4d318"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f65232a_83a425bb","line":9,"updated":"2020-10-27 08:50:53.000000000","message":"++","commit_id":"ee7493a15a4458276d4fe5f08ffd8fb11a906414"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"b1b4744ed5e79061eab47d92c1d65efabcbb2a79","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add oem_vendors from resource links"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Dell G13 iDrac reports the OEM moniker in the Links attribute instead as a subfield of the manager itself."},{"line_number":10,"context_line":"This change adds support to retrieve OEM vendor strings of this form."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: If03458858ddffeb1d3ef76621e096782e0d4d318"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f65232a_002bf5ea","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":105},"updated":"2020-10-26 11:41:59.000000000","message":"Currently, for me this reads that there is smth wrong with 13G iDRAC, but it\u0027s not. There are 2 Oem sections - one at the root of resource, another under \"Links\". It\u0027s just that 13G does not have anything at the root for manager supported and sushy didn\u0027t expose Links/Oem.\n\nIt should be enough to say that this adds support for Links/Oem in oem_vendors. Optionally, could mention 13G iDRAC as one that benefits from this change because it does not have anything in root Oem.","commit_id":"ee7493a15a4458276d4fe5f08ffd8fb11a906414"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"b1b4744ed5e79061eab47d92c1d65efabcbb2a79","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add oem_vendors from resource links"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Dell G13 iDrac reports the OEM moniker in the Links attribute instead as a subfield of the manager itself."},{"line_number":10,"context_line":"This change adds support to retrieve OEM vendor strings of this form."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: If03458858ddffeb1d3ef76621e096782e0d4d318"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f65232a_40e7ade5","line":9,"updated":"2020-10-26 11:41:59.000000000","message":"wrap at 72 chars (https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure)","commit_id":"ee7493a15a4458276d4fe5f08ffd8fb11a906414"},{"author":{"_account_id":32469,"name":"Manuel Schönlaub","email":"manuel.schoenlaub@gmail.com","username":"mschoenlaub"},"change_message_id":"84cdea5bbcf7d47751b630a773464faf6ba00fed","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add oem_vendors from resource links"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Dell G13 iDrac reports the OEM moniker in the Links attribute instead as a subfield of the manager itself."},{"line_number":10,"context_line":"This change adds support to retrieve OEM vendor strings of this form."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: If03458858ddffeb1d3ef76621e096782e0d4d318"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f65232a_59083c2b","line":9,"in_reply_to":"3f65232a_40e7ade5","updated":"2020-10-27 12:00:10.000000000","message":"Thanks for the hint. Done.","commit_id":"ee7493a15a4458276d4fe5f08ffd8fb11a906414"}],"sushy/resources/base.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"18561fe99258a9a86a765984d5c90cace00d8595","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        return getattr(self, key)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"class LinksField(CompositeField):"},{"line_number":222,"context_line":"    \"\"\"Reference to linked resources.\"\"\""},{"line_number":223,"context_line":"    oem_vendors \u003d Field(\u0027Oem\u0027, adapter\u003dlist)"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3f65232a_e3ab5986","line":221,"updated":"2020-10-27 08:50:53.000000000","message":"Agreed","commit_id":"ee7493a15a4458276d4fe5f08ffd8fb11a906414"},{"author":{"_account_id":32469,"name":"Manuel Schönlaub","email":"manuel.schoenlaub@gmail.com","username":"mschoenlaub"},"change_message_id":"a3b93a6ba3fd4f7a51872cad0e479c5198d45e72","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        return getattr(self, key)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"class LinksField(CompositeField):"},{"line_number":222,"context_line":"    \"\"\"Reference to linked resources.\"\"\""},{"line_number":223,"context_line":"    oem_vendors \u003d Field(\u0027Oem\u0027, adapter\u003dlist)"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3f65232a_1cdc2073","line":221,"updated":"2020-10-22 15:33:57.000000000","message":"Based on the finding that resources differ in the links they have, I\u0027d suggest to have it like this, so that in the future we can have resource-specific links inheriting this class.","commit_id":"ee7493a15a4458276d4fe5f08ffd8fb11a906414"},{"author":{"_account_id":32469,"name":"Manuel Schönlaub","email":"manuel.schoenlaub@gmail.com","username":"mschoenlaub"},"change_message_id":"84cdea5bbcf7d47751b630a773464faf6ba00fed","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        return getattr(self, key)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"class LinksField(CompositeField):"},{"line_number":222,"context_line":"    \"\"\"Reference to linked resources.\"\"\""},{"line_number":223,"context_line":"    oem_vendors \u003d Field(\u0027Oem\u0027, adapter\u003dlist)"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3f65232a_193fe425","line":221,"in_reply_to":"3f65232a_1cdc2073","updated":"2020-10-27 12:00:10.000000000","message":"Done","commit_id":"ee7493a15a4458276d4fe5f08ffd8fb11a906414"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"18561fe99258a9a86a765984d5c90cace00d8595","unresolved":false,"context_lines":[{"line_number":648,"context_line":"    @property"},{"line_number":649,"context_line":"    def oem_vendors(self):"},{"line_number":650,"context_line":"        oem_vendors \u003d self._oem_vendors or []"},{"line_number":651,"context_line":"        oem_vendors +\u003d self.links.oem_vendors or []"},{"line_number":652,"context_line":"        return list(set(oem_vendors))"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f65232a_c3ae1d97","line":651,"updated":"2020-10-27 08:50:53.000000000","message":"here you\u0027re modifying self._oem_vendors becase +\u003d is a modifying operation on mutable structures.\n\n return list(set(self._oem_vendors or ()) | set(self.links.oem_vendors or ()))","commit_id":"ee7493a15a4458276d4fe5f08ffd8fb11a906414"},{"author":{"_account_id":32469,"name":"Manuel Schönlaub","email":"manuel.schoenlaub@gmail.com","username":"mschoenlaub"},"change_message_id":"84cdea5bbcf7d47751b630a773464faf6ba00fed","unresolved":false,"context_lines":[{"line_number":648,"context_line":"    @property"},{"line_number":649,"context_line":"    def oem_vendors(self):"},{"line_number":650,"context_line":"        oem_vendors \u003d self._oem_vendors or []"},{"line_number":651,"context_line":"        oem_vendors +\u003d self.links.oem_vendors or []"},{"line_number":652,"context_line":"        return list(set(oem_vendors))"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f65232a_f97148e0","line":651,"in_reply_to":"3f65232a_c3ae1d97","updated":"2020-10-27 12:00:10.000000000","message":"Ups... Thanks for that hint. I improved it.\nUnfortunately I ouldn\u0027t take your suggestion 1:1 as it would IMHO produce duplicates when the same vendor is given in the links and directly via the oem property.","commit_id":"ee7493a15a4458276d4fe5f08ffd8fb11a906414"}],"sushy/resources/manager/manager.py":[{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"a2b8acc3d8cd57728b24b1601aae0b976ccbde39","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        return set([mgr_maps.GRAPHICAL_CONSOLE_VALUE_MAP[v] for v in"},{"line_number":119,"context_line":"                    set(mgr_maps.GRAPHICAL_CONSOLE_VALUE_MAP)."},{"line_number":120,"context_line":"                   intersection(self.graphical_console."},{"line_number":121,"context_line":"                                connect_types_supported)])"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def get_supported_serial_console_types(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_f098061b","line":120,"updated":"2020-10-07 10:28:42.000000000","message":"nit: here and below and above, these formatting changes seem not to be related to the issue and could be reverted.","commit_id":"728904448dd617053a38ec0eaf5a8f7f451e5973"},{"author":{"_account_id":32469,"name":"Manuel Schönlaub","email":"manuel.schoenlaub@gmail.com","username":"mschoenlaub"},"change_message_id":"7e29ca7a36c4668062bbae2c6c7de13d73862e2c","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        return set([mgr_maps.GRAPHICAL_CONSOLE_VALUE_MAP[v] for v in"},{"line_number":119,"context_line":"                    set(mgr_maps.GRAPHICAL_CONSOLE_VALUE_MAP)."},{"line_number":120,"context_line":"                   intersection(self.graphical_console."},{"line_number":121,"context_line":"                                connect_types_supported)])"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def get_supported_serial_console_types(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_8e3fd920","line":120,"in_reply_to":"9f560f44_f098061b","updated":"2020-10-08 11:49:57.000000000","message":"Done","commit_id":"728904448dd617053a38ec0eaf5a8f7f451e5973"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"a2b8acc3d8cd57728b24b1601aae0b976ccbde39","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    @property"},{"line_number":246,"context_line":"    def oem_vendors(self):"},{"line_number":247,"context_line":"        return self._oem_vendors + self.links.oem_vendors"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"class ManagerCollection(base.ResourceCollectionBase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_70a51648","line":247,"range":{"start_line":247,"start_character":8,"end_line":247,"end_character":57},"updated":"2020-10-07 10:28:42.000000000","message":"What\u0027s the usecase to merge these together instead of exposing them separately by `manager.oem_vendors` and `manager.links.oem_vendors`?\n\nIn any case in newer Dell systems this, as it is, will end up in duplication as `Dell` will be in both lists. If keeping this, then need to return unique entries.\n\nAnother thing, could check if this is applicable to other resources too and move `links.oem_vendors` to Resource base.","commit_id":"728904448dd617053a38ec0eaf5a8f7f451e5973"},{"author":{"_account_id":32469,"name":"Manuel Schönlaub","email":"manuel.schoenlaub@gmail.com","username":"mschoenlaub"},"change_message_id":"7e29ca7a36c4668062bbae2c6c7de13d73862e2c","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    @property"},{"line_number":246,"context_line":"    def oem_vendors(self):"},{"line_number":247,"context_line":"        return self._oem_vendors + self.links.oem_vendors"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"class ManagerCollection(base.ResourceCollectionBase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_224b415f","line":247,"range":{"start_line":247,"start_character":8,"end_line":247,"end_character":57},"in_reply_to":"9f560f44_70a51648","updated":"2020-10-08 11:49:57.000000000","message":"oem_vendors is a user-facing function that IMHO has one purpose: Find out, which OEM extensions one might want to load to interact with the resource.\nNow, on older Dell systems, such as 13G with firmware version 2.70.70.70, this is the only hint, that we are on an iDRAC Manager here.\n\nThe spec only specifies `links.oem` for managers and not for all resources, so I don\u0027t think we should move this to ResourceBase.\nWhile other resources have links too, the fields of these links are very much resource-type-specific.\n\nAnother interesting alternative though could be to extend our current extension mechanism to be apply to fields too. Then we could simply load the relevant extension on the `Links` field, that actually has the Oem field.","commit_id":"728904448dd617053a38ec0eaf5a8f7f451e5973"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"33f6ba200c5c1c679cb7d942d89c8a65eb3abb39","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    @property"},{"line_number":248,"context_line":"    def oem_vendors(self):"},{"line_number":249,"context_line":"        return list(set(self._oem_vendors + self.links.oem_vendors))"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"class ManagerCollection(base.ResourceCollectionBase):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f681702_f8db377a","line":249,"updated":"2020-10-19 11:09:39.000000000","message":"Is this really limited to only managers? I would expect the same behavior to potentially apply to any resources. Maybe move to the base Resource?","commit_id":"9e1b1c58688eb82d8fe1af0f9fb691dcacd89c7e"},{"author":{"_account_id":32469,"name":"Manuel Schönlaub","email":"manuel.schoenlaub@gmail.com","username":"mschoenlaub"},"change_message_id":"39714ba04e4b48f9f6229bdd23d2f01c9f904811","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    @property"},{"line_number":248,"context_line":"    def oem_vendors(self):"},{"line_number":249,"context_line":"        return list(set(self._oem_vendors + self.links.oem_vendors))"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"class ManagerCollection(base.ResourceCollectionBase):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f65232a_1c69c0bd","line":249,"in_reply_to":"5f681702_f8db377a","updated":"2020-10-22 15:30:38.000000000","message":"Indeed applies to most resources, not to all though.\n(e.g. http://redfish.dmtf.org/schemas/v1/AccountService.v1_7_2.json)\n\nHowever, given that the majority of resources have this, I moved it to base resource.","commit_id":"9e1b1c58688eb82d8fe1af0f9fb691dcacd89c7e"}]}
