)]}'
{"openstack/baremetal/v1/node.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"5482adb86e33ac9a88b8ee897b0e488cc3d6cbf6","unresolved":true,"context_lines":[{"line_number":921,"context_line":"        self.traits \u003d traits"},{"line_number":922,"context_line":""},{"line_number":923,"context_line":"    def set_passthru(self, session):"},{"line_number":924,"context_line":"        \"\"\"Set passthru for a node."},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"        :param session: The session to use for making this request."},{"line_number":927,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"71bd5287_ed5afadf","line":924,"updated":"2021-04-09 03:37:18.000000000","message":"A couple of things:\n\n1) I think this needs a method argument, as documented here: https://docs.openstack.org/api-ref/baremetal/?expanded\u003dcall-a-method-detail#node-vendor-passthru-nodes\n\n2) I don\u0027t think \"set passthru\" is the best way to describe this. Vendor passthru is basically a \"passthrough\" API to allow drivers to implement special features or behavior that may notbe standard yet. Perhaps something like \"Put call to node vendor passthru\". I\u0027d also suggest similarly changing the method name, if that makes sense for openstacksdk.","commit_id":"25a94c013d23da912947a17cd38f7af6f34dcc39"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1753ab06610fc831bbeedb1b5d2716ba1e374741","unresolved":true,"context_lines":[{"line_number":921,"context_line":"        self.traits \u003d traits"},{"line_number":922,"context_line":""},{"line_number":923,"context_line":"    def set_passthru(self, session):"},{"line_number":924,"context_line":"        \"\"\"Set passthru for a node."},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"        :param session: The session to use for making this request."},{"line_number":927,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"f9296b03_b3bc5789","line":924,"in_reply_to":"16c3ff40_d4548c2c","updated":"2021-04-09 14:59:28.000000000","message":"+1 that\u0027s a great idea for an interface","commit_id":"25a94c013d23da912947a17cd38f7af6f34dcc39"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b2eaf29df9a36c79e47465d5bc36a8e9512e3d39","unresolved":true,"context_lines":[{"line_number":921,"context_line":"        self.traits \u003d traits"},{"line_number":922,"context_line":""},{"line_number":923,"context_line":"    def set_passthru(self, session):"},{"line_number":924,"context_line":"        \"\"\"Set passthru for a node."},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"        :param session: The session to use for making this request."},{"line_number":927,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"16c3ff40_d4548c2c","line":924,"in_reply_to":"71bd5287_ed5afadf","updated":"2021-04-09 09:19:53.000000000","message":"I\u0027d use call_vendor_passthru(self, session, verb, method)\n\nwhere verb is the HTTP verb (\u0027get\u0027, \u0027post\u0027, etc)","commit_id":"25a94c013d23da912947a17cd38f7af6f34dcc39"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b2eaf29df9a36c79e47465d5bc36a8e9512e3d39","unresolved":true,"context_lines":[{"line_number":930,"context_line":"        request \u003d self._prepare_request(requires_id\u003dTrue)"},{"line_number":931,"context_line":"        request.url \u003d utils.urljoin(request.url, \u0027vendor_passthru\u0027)"},{"line_number":932,"context_line":""},{"line_number":933,"context_line":"        response \u003d session.put("},{"line_number":934,"context_line":"            request.url, headers\u003drequest.headers, microversion\u003dversion,"},{"line_number":935,"context_line":"            retriable_status_codes\u003d_common.RETRIABLE_STATUS_CODES)"},{"line_number":936,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"86b2b77a_c5c72de9","line":933,"updated":"2021-04-09 09:19:53.000000000","message":"It\u0027s not just `put`, any verbs are possible (see above)","commit_id":"25a94c013d23da912947a17cd38f7af6f34dcc39"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"5f9af987969cd45169c7deba71ca4d9c6d3eef84","unresolved":true,"context_lines":[{"line_number":952,"context_line":"            raise ValueError(msg)"},{"line_number":953,"context_line":""},{"line_number":954,"context_line":"        msg \u003d (\"Failed to set vendor_passthru for node {node}\""},{"line_number":955,"context_line":"               .format(node\u003dself.id))"},{"line_number":956,"context_line":"        exceptions.raise_from_response(response, error_message\u003dmsg)"},{"line_number":957,"context_line":""},{"line_number":958,"context_line":"    def patch(self, session, patch\u003dNone, prepend_key\u003dTrue, has_body\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":5,"id":"a680ebcf_6725a2f3","line":955,"updated":"2021-04-11 22:37:10.000000000","message":"Please also print verb and method.","commit_id":"624303de7b5cf70ae94edfeda98a2be9be1ef25f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"56127f4f1b0ddb84f567eaf4a808a4a263012dae","unresolved":true,"context_lines":[{"line_number":919,"context_line":"        exceptions.raise_from_response(response, error_message\u003dmsg)"},{"line_number":920,"context_line":""},{"line_number":921,"context_line":"        self.traits \u003d traits"},{"line_number":922,"context_line":""},{"line_number":923,"context_line":"    def call_vendor_passthru(self, session, verb, method):"},{"line_number":924,"context_line":"        \"\"\"Calls vendor_passthru for a node."},{"line_number":925,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"2677140d_476d3255","line":922,"updated":"2021-04-12 09:09:38.000000000","message":"Could you also add list_vendor_passthru based on https://docs.openstack.org/api-ref/baremetal/?expanded\u003dlist-methods-detail#list-methods?","commit_id":"003087711bf4b78e263adbbef4e8431595e63652"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"56127f4f1b0ddb84f567eaf4a808a4a263012dae","unresolved":true,"context_lines":[{"line_number":920,"context_line":""},{"line_number":921,"context_line":"        self.traits \u003d traits"},{"line_number":922,"context_line":""},{"line_number":923,"context_line":"    def call_vendor_passthru(self, session, verb, method):"},{"line_number":924,"context_line":"        \"\"\"Calls vendor_passthru for a node."},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"        :param session: The session to use for making this request."}],"source_content_type":"text/x-python","patch_set":6,"id":"564a36f9_80401a08","line":923,"updated":"2021-04-12 09:09:38.000000000","message":"You need to allow an optional JSON body","commit_id":"003087711bf4b78e263adbbef4e8431595e63652"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"56127f4f1b0ddb84f567eaf4a808a4a263012dae","unresolved":true,"context_lines":[{"line_number":926,"context_line":"        :param session: The session to use for making this request."},{"line_number":927,"context_line":"        \"\"\""},{"line_number":928,"context_line":"        session \u003d self._get_session(session)"},{"line_number":929,"context_line":"        version \u003d utils.pick_microversion(session, \u00271.37\u0027)"},{"line_number":930,"context_line":"        request \u003d self._prepare_request(requires_id\u003dTrue)"},{"line_number":931,"context_line":"        request.url \u003d utils.urljoin(request.url, \u0027vendor_passthru?method\u003d{}\u0027"},{"line_number":932,"context_line":"                                    .format(method))"}],"source_content_type":"text/x-python","patch_set":6,"id":"7379d767_a5c65fcc","line":929,"updated":"2021-04-12 09:09:38.000000000","message":"The version 1.37 is for traits operation. Actually, vendor passthru does not require a version, so use just:\n\n version \u003d self._get_microversion_for(session, \u0027commit\u0027)","commit_id":"003087711bf4b78e263adbbef4e8431595e63652"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"56127f4f1b0ddb84f567eaf4a808a4a263012dae","unresolved":true,"context_lines":[{"line_number":932,"context_line":"                                    .format(method))"},{"line_number":933,"context_line":""},{"line_number":934,"context_line":"        if verb \u003d\u003d \"GET\":"},{"line_number":935,"context_line":"            response \u003d session.get("},{"line_number":936,"context_line":"                request.url, headers\u003drequest.headers, microversion\u003dversion,"},{"line_number":937,"context_line":"                retriable_status_codes\u003d_common.RETRIABLE_STATUS_CODES)"},{"line_number":938,"context_line":"        elif verb \u003d\u003d \"POST\":"}],"source_content_type":"text/x-python","patch_set":6,"id":"5d46dcc6_63b9ef45","line":935,"updated":"2021-04-12 09:09:38.000000000","message":"better:\n\n call \u003d getattr(session, verb.lower())\n response \u003d call(...)","commit_id":"003087711bf4b78e263adbbef4e8431595e63652"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"56127f4f1b0ddb84f567eaf4a808a4a263012dae","unresolved":true,"context_lines":[{"line_number":954,"context_line":"        msg \u003d (\"Failed to set vendor_passthru for node {node}, verb {verb}\""},{"line_number":955,"context_line":"               \" and method {method}\""},{"line_number":956,"context_line":"               .format(node\u003dself.id, verb\u003dverb, method\u003dmethod))"},{"line_number":957,"context_line":"        exceptions.raise_from_response(response, error_message\u003dmsg)"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"    def patch(self, session, patch\u003dNone, prepend_key\u003dTrue, has_body\u003dTrue,"},{"line_number":960,"context_line":"              retry_on_conflict\u003dNone, base_path\u003dNone, reset_interfaces\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"f42abb6e_6bc496fc","line":957,"updated":"2021-04-12 09:09:38.000000000","message":"Passthru methods may return a body. Since it\u0027s not always JSON, I suggest just returning the whole response after this check.","commit_id":"003087711bf4b78e263adbbef4e8431595e63652"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"236b9aebb8a9e0fcf6b9204776f274b4bfdf8744","unresolved":true,"context_lines":[{"line_number":926,"context_line":"        :param session: The session to use for making this request."},{"line_number":927,"context_line":"        :param verb: The HTTP verb, one of GET, SET, POST, DELETE."},{"line_number":928,"context_line":"        :param method: The method to call using vendor_passthru."},{"line_number":929,"context_line":"        :param body: The JSON body in the HTTP call."},{"line_number":930,"context_line":"        \"\"\""},{"line_number":931,"context_line":"        session \u003d self._get_session(session)"},{"line_number":932,"context_line":"        version \u003d self._get_microversion_for(session, \u0027commit\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"b0568330_07ec3c85","line":929,"updated":"2021-04-15 08:09:01.000000000","message":"Please document the return value (use API reference for help)","commit_id":"515df032b2ddba482a9a661614a792fb4f682a1b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"236b9aebb8a9e0fcf6b9204776f274b4bfdf8744","unresolved":true,"context_lines":[{"line_number":940,"context_line":"            headers\u003drequest.headers, microversion\u003dversion,"},{"line_number":941,"context_line":"            retriable_status_codes\u003d_common.RETRIABLE_STATUS_CODES)"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        msg \u003d (\"Failed to set vendor_passthru for node {node}, verb {verb}\""},{"line_number":944,"context_line":"               \" and method {method}\""},{"line_number":945,"context_line":"               .format(node\u003dself.id, verb\u003dverb, method\u003dmethod))"},{"line_number":946,"context_line":"        exceptions.raise_from_response(response, error_message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"251bbf0b_c9a45971","line":943,"updated":"2021-04-15 08:09:01.000000000","message":"s/set/call/","commit_id":"515df032b2ddba482a9a661614a792fb4f682a1b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"236b9aebb8a9e0fcf6b9204776f274b4bfdf8744","unresolved":true,"context_lines":[{"line_number":950,"context_line":"    def list_vendor_passthru(self, session):"},{"line_number":951,"context_line":"        \"\"\"Lists vendor_passthru for a node."},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"        :param session: The session to use for making this request."},{"line_number":954,"context_line":"        \"\"\""},{"line_number":955,"context_line":"        session \u003d self._get_session(session)"},{"line_number":956,"context_line":"        version \u003d self._get_microversion_for(session, \u0027commit\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ccbb61f8_ee3d7e23","line":953,"updated":"2021-04-15 08:09:01.000000000","message":"Please document the return value (use API reference for help)","commit_id":"515df032b2ddba482a9a661614a792fb4f682a1b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b97d964bfe5d68cde9416922ee133e528cbe959e","unresolved":false,"context_lines":[{"line_number":921,"context_line":"        self.traits \u003d traits"},{"line_number":922,"context_line":""},{"line_number":923,"context_line":"    def call_vendor_passthru(self, session, verb, method, body\u003dNone):"},{"line_number":924,"context_line":"        \"\"\"Calls vendor_passthru for a node."},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"        :param session: The session to use for making this request."},{"line_number":927,"context_line":"        :param verb: The HTTP verb, one of GET, SET, POST, DELETE."}],"source_content_type":"text/x-python","patch_set":9,"id":"1d725801_d4203efb","line":924,"updated":"2021-04-20 11:28:38.000000000","message":"\"Call a vendor passthru method.\"","commit_id":"4f8394b705f99df00414a249f820c701a36d00fb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b97d964bfe5d68cde9416922ee133e528cbe959e","unresolved":false,"context_lines":[{"line_number":949,"context_line":"        return response"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"    def list_vendor_passthru(self, session):"},{"line_number":952,"context_line":"        \"\"\"Lists vendor_passthru for a node."},{"line_number":953,"context_line":""},{"line_number":954,"context_line":"        :param session: The session to use for making this request."},{"line_number":955,"context_line":"        :returns: The HTTP response."}],"source_content_type":"text/x-python","patch_set":9,"id":"57f43bad_e8b33798","line":952,"updated":"2021-04-20 11:28:38.000000000","message":"\"List vendor passthru methods.\"","commit_id":"4f8394b705f99df00414a249f820c701a36d00fb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e8089df9126a4707ba694c5d15ddcaa7fc0e08ed","unresolved":false,"context_lines":[{"line_number":955,"context_line":"        :returns: The HTTP response."},{"line_number":956,"context_line":"        \"\"\""},{"line_number":957,"context_line":"        session \u003d self._get_session(session)"},{"line_number":958,"context_line":"        version \u003d self._get_microversion_for(session, \u0027commit\u0027)"},{"line_number":959,"context_line":"        request \u003d self._prepare_request(requires_id\u003dTrue)"},{"line_number":960,"context_line":"        request.url \u003d utils.urljoin(request.url, \u0027vendor_passthru/methods\u0027)"},{"line_number":961,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"154dea51_c8af9828","line":958,"updated":"2021-04-20 11:27:09.000000000","message":"s/commit/fetch/","commit_id":"4f8394b705f99df00414a249f820c701a36d00fb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b97d964bfe5d68cde9416922ee133e528cbe959e","unresolved":false,"context_lines":[{"line_number":967,"context_line":"               .format(node\u003dself.id))"},{"line_number":968,"context_line":"        exceptions.raise_from_response(response, error_message\u003dmsg)"},{"line_number":969,"context_line":""},{"line_number":970,"context_line":"        return response"},{"line_number":971,"context_line":""},{"line_number":972,"context_line":"    def patch(self, session, patch\u003dNone, prepend_key\u003dTrue, has_body\u003dTrue,"},{"line_number":973,"context_line":"              retry_on_conflict\u003dNone, base_path\u003dNone, reset_interfaces\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"d06fac9d_d4f98df9","line":970,"updated":"2021-04-20 11:28:38.000000000","message":"should be response.json()","commit_id":"4f8394b705f99df00414a249f820c701a36d00fb"}],"openstack/tests/unit/baremetal/v1/test_node.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"5f9af987969cd45169c7deba71ca4d9c6d3eef84","unresolved":true,"context_lines":[{"line_number":853,"context_line":"                                 default_microversion\u003d\u00271.37\u0027)"},{"line_number":854,"context_line":"        self.session.log \u003d mock.Mock()"},{"line_number":855,"context_line":""},{"line_number":856,"context_line":"    def test_set_passthru(self):"},{"line_number":857,"context_line":"        self.node.set_traits(self.session)"},{"line_number":858,"context_line":"        self.session.put.assert_called_once_with("},{"line_number":859,"context_line":"            \u0027nodes/%s/vendor_passthru\u0027 % self.node.id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"c11bf942_5974bb4d","line":856,"updated":"2021-04-11 22:37:10.000000000","message":"should we test the other verbs?","commit_id":"624303de7b5cf70ae94edfeda98a2be9be1ef25f"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"79afbad0e9d20bba0507a8f1c46670df71523a02","unresolved":true,"context_lines":[{"line_number":853,"context_line":"                                 default_microversion\u003d\u00271.37\u0027)"},{"line_number":854,"context_line":"        self.session.log \u003d mock.Mock()"},{"line_number":855,"context_line":""},{"line_number":856,"context_line":"    def test_set_passthru(self):"},{"line_number":857,"context_line":"        self.node.set_traits(self.session)"},{"line_number":858,"context_line":"        self.session.put.assert_called_once_with("},{"line_number":859,"context_line":"            \u0027nodes/%s/vendor_passthru\u0027 % self.node.id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"2d2e7d88_81f34859","line":856,"in_reply_to":"68daf044_0b5aedd8","updated":"2021-04-11 23:34:45.000000000","message":"In Ironic, those are driver specific. I\u0027d use a completely dummy example, e.g. \"test_method\" or similar.","commit_id":"624303de7b5cf70ae94edfeda98a2be9be1ef25f"},{"author":{"_account_id":33321,"name":"Kajal Sah","email":"kajalksah07@gmail.com","username":"kajalsah"},"change_message_id":"944552dab6b5bcc20faf77c7c050d4453603db30","unresolved":true,"context_lines":[{"line_number":853,"context_line":"                                 default_microversion\u003d\u00271.37\u0027)"},{"line_number":854,"context_line":"        self.session.log \u003d mock.Mock()"},{"line_number":855,"context_line":""},{"line_number":856,"context_line":"    def test_set_passthru(self):"},{"line_number":857,"context_line":"        self.node.set_traits(self.session)"},{"line_number":858,"context_line":"        self.session.put.assert_called_once_with("},{"line_number":859,"context_line":"            \u0027nodes/%s/vendor_passthru\u0027 % self.node.id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"68daf044_0b5aedd8","line":856,"in_reply_to":"c11bf942_5974bb4d","updated":"2021-04-11 22:44:29.000000000","message":"Yes. I was trying to add for other verbs as well. However, I was in doubt about what should I set in the \u0027method\u0027 argument of the \u0027call_vendor_passthru\u0027 function added in this patch?","commit_id":"624303de7b5cf70ae94edfeda98a2be9be1ef25f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"236b9aebb8a9e0fcf6b9204776f274b4bfdf8744","unresolved":true,"context_lines":[{"line_number":852,"context_line":"        self.session \u003d node.Mock(spec\u003dadapter.Adapter,"},{"line_number":853,"context_line":"                                 default_microversion\u003d\u00271.37\u0027)"},{"line_number":854,"context_line":"        self.session.log \u003d mock.Mock()"},{"line_number":855,"context_line":""},{"line_number":856,"context_line":"    def test_get_passthru(self):"},{"line_number":857,"context_line":"        self.node.call_vendor_passthru(self.session, \"GET\", \"test_method\")"},{"line_number":858,"context_line":"        self.session.get.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":8,"id":"1653688d_d37fbc01","line":855,"updated":"2021-04-15 08:09:01.000000000","message":"Could you please add tests for listing as well?","commit_id":"515df032b2ddba482a9a661614a792fb4f682a1b"}]}
