)]}'
{"releasenotes/notes/virtual-media-fallback-15a559414a65c014.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"78ebaa0cfec26babd9a14d54de8113a4358be62a","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add a fallback for inserting and ejecting virtual media"},{"line_number":5,"context_line":"    using the PATCH HTTP request instead of the explicit action URIs."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"bbc09f7e_d88f2460","line":2,"updated":"2021-04-26 09:25:01.000000000","message":"This is actually a bug fix that we\u0027ll want to backport, so it should go to \"Fixes\" section.","commit_id":"eb67d47b7448f773a965d922c299a31db2ba330e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"78ebaa0cfec26babd9a14d54de8113a4358be62a","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add a fallback for inserting and ejecting virtual media"},{"line_number":5,"context_line":"    using the PATCH HTTP request instead of the explicit action URIs."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"c3216ddb_16e2d937","line":4,"updated":"2021-04-26 09:25:01.000000000","message":"nit: s/Add/Adds/ (ironic convention)","commit_id":"eb67d47b7448f773a965d922c299a31db2ba330e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"78ebaa0cfec26babd9a14d54de8113a4358be62a","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add a fallback for inserting and ejecting virtual media"},{"line_number":5,"context_line":"    using the PATCH HTTP request instead of the explicit action URIs."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"bbd49289_8e72789b","line":5,"updated":"2021-04-26 09:25:01.000000000","message":"Maybe mention the hardware (vendor/model/models) where this is required?","commit_id":"eb67d47b7448f773a965d922c299a31db2ba330e"}],"sushy/resources/manager/virtual_media.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"60c7cfaee829881b6e21b8a04ff099212cff8c3f","unresolved":true,"context_lines":[{"line_number":78,"context_line":"    def _get_headers(self):"},{"line_number":79,"context_line":"        return self._reader.get_data()._headers"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _allow_patch(self):"},{"line_number":82,"context_line":"        allow_header \u003d self._get_headers().get(\u0027Allow\u0027, \u0027\u0027)"},{"line_number":83,"context_line":"        http_methods \u003d set([h.strip() for h in allow_header.split(\u0027,\u0027)])"},{"line_number":84,"context_line":"        return \"PATCH\" in http_methods"}],"source_content_type":"text/x-python","patch_set":1,"id":"8a2955cd_49685aab","line":81,"updated":"2021-04-26 07:41:09.000000000","message":"I think these three methods should be moved to ResourceBase","commit_id":"20c13c945fa675f30e7d226954dda39fea64a303"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"60c7cfaee829881b6e21b8a04ff099212cff8c3f","unresolved":true,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _allow_patch(self):"},{"line_number":82,"context_line":"        allow_header \u003d self._get_headers().get(\u0027Allow\u0027, \u0027\u0027)"},{"line_number":83,"context_line":"        http_methods \u003d set([h.strip() for h in allow_header.split(\u0027,\u0027)])"},{"line_number":84,"context_line":"        return \"PATCH\" in http_methods"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def _get_insert_media_uri(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"abd3daae_e116066b","line":83,"updated":"2021-04-26 07:41:09.000000000","message":"maybe even h.strip().upper() in case something returns it in lower case?","commit_id":"20c13c945fa675f30e7d226954dda39fea64a303"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"60c7cfaee829881b6e21b8a04ff099212cff8c3f","unresolved":true,"context_lines":[{"line_number":118,"context_line":"        target_uri \u003d self._get_insert_media_uri()"},{"line_number":119,"context_line":"        payload \u003d {\"Image\": image, \"Inserted\": inserted,"},{"line_number":120,"context_line":"                   \"WriteProtected\": write_protected}"},{"line_number":121,"context_line":"        if target_uri \u003d\u003d self.path:"},{"line_number":122,"context_line":"            headers \u003d None"},{"line_number":123,"context_line":"            etag \u003d self._get_etag()"},{"line_number":124,"context_line":"            if etag is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"40ac8ccc_2b6ac62f","line":121,"updated":"2021-04-26 07:41:09.000000000","message":"I\u0027d rather have get_***_uri return a boolean flag to indicate that PATCH should be used.\n\n target_uri, use_patch \u003d self._get_insert_media_uri()","commit_id":"20c13c945fa675f30e7d226954dda39fea64a303"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"60c7cfaee829881b6e21b8a04ff099212cff8c3f","unresolved":true,"context_lines":[{"line_number":122,"context_line":"            headers \u003d None"},{"line_number":123,"context_line":"            etag \u003d self._get_etag()"},{"line_number":124,"context_line":"            if etag is not None:"},{"line_number":125,"context_line":"                headers \u003d {\"If-Match\": etag}"},{"line_number":126,"context_line":"            self._conn.patch(target_uri, data\u003dpayload, headers\u003dheaders)"},{"line_number":127,"context_line":"        else:"},{"line_number":128,"context_line":"            self._conn.post(target_uri, data\u003dpayload)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7dac772c_44d8f5ce","line":125,"updated":"2021-04-26 07:41:09.000000000","message":"nit: It\u0027s great that we use e-tags, ideally we need to handle the situation where they don\u0027t match?","commit_id":"20c13c945fa675f30e7d226954dda39fea64a303"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"60c7cfaee829881b6e21b8a04ff099212cff8c3f","unresolved":true,"context_lines":[{"line_number":136,"context_line":"        \"\"\""},{"line_number":137,"context_line":"        try:"},{"line_number":138,"context_line":"            target_uri \u003d self._get_eject_media_uri()"},{"line_number":139,"context_line":"            if target_uri \u003d\u003d self.path:"},{"line_number":140,"context_line":"                payload \u003d {"},{"line_number":141,"context_line":"                    \"Image\": None,"},{"line_number":142,"context_line":"                    \"Inserted\": False"}],"source_content_type":"text/x-python","patch_set":1,"id":"075f8e90_3bc57993","line":139,"updated":"2021-04-26 07:41:09.000000000","message":"Same here","commit_id":"20c13c945fa675f30e7d226954dda39fea64a303"}]}
